Author: Satı BAKANOĞLU / System Test Expert & Canan BEKTAŞ / Senior SW Test Engineer, Application Development & Management Group
Software test automation has a very important place today. Over time, manual tests have started to give way to test automation to a large extent. This does not mean that manual testing is losing its importance. While some test scenarios are suitable for automation, some scenarios must be tested manually. So, what is test automation? In short, test automation is the continuous and consistent running of test cases using test harnesses without human intervention. The need for test automation has arisen by increasing test efficiency, reducing test cost, shortening test run time and increasing test frequency. Test automation provides us a lot of conveniences. According to the “ISTQB Certified Tester Advanced Level Test Automation Engineer Syllabus”, these advantages are as follows;
- running more tests in less time and more consistently,
- running more complex tests that cannot be run manually,
- reducing the possibility of human error,
- providing faster feedback to improve software quality,
- improving system reliability.
In addition, according to the “ISTQB Certified Tester Foundation Level Syllabus”, there may be disadvantages in some cases.
- Additional costs and investments,
- Training of the test team,
- System maintenance requirements,
- Distracting from test execution and focusing more on automation design,
- The occurrence of errors originating from automation.
There is a wide range of test levels and test types to which test automation can be applied. We can list them as unit tests, integration tests, smoke tests, regression tests. It is seen that it can be applied in many areas that are needed and compatible with technologies.
Unit Testing
Unit test automation is a software test method. Unit tests are a technique often used by developers after writing automated tests for their code units. The goal here is to see that each unit of the software is working properly. It can also be considered the first test stage. Automatic tests at the unit test level are performed to show that the codes developed by the developers work properly at the code level and between the codes. This increases the quality of the software.
Integration Testing
Integration testing focuses on interactions between components or systems. Integration testing is more difficult to run in complex systems. Writing and running automated integration testing for these complex systems makes test execution easier. Unlike unit testing, it is a test technique used by software testers or quality assurance professionals.
Regression Testing
Regression testing is the tests performed after changes are made in the software code to see if the changes made cause an unintended side effect in the software. It is a suitable candidate for test automation because regression tests need to be run very often (frequent test environment changes, new versions are released, etc.) and because it is usually slow when run manually. Automated regression testing plays a major role in reducing the time cost. “ISTQB Certified Tester Foundation Level Syllabus” claims that the application of automation to regression testing, which is frequently repeated in a software project and whose requirements are less likely to be changed, helps the test execution process.
How the Process Proceeds
The first step on the way to starting test automation is to select the test automation tool. The first point to be considered is the type of project (web/mobile/desktop), the scope of the project, and the code information of the team that will conduct the tests. Once those requirements are identified, the test tool can be selected. For example, UI testing is desired in a web-based application. The automation tools that can be used according to this need are Selenium, Katalon Studio and Test Project etc as examples.
After the test tool selection, effort estimation, test writing and selection of the harness team, and test data preparation are the next steps.
After these steps are completed, it can be started to write the test code. Code writing should be based on certain standards, and comment lines should be added.
After test writing takes place, its run is performed. Detailed test reports will be generated as a result of the test run. Which tests passed or failed are observed in the reports where the errors are presented.
Our Experiences
We use test automation in our projects according to our requirements. In accordance with the test processes we carry out in our company, our regression test sets are kept in the test management tool. We automated these regression sets at 80% level with Selenium for our current project that needs to be redeveloped with new technologies. At the same time, this software needed to be run on multiple different platforms. We performed multiple harnesses on different platforms with the help of automated tests. In addition, we have experienced that we save both time and cost when a new version is requested to be released with a minor change in the software. Our testing team evaluated the time saved by autorunning our regression tests to learn how to use new automation tools. We were able to successfully create automatic test scripts with Postman for testing API services used in the cloud project developed in our company. As a result, we have not only increased the quality of our software by using test automation as much as we needed but also spared time for ourselves to learn new technologies.