Agile testing

Last updated

Agile testing is a software testing practice that follows the principles of agile software development. Agile testing involves all members of a cross-functional agile team, with special expertise contributed by testers, to ensure delivering the business value desired by the customer at frequent intervals, working at a sustainable pace. Specification by example is used to capture examples of desired and undesired behavior and guide coding.

Contents

Overview

Agile development recognizes that testing is not a separate phase, but an integral part of software development, along with coding. Agile teams use a "whole-team" approach to "baking quality in" to the software product. Testers on agile teams lend their expertise in eliciting examples of desired behavior from customers, collaborating with the development team to turn those into executable specifications that guide coding. Testing and coding are done incrementally and interactively, building up each feature until it provides enough value to release to production. Agile testing covers all types of testing. The Agile Testing Quadrants provide a helpful taxonomy to help teams identify and plan the testing needed. The model of the Agile Testing Quadrants was originally described by Brian Marick, [1] and was popularized by Lisa Crispin and Janet Gregory in their book Agile Testing: A Practical Guide for Testers and Agile Teams. [2] [3] It places different test types on two axis: Technology Facing vs Business Facing, and Support Programming vs Critique Product. [1]

Traditional testing methodologies (often employed in the Waterfall model of software development) usually involve a two-team, two-phase process in which the development team builds the product to as near perfection as possible. The software product is delivered late in the software development life cycle at which point the test team strives to find as many bugs/errors as possible. In contrast with these traditional methodologies, Agile testing focuses on repairing faults immediately, rather than waiting for the end of the project. When testing occurs at the tail end of a project, it can sometimes be sacrificed in terms of duration and quality to meet critical schedules and budget restrictions. [4] Costs are expected to go down as the time between development and testing feedback decreases. [4] [5] With shorter feedback loops, bugs fixes and reworks require less time as developers spend much less time reengaging the code's context as they move on to new problems and projects. [4]

In the "Worldwide Software Testing Practices Report 2015 - 2016", [6] ISTQB found that the popularity of Agile methodologies are significantly increasing, which shows the need for Agile testing processes and techniques. They are providing an Agile Tester extension to their certification. [7]

Tools

As companies grow, agile testing teams often rely on software testing tools to solve challenges that can ultimately speed-up the release of feedback making sure. [8] Most teams look for collaboration features, automated or customized reporting and finding ways to avoid repeated efforts. Choosing the right tool will depend on the requirements of each team. Pairing up with other Agile Lifecycle Development Tools, Agile testing tools can deliver effective results by coexisting in integrated environments. Such is the case for Atlassian Marketplace and Microsoft Visual Studio. [9]

Some test management tools support Agile testing by getting teams involved earlier in the SDLC to continuously build test scenarios as stories evolve. [10] Teams often look for a solution that can deliver a combination of automated and manual testing. [11]

Further reading

Related Research Articles

<span class="mw-page-title-main">Kent Beck</span> American software engineer

Kent Beck is an American software engineer and the creator of extreme programming, a software development methodology that eschews rigid formal specification for a collaborative and iterative design process. Beck was one of the 17 original signatories of the Agile Manifesto, the founding document for agile software development. Extreme and Agile methods are closely associated with Test-Driven Development (TDD), of which Beck is perhaps the leading proponent.

<span class="mw-page-title-main">Software testing</span> Checking software against a standard

Software testing is the act of checking whether software satisfies expectations.

A software company is an organisation — owned either by the state or private — established for profit whose primary products are various forms of software, software technology, distribution, and software product development. They make up the software industry.

Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Software development is the process used to create software. Programming and maintaining the source code is the central step of this process, but it also includes conceiving the project, evaluating its feasibility, analyzing the business requirements, software design, testing, to release. Software engineering, in addition to development, also includes project management, employee management, and other overhead functions. Software development may be sequential, in which each step is complete before the next begins, but iterative development methods where multiple steps can be executed at once and earlier steps can be revisited have also been devised to improve flexibility, efficiency, and scheduling.

Agile software development is an umbrella term for approaches to developing software that reflect the values and principles agreed upon by The Agile Alliance, a group of 17 software practitioners in 2001. As documented in their Manifesto for Agile Software Development the practitioners value:

In agile principles, timeboxing allocates a maximum unit of time to an activity, called a timebox, within which a planned activity takes place. It is used by agile principles-based project management approaches and for personal time management.

Lean software development is a translation of lean manufacturing principles and practices to the software development domain. Adapted from the Toyota Production System, it is emerging with the support of a pro-lean subculture within the agile community. Lean offers a solid conceptual framework, values and principles, as well as good practices, derived from experience, that support agile organizations.

<span class="mw-page-title-main">Watir</span>

Watir, is an open-source family of Ruby libraries for automating web browsers. It drives Internet Explorer, Firefox, Chrome, Opera and Safari, and is available as a RubyGems gem. Watir was primarily developed by Bret Pettichord and Paul Rogers.

<span class="mw-page-title-main">Ron Jeffries</span> American computer scientist

Ron Jeffries is one of the three founders of the Extreme Programming (XP) software development methodology circa 1996, along with Kent Beck and Ward Cunningham. He was from 1996, an XP coach on the Chrysler Comprehensive Compensation System project, which was where XP was invented. He is an author of Extreme Programming Installed, the second book published about XP. He has also written Extreme Programming Adventures in C#. He is one of the 17 original signatories of the Agile Manifesto.

There is considerable variety among software testing writers and consultants about what constitutes responsible software testing. Proponents of a context-driven approach consider much of the writing about software testing to be doctrine, while others believe this contradicts the IEEE 829 documentation standard.

In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.

DevOps is a methodology in the software development and IT industry. Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle. DevOps is complementary to agile software development; several DevOps aspects came from the agile way of working.

Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate. Continuous testing was originally proposed as a way of reducing waiting time for feedback to developers by introducing development environment-triggered tests as well as more traditional developer/tester-triggered tests.

Scenario testing is a software testing activity that uses scenarios: hypothetical stories to help the tester work through a complex problem or test system. The ideal scenario test is a credible, complex, compelling or motivating story; the outcome of which is easy to evaluate. These tests are usually different from test cases in that test cases are single steps whereas scenarios cover a number of steps.

Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software with greater speed and frequency. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production. A straightforward and repeatable deployment process is important for continuous delivery.

Specification by example (SBE) is a collaborative approach to defining requirements and business-oriented functional tests for software products based on capturing and illustrating requirements using realistic examples instead of abstract statements. It is applied in the context of agile software development methods, in particular behavior-driven development. This approach is particularly successful for managing requirements and functional tests on large-scale projects of significant domain and organisational complexity.

<span class="mw-page-title-main">Extreme programming</span> Software development methodology

Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

Acceptance test–driven development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as specification by example (SBE), behavior-driven development (BDD), example-driven development (EDD), and support-driven development also called story test–driven development (SDD). All these processes aid developers and testers in understanding the customer's needs prior to implementation and allow customers to be able to converse in their own domain language.

<i>Better Software Magazine</i> Digital magazine

Better Software magazine was a quarterly digital magazine published by TechWell Corporation. It covered topics of interest to software testers, developers, project managers, and business analysts. Better Software was originally published in 1996 as Software QA magazine, focusing primarily on software QA and testing. Software QA was renamed Better Software magazine in 2004.

References

  1. 1 2 "Agile testing directions: tests and examples". 22 Aug 2003. Retrieved 21 Jan 2018.
  2. Crispin, Lisa; Gregory, Janet (2009). Agile Testing: A Practical Guide for Testers and Agile Teams. Addison-Wesley.
  3. Alexander Tarlinder (2017). Developer Testing: Building Quality into Software. Addison-Wesley.
  4. 1 2 3 Mohanty, Hrushikesha; Mohanty, J. R.; Balakrishnan, Arunkumar (2017). Trends in Software Testing | SpringerLink. doi:10.1007/978-981-10-1415-4. ISBN   978-981-10-1414-7.
  5. BUILDING AND TESTING. (2014). BUILDING AND TESTING. In Agile Governance and Audit: An overview for auditors and agile teams (pp. 79–87). IT Governance Publishing. Retrieved from https://www.jstor.org/stable/j.ctt7zsx7z.14 Export Citation
  6. "Worldwide Software Testing Practices Report 2015 - 2016". 2015–2016.
  7. "Agile Tester Extension".
  8. "Agile-Friendly Test Automation Tools/Frameworks - Test Obsessed" . Retrieved 2016-06-29.
  9. "Gartner and Software Advice examine Agile Lifecycle Management Tools" . Retrieved 2016-06-29.
  10. Global, IndraStra. "B&E | How Testing is Challenging in Agile Methodology". IndraStra. ISSN   2381-3652.
  11. "Agile Testing Tools - Testing in Agile, Scrum and XP Projects" . Retrieved 2016-06-29.