Agile development incorporates iteration and continuous feedback to successively refine and deliver a software system. This requires continuous planning, testing and integration to quickly, effectively, and collaboratively deliver the final product. Waterfall and traditional development models have clearly defined phases for planning, design, implementation, testing and deployment. Development and testing strategies in the Agile framework depend on project needs and the project team.
"Give me six hours to chop down a tree, and I will spend the first four sharpening the axe."
- Abraham Lincoln
Agile Software Development
The Agile method was developed in response to the rigid nature of Waterfall development resulting in end products that do not match up with the needs of the client. Implementing an adaptive development strategies improves the quality of the software while reducing the cost of continuously testing the software through successive iterations. With focus on constant collaboration, short development, testing phases called sprints, Agile delivers quality products quickly and with reduced financial impact.
Agile Software Testing Approach
Testing within Agile development requires innovative thinking and the right mix of people. Deploy a quality assurance (QA) team to join with the business owners, a team of people who represent the clients during the Agile process, focusing on user needs and end results. The business case and requirements delivered through sprints should be determined by the business owners and QA team before starting the first sprint. Each sprint has a list of requirements for the product that should be fulfilled during that particular phase. The Agile process does not result in a finished product at end of each sprint, but instead a product that can be built upon and improved over multiple sprints.
A Framework for Integrated Tests (FIT) Table should be used to keep teams informed on progress and expectations of the QA and development. For example, an entry in the FIT table might look like: The QA team will be responsible for generating the test fixture, documenting the process and deploying it. In parallel, the development team will write the unit test for the production code and deploy the application. To hasten the development and testing process, the product of the sprint was tested by both QA and the business owners simultaneously. Once all the requirements are satisfied, the feature is accepted and released for that sprint, otherwise the identified issues are listed and documented in the FIT Table.
In the next sprint, the development team fixes issues reported by QA and releases the software. The issues are automatically verified by the FIT table generated in the previous sprint. In order to ensure that the same issue will not repeat again, the development team adopts a strategy to develop a unit test for the issue and fix the production code. In this way the development team verifies their results in a continuous integration environment and protected leaking of that issue to QA and business owners. The end result is less redundant testing for the QA and business owners, while still creating a quality finished product. All thanks to Agile methodologies and a lot of hard work.