Good practices for Automated Testing

3 February, 2020 |

Automated testing has gained increasing popularity in software development companies, as well as in the projects in which they are included, regardless of the industry of the company receiving the service or its nature. As we explained in a previous blog post, the rise of Test Automation is based on a large amount of resources saved by the Testing & QA departments, either in the reduction of labor, as well as in the liberation of time and effort of the Testers, who can reduce the operability to devote themselves to tasks of greater added value, such as testing new or uncovered functionalities in automation.

However, like any discipline, the Automation of Tests implies a series of good practices that must be followed closely, thus achieving that the promise of optimization of resources is fulfilled. Among those good practices found:

Correct assignment of automation processes by degrees
The great part of the testing process in any project is based on the unit tests, then there would be the component test, later the integration and ending with API, assigning less effort in the user interface, which would be the most operational part of the management

By automating the most operational sections of the project, we ignore the most qualified and functional aspects of the project, thus providing the highest value to the user.

Mike Cohn’s pyramid explanation:

Unit Tests
They are used to check the correct functioning of a reduced portion of code, for example, a method. They are the starting point for detecting failures if a test fails at this point, it is likely that the tests of subsequent levels will also fail (integration, API, functional etc.)

API tests, integration of components, services
These tests verify that communication and data exchange between the different modules of the application or with other applications. They serve to detect faults in the way in which the different modules of the application act and integrate with each other.

Graphical interface tests
They require high development time and are slow in execution and with many dependencies with other components. The graphical interface is where changes occur most frequently, so these tests are also usually the most unstable, requiring periodic updating. Yes, it is necessary to automate the GUI tests of the critical functionalities, but it is better to do it after having automated the lower levels of the application.

Determine which GUI tests are fundamental to the project
Not everything can and should not be automated, we must define the test cases that are candidates for taking into account things like validations, usability, accessibility, etc.

What to automate? Critical tests, which do not require human intervention, that give results that can be unequivocally verified, and whose complexity to automate does not exceed the value it can provide.
The issue of selecting the interface tests to automate is a broad topic in itself, so we must focus on those critical areas for the application, which are already closed and that will not change constantly.

Involve the entire team in the testing process
The entire team must be incorporated into the test automation strategy. If testing and development are not in tune, automation will fail. Testing needs the development collaboration to follow certain practices in the development of the application to favor the automation of the tests.

Additionally, the inclusion of various professionals with knowledge in the core of the client’s business will allow to find details and points of improvement in the development, taking into account that this will be used by thousands of end users, who will demonstrate their dissatisfaction with an inefficient application.

Allocate resources with the necessary skills to perform automation
Automation done correctly requires more than simply recording and reproducing UI tests with a tool. Automation must be able to be integrated at the development process level so that it can give real benefits.
A good practice is to have separate roles for the functional tester and who automates tests, combining these two tasks to save resources is the most common option, but it ends up having the opposite effect since these roles that require different skills.

For a couple of years, some companies, such as Microsoft, started incorporating the “Software Development Engineer in Test” or SDET profile whose tasks range from developing and maintaining automated test scripts (not only user interface but also security, loading, performance, etc.) until implementing and maintaining the necessary infrastructure to integrate and run these tests as an integral part of the development process.
This profile is not responsible for functional tests, test plans or test cases at any time, these tasks remain in the hands of manual testers.

Maintain a manual testing team
The objective of test automation is not to eliminate manual testing, nor to supplant testers. What is automated are validations that manual testers have previously detected during regression or smoke testing.
It is incorrect to think that automated tests will find bugs that manual testers have omitted. Remember that these are scripts that simply run steps and verify results, but the script will not verify anything for which it has not been programmed.

Develop a clear and solid testing strategy
Determine the scope of Test Automation: All aspects should be considered when analyzing feasibility. It is also essential to perform a feasibility analysis in the manual test case package that allows automation engineers to design the test scripts.

Select the correct automate test
Tests rely heavily on automation tools. That’s why finding the right test tool automation is a critical phase for a life cycle test automation. When looking for an automation tool, you should consider the budget, the technologies used in the project, the familiarity of your team’s tool with the resources on board, intuition, flexibility and more.

Plan + Design + Testing Strategy
The following is the phase of the automation test life cycle methodology that defines how to address and achieve the objective of test automation. The selection of a test automation framework is the first and most important in the Test Strategy phase of the Automation test life cycle.

Good documentation makes it easy to execute
Once you install the test environment, it is time to run the test script. Then, this phase of the automation test life cycle is dedicated to the execution of all test scripts.

Reporting and analysis of test results
After performing all types of tests, the test team analyzed to identify which functionality or particular component experiences a relative number of problem reports.

Conclusion
There are many variables that determine the quality of automation, for which those responsible for carrying out the development and / or quality tests need to allocate more resources to ensure the quality of development.

We invite you to visit our Testing & QA page to learn more about our methodology and quality of service.