Test automation is a buzzword among the software testing professionals. Understanding the need (WHY) for software test automation is a requisite before investing on test automation. We will be discussing, “Why software test automation is required” in this short blog post.
Almost all the software development companies have an independent software testing team. A very few companies have delegated the testing role to software developers. It is impossible to find any organization which continues to be in operation for few years successfully, without a very good software testing process and skillful software testers. Software testing will ensure that most of the bugs are identified before the software is released to the customer. The customer or the end-users will have the desired software, if proper testing approach is followed.
Manual test case execution is extensively time consuming for most of the software projects. Testing all the possible test cases/scenarios are impossible with manual testing as it is very time consuming even with a competent software testing team. Some applications need to be tested across multiple platforms, browsers, devices, with integration software and environments. There are many combinations for testing and hence the testing effort will increase considerably.
When software is modified or the defects are fixed, it needs to be retested to ensure the fixes/changes are done successfully and existing functionality is not broken. Usually when a new fix is done, some existing features tend to be broken. The regression testing effort is usually high even though the fix/change takes just a few minutes to the developer. There are techniques to minimize the manual testing effort by reducing the test coverage. However this will introduce risk to the software as we have not tested all test scenarios.
Frequently software needs to be tested even when no changes are made to the software itself. Here are few scenarios;
- When the software is integrated with a new third party software (e.g. SMS gateway, Payment gateway)
- When new devices, platforms etc. and their versions are to be supported by the existing software
- When data is migrated to a new environment and system is reconfigured in a production environment
The testers would have to repeat the existing test cases (regression test suite) manually if an automated test suite is not available.[INEFFICIENT].
Once the test automation scripts are created, those can be executed over and over again without adding any additional expenses. Test execution can be parallelized (e.g using Selenium grid, TestNG etc) to reduce the test execution time further. [EFFICIENT].
Test data can be taken from external sources (e.g. XL sheet, DB etc.) and ensure test automation suite is immune to the test data combinations. Same test can be run for different test data combinations without any extra coding (data driven testing) which is mostly next to impossible in practical situations with manual testing. Test data can be changed in the data source and test cases can be executed for new scenarios.[FLEXIBLE]
When the test cases are manually executed, there is a possibility of missing or skipping some of them. Automated test scripts will ensure all test cases are executed consistently.[ACCURATE]
Simulating concurrent/simultaneous users accessing a system cannot be achieved by even a large number of software testers. Test automation cannot be replaced with manual testing for performance testing. [IRREPLACEABLE]
Test automation tools used to be very expensive and were not affordable to most of the organizations. Today, there are number of open source [FREE] test automation tools/suites available, which can be integrated with major programming languages, frameworks etc. (e.g. Selenium). [EXTENSIBLE]
There is a large community around these tools and hence test automation engineers can get technical support as required. Various cloud solutions (such as Sauce Labs) provide test environments to execute your test scripts (e.g. Selenium test cases) against per-configured environments (OS, Browsers, devices etc.). Continuous integration software (e.g Jenkin) allows easy integration of your test suite at predefined triggering points (e.g time, when a release is tagged) [ECOSYSTEM]
Developers can run the test suite once a fix is done and ensure existing functionality is not broken. Testers can focus their time on identifying new test scenarios/cases, doing more challenging tasks rather than repeating the test cases manually.