In the recent past, software companies have shown their preference to release products/ applications faster but at the same time hoping that quality is not compromised. To ensure rapidity and accuracy, i.e. zero production bugs/ failures, the testing methodology which is often adopted is to focus on newly added features with minimal attention being paid to regression testing as it cannot be accommodated within the limited time available.
However, based on my experience, I recommend Test Automation as the right choice to overcome the above challenge. Test Automation is best suited for long term projects as automation requires time for setting up and to maximize benefits. Test Automation needs dedicated effort, time, support and constant monitoring to be successful. Here in this blog, I will discuss the steps to be followed for test automation.
Decision of when to start with Automation
For test automation to work correctly, the application has to be functionally stable. If we perform automation on an application which is work-in-progress, then automation tests can fail. Automation should therefore be launched only when manual testing cycle has been completed. Tests developed on a functionally stable application helps to find regression failures/ bugs easily.
Choose the right resources to perform test automation
Test automation is equivalent to software development, hence the right resources need to be chosen. Engineers with manual testing skills should ideally not be chosen for automation as they may not have the requisite skills. A sample list of required skillsets are as follows:
- Automation Architect – Builds frameworks, chooses tool and sets scripting standards.
- Automation Engineer – Creates test scripts.
If we are able to find the right people for an automation architect’s role then most of the problems related to introducing automation in the project will be resolved.
Select the right tool
Tool selection is an important criteria for test automation and there are various open-source and commercial tools available in the market. Some important criteria to be considered when choosing tools are:
- Operating systems, application types to be supported
- Objects recognition capability and recovery mechanisms
- Reports provided
- Support for third party controls and plug-ins
- Integration support for other test management tools
- Customer service support
Before confirming the tool, perform a POC on AUT to ensure that the tool is able to work with the application.
Some popular tools of my choice include Selenium Web Driver, SilkTest, Test Complete, and Telerik Test Studio.
Build the Test Automation Framework
Test automation framework plays a vital role in test automation and is created by the automation architect. The automation framework is the deciding factor behind the success/ failure of an automation project. At the beginning of the automation project build a framework that provides minimum required capabilities to execute and provide the test results. Going forward the framework can be enhanced to include additional capabilities. Script standards have to be established and followed to be consistent.
Following are the desired capabilities to have in the framework:
- Ability to configure the test configuration
- Platform to create test scripts with externalized test data
- Ability to configure the test cases that needs to be executed
- Ability to rerun failed test cases
- Ability to get screenshot/ log trace on failure
- Report that indicates the pass/ fail count
I strongly believe that it is always better to build the hybrid framework with the above mentioned capabilities
Choose and build proper tests
Choosing tests for automation is very important to derive benefits from test automation. We need to be selective in choosing the tests. Following are the criteria that can be used to choose the tests for automation:
- Business critical tests
- Integration tests where application integration can fail easily
- Repetitive tests which are error prone
- Tests that needs to be tested with multiple sets of data
- Tests that needs to be executed on multiple hardware and software combinations
Have continuous integration for feedback
For test automation to be effective the tests scripts needs to be executed constantly and the failures needs to be fixed. The automated tests should be configured and executed in the continuous integration system and deliver results. The failures needs to be analyzed to find whether it is the application bug or the script issue and should be fixed accordingly.
Jenkins is the popular open source continuous tools that can be used for this purpose.