The assumption that is usually invalid in the traditional waterfall process is that the requirements will not change during the lifecycle of the project. In reality, requirements change a lot in most of the projects.
The classical waterfall model has a fundamental flaw. A mistake in the requirement phase cannot be detected in a waterfall process until near the end, when the customer gets to see the finished product. This leads to a huge cost in correcting the mistake. To reduce impact of such changes, incremental or iterative development models are becoming popular. Customers are not ready to wait till the complete development is over. To keep the short releases of 2-3 weeks span and delivering the product in good shape is a very big challenge, especially when the business gets complex. There is not much time that can be devoted to testing after the construction is complete. The testing needs to be started as early as possible. For this the testing strategy needs to be robust and effective enough to ensure low
defect density and reduction in time and efforts spent on testing and re-testing.
Various methods could be used to achieve the objectives of such a testing strategy. Some of them are as follows:
- Use of test first style programming
- Involvement of developer in creation /extension of unit test cases
- Use of automated tools
- Continuous integration and build
- Short release cycles
Developing and performing acceptance tests iteratively complements and strengthens the development effort, helping to deliver improved quality. This approach provides improved project control. With agile testing strategy, progress is not just seen at regularly scheduled update meetings. It's seen every time a team member checks in code. Permanent control and testing provides constant visibility into project status, minimizing risk and enabling quality assurance throughout. Speed is the second benefit, as iterative development and delivery enables companies to prioritize critical functions and have them delivered first. Finally, improved productivity of the development team virtually eliminates over-scoping and subsequent rework. This leads to a substantial reduction in project costs.