Software Test Automation is a huge buzz today in the software testing industry. And it is a buzz not for the wrong reasons. In the world of Agile and continuous development, it brings in a lot more predictability and reliability to the quality effort making continuous testing feasible even when the tester in not around. Test automation is not a new phenomenon – it has long existed in the world of software testing, but what is new is the increased drive towards reaching a close to 100% test coverage through automation, everyone on the team becoming comfortable with executing and developing test automation scripts as well as extending test automation to non-functional areas too such as performance, security, accessibility, linguistic, usability testing etc. So, in today’s age what are some of the core guidelines for software test automation, from a return on investment that is made? Here are top six guidelines for effective software test automation in the Agile world – these are not listed in any order of priority, nor do they form an exhaustive set – nevertheless this is an important set to enable a software test automation effort in the right way:
- In Sprint Automation with a focus on BDD / TDD – gradually, an n-1 Sprint automation effort is becoming a thing of the past. Teams will need to move into current / in Sprint automation to be able to get the maximum benefit in an ongoing Sprint. This also creates more time for the team in the current Sprint to take on important non-automation tasks such as exploratory testing, user driven testing etc. Bringing in a BDD/TDD driven automation makes in sprint automation more feasible
- Incrementally Build Your Automation Suite and Ensure they get used – although we now strive for 100% automation, automation is still an expensive effort. It is important to look at building a robust suite which is low on maintenance. All these take time at least initially till the team gets it right. It is ok to take a slightly slow route initially to get the process in order, including the regular usage, ability to catch genuine issues and bring down the overall cost of quality
- Focus on ROI around enhanced Usage – Compatibility, Regression – in continuation to the earlier point, it is important for teams to ensure the built automation gets used regularly and is leverage-able across configurations, including mobile, for areas such as regression etc. This is even more important in short agile cycles where the product churn may be high and often times an expensive piece of automation may not be used at all. Periodic monitoring around usage is thus certainly important
- Focus on integration with tools to bring in more test coverage across non-functional test areas – when you look at how to make automation more scalable across test areas, this is one important step. We have for instance integrated tools for accessibility and security with our functional Selenium test automation scripts, to further make them more usable and effective in overall product quality
- Decouple the automation framework and scripting task to make automation more acceptable and usable by all test engineers – as automation becomes a task for the masses, this is important to ensure automation acceptance across testers. De-coupling makes automation more understandable and less intimidating for testers who may not be proficient with programming / scripting
- Ensure automating the automation process including test data generation, testing the test automation suite to the required levels, results generation, failure alerts so as to make the process faster and more efficient, allowing the automation engineer to focus on designing tests that look at the core logic of the workflow/scenario.