Automation can be important to agile software testing because the development process is much more iterative and requires frequent testing. A waterfall development cycle only requires major testing at the end of the development process; whereas, agile development requires testing throughout.
What’s the difference between waterfall and agile software development?
Below is a typical example of the waterfall methodology. As illustrated, the process leads developers through a series of sequential steps with major testing done towards the end.
Waterfall Software Development Cycle
The agile methodology is much different than the waterfall methodology. Agile development requires very active project management. The process begins with planning, but then instead of building an entire application at once, agile development builds each functional component separately in what are called Sprints. The illustration below shows how the process constantly involves end-users, business analysts, and end users.
Agile Software Development
Agile software development is a flexible process that rapidly builds each piece of a software project, adding functionality every few weeks until the entire project is complete. This kind of rapid development has the flexibility to meet the demands of evolving business requirements.
Agile development teams are often broken into small groups that can work on individual pieces of the overall project. Agile development requires organized communication between business analysts, programmers, and end users in order to ensure all business requirements are being met.
For example, imagine two companies building an email program. Company A uses the waterfall methodology, so they create a requirements document of what their email client will need to do. They list everything from sending and receiving mail, to managing an address book, to scheduling appointments. Then they begin development and build the entire email program over a few months. Once the entire program is built, they begin testing. Often using a combination of manual and automated testing, they go through the program with a fine toothed comb and identify issues. Then they go back to the program and remedy all the bugs before releasing it to end users.
Company B uses an agile development process, so they get a team started right away on basic functionality. In the first week they build the framework and test the user interface. The following week they create the ability to receive emails. The week after that they build the ability to send emails. This continues week after week. They build a small piece of the program, test it, and release it to end users. Their team has already released the program to the client and is adding functionality every week. This gives Company B the ability to remain flexible while responding quickly to user feedback.
Where does testing come in?
In the waterfall development methodology, testing is at the end. Once the project is complete, the entire program is tested using a combination of automated and manual testing. A large list of test cases is worked through to ensure proper functionality of the entire program.
In the agile development methodology, testing is conducted throughout the process, often on a daily basis. That is why agile software development requires increased automated testing because the testing is much more frequent. It would be nearly impossible, or at least in-efficient, to manually test an entire program on a daily or weekly basis throughout the development process. In that way, automated testing makes it possible because it can run through a large series of test cases rapidly, efficiently, and most importantly, effectively.