Testing in an Agile Environment
The traditional software development life-cycle model is undergoing a rapid change, primarily because businesses need to deliver quality application in shorter release cycles and at a reduced cost. The role of a tester is thereby no longer what it used to be in a waterfall model.
Take the simple example of large requirement documents being replaced by small user story cards in agile. In an agile testing process, it's imperative for testers to have collaborative discussions across groups to get more insights into features. Or for instance, if Acceptance Test Driven Development (ATDD) is being followed as a part of an agile process, tests would be written by tester, developer, and the customer together. Additionally, the division of roles between a developer and tester also continues to blur. Automation and continuous integration are playing more important role than ever before, primarily because testing in an agile world necessitates short feedback cycles so that teams can address any challenges quickly.
Most importantly, testers are no longer a gate keeper to maintaining quality, but act more of a facilitator to ensure quality is implemented throughout the software development lifecycle. The whole team is responsible for quality rather than just the testing team or a particular role, as was evident in waterfall model.
Organizations have realized that defects encountered downstream are expensive and building quality within the code is important. Hence, in an agile world, even before the code has been written, testing is introduced in the process. Techniques such as Test Driven Development (TDD) focus on developer writing a test case even before functional code has been written.
What it takes to be successful?
To be successful in this agile environment, testers need to have different skills than they did in a waterfall model. For example, no longer can testers be narrowly focused in one area. Testers in an agile world are more of jack-of-all-trades and master of a few. Secondly, automation plays a key role in agile testing as it helps teams get rapid feedback on quality in real-time. Testers therefore need to be more open to implementing automation frameworks.
Active stakeholder participation is big in agile and testing can no longer be done in a silo. Testers many times end up participating in different phases of projects and work with developers, or even customers. And since agile projects involve short spirits that typically last couple of weeks, getting work done in these short spirits necessitates testers have the required technical skills.
Most importantly, given the limited testing time available in agile environment, testers must know what would be the most efficient way to test a particular scenario. An understanding of when to use exploratory vs manual vs scripting is crucial.
A key challenge for manual testers to be successful in an agile environment could be their inability to build automated scripts. Automated tools that enable testers to crate robust and repeatable automated tests without actually knowing scripting can be of great help here. Additionally, because of short sprints in agile, automated tools that help testers test application across multiple platforms using a single script can be really handy.
Support for out of the box plugins for continuous integration server, such as Jenkins, ensures automated tests created using the tool can be run as a part of automated builds and problems caused by recent code modifications are identified and fixed as soon as possible. Lastly, automation tools that allow functional testers to go beyond the GUI layer and drive automated tests at the underlying API layer can help reduce debugging time, primarily by enabling testers provide developers information regarding whether an issue lies at the GUI or API layer.
Agile environment necessitates a shift in testers approach given the iterative application release. While automation plays an important role in shortening feedback loops, testers need to be more forthcoming to implement and learn new practices such as TDD.
Is Acceptance Test Driven Development (ATDD) Worth the Effort?
What Is Agile Testing?
How to Test Apps Using GUI and APIs