## 4.13 Testing Agile testing activities should be iterative and incremental. Applying the strategy of ‘test early and test often’ allows risks to be identified and addressed early in the project’s life cycle. It is recommended that the testing activities occur in each iteration, beginning with the earliest builds of the system. Depending on the frequency of new builds, one iteration can have several test cycles. Testing activities and techniques focus on the question: ‘What does the solution need to accomplish before we consider a requirement implemented? User testing and validation of rapid prototypes (even before code) further develop the requirements with specific conditions of satisfaction that the solution must meet. This includes the acceptance criteria that define the boundaries of a work item and are used to confirm when it’s completed. PM2-Agile recommends two testing practices: Test Management and Concurrent Testing. Test Management is an important concern for any sizeable software engineering effort. The Test Management practice provides a good starting point for practitioners relatively new to this area, but it also offers a structured reference model for the more seasoned ones. The tools used in planning, designing, implementing, executing, evaluating, and managing the test tasks or work products are an important aspect and need to align with the current organisation's practices. The **Concurrent Testing** practice adopts testing concurrent with development throughout each iteration. This prevents teams from compressing testing into a separate activity at the end of iterations. Concurrent testing reinforces the concept of feature teams working in parallel. Concurrent testing requires a high degree of integration and high-bandwidth communication between developers and testers. When addressing delivered increments testing, two points should be examined. - Consider testing-related activities in parallel with requirements gathering and refinement so that the Agile Project Core Team (A-PCT) and the stakeholders can agree on specific conditions of satisfaction for each requirement. Ensuring acceptance criteria are defined for each Feature and Story allows the team to check if what is delivered meets information system users’ expectations. - Run tests as frequently as possible. Ideally, all tests should be run against each build deployed to the mainline. If this is impractical, regression tests should be run for existing functionality while focusing the test cycle on work items completed in the new build. Even test scripts that are expected to fail provide valuable feedback. However, once a test script passes, it should not fail against subsequent builds of the solution.