The main objective in Agile is to generate working software at the end of iteration and receive feedback from the customer, to provide early business value to the stakeholders. It all starts with release planning at the start of a release followed by construction iterations. At the beginning of iteration there is iteration planning in which the user stories of high priority are pulled into the iteration backlog to define the iteration scope. Design, development and testing happen iteratively throughout the sprint and not at the end of the iteration. All the developers and testers will work together as a team to reach the iteration goal.
Examples of iteration goals in an eCommerce application:
- Implement payment gateway functionality to accept Master card and Visa card and reject other cards.
- Develop the order checkout process: pay for an order, cancel shipment, pick shipping, gift wrapping, etc
Everyone in the team including developers, testers and business stakeholders have a role in all activities during the iteration. Developers and testers may pair up together to write unit tests. They can also pair up for doing functional testing, Business stakeholders may do User Acceptance Testing (UAT) at the end of every iteration. UAT at the end of the release is bad, it may be too late by then to correct anything. Business Analysts in the team may review test cases and provide feedback to the team, if test cases seem to be missing.
It is good idea to have stabilization or hardening iteration at the end of every release to reduce the technical debt significantly to complete the release checks like integration testing, release notes, updating wiki etc. It good idea to fix all the defects in the same iteration, without discriminating between critical, major or minor defects. Any defects that spill over out the iteration must be prioritized by Product Owner into the product backlog for the team to pick them up in the coming iteration. This may increase the load of developers and testers in some iteration. However fix the defects as they surface is always a preferred method to improve the quality of the product. All the software developed during several consecutive iterations are integrated into release, and deployed to the production.
The test strategy during the release planning may also involve discussions about the risks during the testing. A mitigation plan also may be put in place, if the risks occur in future. Each iteration may have test strategy to deal with the specific quality risks that may come during the iteration. The risks may significantly influence the testing effort required for iteration (see Assess Quality Risks in Agile methodology). Agile practices like XP recommends pair programming where testers can pair up each other to test features with high risk. Pairing may also be implemented by using various tools like screen sharing when the team is distributed. The entire Agile team is responsible for the collective ownership of quality of the product.
Test automation is usually a common best practice in Agile teams. The developers and testers collaborate to create test plan and automation scripting. Testing can be executed locally or remotely. Remote automation test results are centrally published. The higher percentage of test results yields better quality by reducing the escaped defects to production. Developers and testers work together to cover the entire gamete of testing in Agile teams like unit testing, exploratory testing, creating automation scripts, system testing and integration testing. Hence, agile teams prefer testers who is a team player with strong experience in automation testing.
Since agile teams need to adopt change in due course of product development, they prefer light weight documentation contrary to other traditional methods. Use of automation test beds, will make the life easier for testers as they help in regression testing. The change the teams can be absorbed must be at a sustainable pace and should not pose a risk to the team’s focus on core product development. The product/release backlog must be adjusted to accommodate changes and delete the redundant stories.