Globally, businesses are embracing Agile tenets in all aspects of software development, including testing, in order to accelerate compliance with quality assurance needs and user requirements. Priya Thakur navigates the Agile Testing landscape and tells us why it is the way forward.
As more and more organizations move towards Agile software development, Agile Testing is becoming very popular. In order to understand Agile Testing, it’s important to first understand the Agile Software Development Life Cycle (SDLC) and how Agile Testing fits within it.
As many people may already be familiar, an Agile team works on the following manifestos:
- Individuals and interactions – Communication is the key for discussions and to solve queries within the Agile teams.
- Working software – The focus is on developing working software rather than detailed documentation.
- Customer collaboration – Agile encourages direct and regular collaboration with customers to understand their requirements.
- Responding to change – The Agile team must be flexible in embracing untimely changes.
Agile teams are smaller in size (8-10 people) than conventional teams. The product requirements are broken down into smaller stories. These well-defined stories are picked up as per their priority and given to the Agile team. The Agile team works in coordination to complete these stories within the given iteration. At the end of each iteration, the implemented and tested stories are moved to either User Acceptance Testing or Production in a Release. Thus, the process hugely reduces the product’s time to market. The product evolves and is integrated with every iteration thereafter.
The most popular Agile SDLC methods are SCRUM, Extreme Programming (XP) and Kanban.
Testing done within this context of the Agile SDLC is known as Agile Testing. Following are the roles and activities performed by testers in the Agile team.
- Testers are involved from the beginning, i.e. from grooming to planning sessions of product backlog stories.
- They engage developers to understand the impact of the user story within the system and come up with adequate testing coverage.
- They work closely with developers, business representatives and product stakeholders to ensure that the desired level of quality is attained by the working software. Acceptance criteria must be cleared and agreed upon for each user story.
- Testers should be proactive, solution-oriented, quality-oriented and shouldn’t hesitate to share their opinion.
- Changes are inevitable in an Agile project, and testers must be able to adapt to these changes quickly.
- Testers are involved in the effort estimations for user stories.
- They create test cases (both positive and negative), review test cases, execute the test cases and maintain the test results. Test cases may also cover non-functional testing aspects, e.g. performance, usability etc.
- They plan and organize their own testing work, evaluate and report the test results, assess the product quality (using the defect matrix) and identify any risks upfront.
- Testers give test progress updates in the daily team meetings.
- They identify opportunities for automation testing and plan the automation within the team or setup another team to do so.
- They store testing related documents (e.g., automated test scripts, manual tests, test results) in a common repository.
- Testers identify improvement areas in terms of new technology, tools and techniques used and processes involved in addition to success stories. They also share root cause analyses of defects in retrospective meetings.
Also on ness-ses.com: Using Lean Agile and Customer Feedback to Accelerate Releases
How is Agile Testing Different from Conventional Testing?
The following points make Agile Testing different from the testing done in traditional SDLC methods (e.g., sequential, V-models)
|Attribute||Agile Testing||Conventional Testing|
|Cycle Time||Testing is done during the short cycle of development called iterations.||Testing cycle is longer in duration and could span months. It’s typically done after the development cycle is complete.|
|Early Testing||Testers are involved in release planning and iteration planning, which adds value by identifying testable user stories, outlining the acceptance criteria, conducting estimations, defining test levels to be performed, etc.||Conventional Testing is requirement-specific testing. The requirements are already outlined by the stakeholders. Thus, testers begin with test planning directly, outlining test strategy, coming up with high level test scenarios, writing test cases, etc. They are required to complete testing within a stipulated timeline which sometimes leaves them with less testing time if the development phase extends.|
|Documentation||Since Agile testers work in small iterations, the documented artifacts are kept to a minimum and include only the relevant details that can be readily understood. The artifacts are more concise than verbose. The focus is more on the working product. The documents could be test plans, manual tests, defect reports, automated test scripts, test results log, etc.||Test plans, strategy outlines, and test cases are documented at the detailed level.|
|Collaboration||Agile testers are required to collaborate closely with each other. They come to know the overall system well over time through knowledge sharing, grooming and planning discussions. This leads to effective impact analysis and test case coverage.||Testers may be assigned to testing tasks at the module- or feature-level. They fully concentrate on the given module and may not have insight into other modules and potential interdependencies.|
|Customer Involvement||Because the product is implemented and evolved in each iteration, the product is available to the end-customers in every release (continuous integration). Customers can give early feedback which can be incorporated into upcoming iterations.||The actual product is not visible to end customers until later when the internal testing is done. Thus, product issues related to usability, functionality, etc., are encountered pretty late in the development cycle.|
|Cost||Agile teams are smaller, and activities tend to be more transparent among the group. Testers, developers and business representatives coordinate on a regular basis, thus identifying early defects in requirements, design etc. and thus minimizing the corrective maintenance costs at a later stage.||The team involved is medium to large, and hence transparency is limited. Project artifacts are transferred from one team to another, e.g., design to development to testing. Hence the scope of identifying early defects is minimized. The cost to fix such defects is higher in the later stages.|
Organizations are increasingly aiming to maximize the value derived from Agile Testing by integrating it in the overall Agile environment. At Ness Digital Engineering, we use Adaptive Agile delivery thinking in everything we do within Experience Engineering, Product and Platform Development and Data Analytics. Get in touch with us for more information on our Adaptive Agile approach and how to implement best Agile Testing practices.