As we all know, Agile Development is far different from the traditional development methods majorly because of its flexibility to adapt frequently changing requirements. In Agile, the test subject is continuously refined over the various sprints/iterations, and, therefore, continuous automation has become a necessity. Although continuous test automation is a mammoth task, it is nearly impossible to maintain a decent quality in agile without it.
In a typical agile model, work is divided into sprints/iterations. We take up new tasks in each sprint and deliver a production-ready code by the end of the sprint. In every new sprint, we at least perform two types of testing:
1. Functional Testing- It is performed to test the new functionalities that are added in the current build. It focuses on:
- Mainline Functions: Testing main functionalities.
- Basic Usability: Testing whether a user can use the basic features in a system.
- Error Conditions: Testing whether, at different error conditions, error messages are displayed.
Functional testing of the functionalities newly developed is followed by the regression testing of existing features.
2. Regression Testing- It is performed to make sure whether the previously developed functionalities are working correctly and are not affected by the newly developed features. It is done once all the new functionalities are tested. We perform regression testing in two steps:
- Re-run the tests for the previous build.
- Compare the previous test results with the current ones.
Then why do we need automated tests?
We have to test the new functionalities rigorously for each and every sprint. A sprint is stretched over a week or two which is not sufficient for testing all the minute details manually. Also, in such short span of time, there are chances of skipping few of the test cases leading to a spike in the number of bugs. Moreover, theses test are to be run on various devices and browsers.
It is always better to report the bugs as early as possible so that they are fixed before delivering the code of that sprint. Identification and fixing of defects at later stages increases the cost as well as complexity. To complete the sprint on time, for the ease of bug fixing process and to cover the compatibility test, it is very important to use automated tests.
How do these scripts help in making bug- fixing less complex?
When a tester gets a new functionality to test, he/she should always perform regression testing. It is a must that we run an automated test script on a regular basis to keep a tab on our test results and where exactly is the change in the test. This makes it easier to look for the root-cause of the defects as the developer also knows what changes have been made for that particular sprint.
Although maintaining automation scriptsrequires some effort, it certainly saves the effort of performing manual testing again and again. Another benefit of using automated scripts include easy analysis of result and moreover these scripts provide auto-generated reports which clearly visualize the pass and fail statuses of the test cases.
What should we automate?
Selection of the functionalities that should be automated is somewhat tricky; we cannot automate everything, and nor is it advisable. So, it is always essential to identify what is worth automating and what can be left out?
Following things should be kept in mind while shortlisting the test cases for automation:
- Functionalities which are impossible to test manually.
- Tests that are to be executed on a regular basis.
- Test cases that encounter errors while executing manually.
- Scenarios which require a lot of time for testing
- Critical functionalities.
- Functionalities that are to be tested on several machines with different configurations.
- Test cases that need a proper report-analysis.
What are the benefits of automation testing?
Following is the list of various benefits of automation testing where manual testing becomes difficult to carry out:
- Automation testing takes less time as compared to the manual testing which helps in meeting the goals of a sprint.
- Automation makes regression testing easier which helps us to focus more on the newly added functionalities.
- Automation testing helps in exhaustive testing – we can test it on different systems with different configurations with minimal effort.
- Automated scripts are useful because it prepares a report which is easy to analyze.
We can, therefore, infer that for agile development, test automation is a must!