Intelligent Automation Testing
A version of this Blog was first published on the Dataquest
When the entire IT world is pressing upon the need for Automation testing, an unprecedented rush is being seen across organizations for bringing automation testing in practice. Having said this, however, due care needs to be taken while designing automation testing for obtaining its ROI.
Automation testing can provide benefits such as:
- Reduction in Execution Time: Regression testing once automated can be executed by a machine in a way that is time-consuming as compared to Manual Testing.
- Faster Delivery Cycle: Due to expedited execution time, the overall delivery cycle gets reduced. Even for patch releases, the regression execution can become faster, thereby enabling faster delivery cycles.
- Better Quality of Deliveries: With a faster execution cycle and the possibility of multiple executions, defect leakage to production is reduced considerably.
- Cost Reduction: In Product Testing, there are two main tasks, i.e. Test Designing and Test Execution & Reporting. With Automation Testing in place, the Test execution & reporting part is done by the machine and can bring about great saving in time. Over the long term (usually more than one year) this will bring cost benefits to the program.
The benefits of Automation Testing outweigh the initial costs associated with the implementation of automation testing. Hence talking about a long-term period, we must perform due diligence regarding when and where to implement automation testing in the application landscape.
To this end, the following decision-making tools are helpful in deciding, whether to go ahead with automation testing or not.
- Application/Product Roadmap: For adopting automation testing for any application/product, the first requirement is to create a roadmap for the application/product for more than one year.
- Build Frequency: The ROI of automation testing will increase on each execution cycle, so if the build frequency is 8 or more in a year, it is only then that one should plan upon implementing automation testing.
- Application Stability: If the application under testing is not stable, then there is no use for automation testing, as more efforts would be invested in the maintenance of automation scripts as compared to manual testing.
- Agile: With the implementation of Agile, it becomes pertinent to automate the regression within the same sprint in order to achieve the true benefits of agile methodologies.
Historically, emphasis has been placed upon the implementation of automation testing on a UI level. This has its disadvantages since any changes made in the UI level, make the test script unusable and substantial effort is needed to modify the impacted script. If there is some change made in certain web elements (location, name, id, etc.) and several scripts are using it, then all these scripts become candidates for modification. Thereby, demanding a lot of effort on the script maintenance front.
When talking about such scenarios, nothing much can be done as Application UI is bound to change in order to bring in a new feature or redesign, etc.
The automation testing implementation will fail on the ROI front if we only think about it in terms of UI test case automation. To bring real value to automation testing, we must enhance the scope of automation testing as mentioned below:
Fig: Pictorial Representation of Ideal Automation Testing Spread Across System Under Test
- Unit Testing: Code at the unit level if tested, will help find bugs early in the cycle and thereby bringing the “Shift Left” approach and help in reduction. The automation of unit testing is easier, as the code covered per test is small. The number of test cases to be created are very large, as the entire code base is to be tested with automation irrespective of end-to-end scenarios.
- Integration testing: Automation of integration scenario brings benefits of finding issues related with integration of various components/modules. Most of the teething issues can be found and fixed even before UI is developed and saves a great time.
- UI Testing: Automation of UI testing is a must and works as pre-UAT testing to ensure all the requirements are working as agreed with the client. A point worth noting here will be to restrict UI automation to a limited number of test cases ideally covering UAT scenarios so that the maintenance cost of UI Automation can be brought under control.
With the rapid passage of time, we have seen a burgeoning convergence of technology trends as well as developments that have resulted in – escalated amounts of data, speedier processing power and algorithms that are increasingly powerful. All this has led to a massive increase in the sophistication and deployment of technologies. We are now at a tipping point where automation testing can provide real and tangible business benefits, hence, by applying them to your organization, the advantages can be felt across the software development cycle in its entirety and get you better ROI.