The introduction of agile methodologies has allowed software developers to ensure quality while decreasing production times and streamlining the development process. Within this methodology, testing has taken center stage to align development with customer needs.
The go-to-market time for software products is constantly shortened, putting pressure on development teams to deliver quality at speed – posing a risk of rushing software production.
The Manifesto for Agile Software Development outlines a flexible, customer-centric approach to software development as a proposed methodology for working under these challenging circumstances.
At its core is a reliance on cross-functional teams developing in short iterations, where the focus is on creating code rather than documentation, and accepting change over following a plan.
To achieve success with the agile approach, supporting functions, like testing, must also employ this methodology.
Automation, adaptability, and cross-team collaboration are key components for a successful adoption of agile testing.
With the traditional waterfall approach, the testing phase is a standalone process usually executed at the end of the Software Development Life Cycle (SDLC). This comes with the risk of having to make corrections last minute – or not having time to make them at all.
The agile methodology is an attempt to make this process more flexible and effective. With this approach, the tester is suddenly at the core of the SDLC, continuously executing tests and getting feedback from customers, developers, and other stakeholders.
With testing occurring alongside development – so-called continuous integration – providing a source of constant feedback, it’s possible to debug earlier and improve the quality of the deployed product.
This way, specifying requirements and testing against these requirements occur simultaneously in each iteration.
During the initial sprint planning meetings, it is necessary to specify what needs to be developed and completed during the iterations, and to define the acceptance criteria.
It is often expected that tests are built before coding has even begun. By automating tests, iterations gradually become more and more efficient and will support the aim of shorter development cycles.
No methodology is perfect, and the agile approach comes with challenges on its own. There are however a few things a team can do to ensure success with the agile methodology.
This improves alignment, provides transparency regarding priorities, and ensures a common understanding of goals and deadlines. Scrum, is a commonly used framework for ensuring this kind of teamwork.
The first objective in terms of testing should be to create high level test scenarios for maximum impact on quality. This should be a joint effort between product owners, business development, programmers, and testers.
Agile is a mentality of anticipating and accepting change. This also applies to testing, and it is important that team members are open to this way of working.
End-to-end test automation from development to deployment is the key driver of agile testing. In words of agile tester and coach Lisa Crispin:
...Testers collaborate with programmers, the customer team, and other team specialists - and not just for testing tasks, but other tasks related to testing, such as building infrastructure and designing for testability.
With the agile methodology, testers can adapt to changing end-user expectations. Software can be developed and tested simultaneously, improving product quality and optimizing development time.
If you want to learn more about agile testing, download our whitepaper on Agile Testing.