With the growth of Agile IT development and DevOps processes, the role of the automated testing expert is becoming increasingly relevant. More and more companies are trying to deliver IT projects quickly, which creates increasing pressure on the quality of the projects delivered.
We need to test as much as possible, but we also need to find better ways to test. The goal is to be able to give the development team feedback quickly and frequently, and fix anomalies before they start causing more serious damage.
Automated testing is not intended to replace manual testing, but rather to complement it. Running a series of manual tests can quickly become redundant, which is the reason a software development team should retain the services of an automation expert.
Why? To create and generate algorithms so that these tasks are performed automatically with minimal human effort.
Why Choose Automated Tests?
Test automation has numerous benefits:
Saving Time and Money
Manually testing all changes in an application currently under development requires a lot of time and effort.
Once in place, automated tests can run repeatedly, quickly, and without any additional burden on the team.
Improved Quality Coverage
An automated test can be run on all available platforms, and with a multitude of configurations to cover a maximum number of scenarios.
Hundreds of automated tests, from simple to complex, can be executed in a single command line for every change in the application under development, providing coverage that is impossible to achieve manually.
Unbeatable Accuracy
Even the best manual testers will eventually make mistakes by repeating the same tests, whereas an automated test executes every action with the same precision.
The tester, freed from their burden, will have more time to write new scenarios, or to attack the verification of complex features.
Quality from a Different Angle
An automated test can simulate certain components of the application to focus the validation effort on targeted components.
It is also possible to create thousands of virtual users to interact simultaneously with the application and its infrastructure to determine how well it performs under this load.
Shared Team Support
Developers can also run automated tests to detect defects before handing over their code to testers.
Each of their changes can be validated by running a series of automated tests that notify the developer immediately if there are any issues.
A Better Team
Performing repetitive tasks through automated testing gives the team time to focus on tasks that add real value to the customer.
Velocity is increased and overall confidence is improved.
The Skills of the Automated Test Expert
In order to implement agile and robust testing methods, the skills of the software tester are similar to those of programmers.
The automated testing expert has a unique set of skills: they can test and can also program. They know how to deploy new solutions to automate testing processes and reduce the human effort required. They allow the team to spend more time developing and supporting applications instead of testing them.
What does an automated test expert’s day look like?
In Agile mode, the automated test expert analyzes the new features to be developed. In collaboration with the developers and the project analysts, they document the acceptance criteria for each feature by breaking them down into test scenarios.
The test case is a document containing:
- Prerequisites
Example: have access to a user with specific rights - Inputs to Use
Example: use product X to add it to the cart, and use the credit card payment method - Actions to Perform
Example: add a product to the cart, proceed to payment - Required Verifications
Example: taxes should be displayed separately and included in the final price
The test scenarios are used as instructions to validate the acceptance criteria. They will then be sorted according to their automation potential.
There are two things to consider before selecting the test cases to be automated:
- How well do we want to test the application before we deliver it to the customer?
- What is the testing capacity of the team?
We then compare this information to the benefits of test automation versus the effort required to achieve it.
For a test case to be a good candidate for automation, it must meet one or more of the following criteria:
Long Execution and High Frequency
These two criteria mean that a manual tester must be mobilized for a longer period of time and more often for the same test task.
It is in these cases preferable to automate the tests, to assign the tester to more relevant tasks.
Resources Required
When test results need to be compared on different devices, operating systems, databases, etc.
Automating them allows us to reuse the actions with different configurations, and even to execute them in parallel.
Severity of Possible Anomaly/Complexity of Test
Critical or complex tests are more difficult to execute manually. Once automated, human errors are minimized.
Added Value of Automated Testing Exceeds Effort Required for Automation
If the time saved by automatically executing a test case easily exceeds the time required to automate it, it immediately becomes a good candidate.
The Right Tool
The automated testing expert must then choose the automation tool in collaboration with the project managers. They have a lot of options to choose from, and will have to make an informed selection since the decision will greatly affect the automation effort required.
Some of the most important criteria in the choice of the tool are:
- The available budget versus the cost of the tool
- The expert’s ability to use the tool (Example: a tool that requires knowledge of Java, Javascript or Python)
- Its integration with the project environment (continuous integration and deployment platforms such as Azure DevOps, TeamCity, Jenkins, etc.)
- Is the tool stable and supported by a large community?
- Is there clear documentation available?
- Is the learning curve acceptable given the timelines?
- Can the tool be used for all projects, or is its use specific to the current project?
- Etc.
The automation process can then begin, but the expert must first ensure that the test cases work when they run manually, and that the test environment is available.
Manual execution of the test cases allows for an estimate of the effort required to automate it properly. Once the estimates are approved by the project managers, the automated testing expert begins the automation.
Most automation tools work by writing lines of code that instruct the machine to perform a specific set of actions. This code will be included in the project’s code directory, and will be versioned in the same way.
It is important to think of tests as an integral part of the solution. Thus, an application divided into several parts should lead to a reflection on the relationship between the version of the code to be tested and the version of the tests. For example, should the version of a microservice be linked to the test suite? What about the dependencies of this service?
The automated test specialist must therefore have knowledge similar to a programmer’s in order to build automated tests. They must know how to use best practices for an integrated development environment (Visual Studio Code, IntelliJ, etc.), for writing code according to standards, and for managing versions of a shared code repository.
The code is then tested. Yes, even the code that is used for automated tests must be tested! We want to make sure that the automated test is robust and able to synchronize to many situations, such as a slower connection or less powerful infrastructure than a production environment offers.
The finished product is then sent to the common code repository, where other team members review it before integrating it with the rest of the source code. The automated testing expert can then tackle the next scenario.
Automated tests embedded in the source code will be run automatically whenever a programmer tries to integrate new elements into the source code. They can also be started at any time locally by the programmer who wants to test his new code before submitting it for review and integration. Their execution generates a report confirming either that everything has been successfully validated, or that errors have occurred.
When they are not automating a test case, the automated test expert keeps an eye on the executions of the tests they have produced, intervening, if necessary, should the execution fail. They must also keep up-to-date with new versions of their automation tool, and explore new ways to automate tests.
Automated Testing Myths
It is impossible to automate everything. Automation does not replace manual testers, it just allows you to run more tests in the same amount of time, and to run them more often. It eases the burden on manual testers by allowing them to focus on finding anomalies and writing new test cases, instead of running the same repetitive tests over and over again.
The quality of automation is directly related to the quality of manual testing. A clear test case with clear steps and validations will become an excellent automated test. However, it is impossible to improve a scenario by automating it. A scenario that does not work manually won’t work as an automated test scenario, either… it will just not work faster.
A good automated testing tool is necessary, but not sufficient. Having the right tool is only the beginning. The tool is not everything: the people who use the tool and exploit its strengths to the maximum will find solutions to overcome its weaknesses.
Conclusion
Automation in IT development should not be limited to programming manual test cases. It can also drive the integration and deployment of the application being developed.
All the automation tasks that make up continuous integration, continuous testing, and continuous deployment are grouped together under the name DevOps, a methodology that is now essential in the field.
Automation can also be used to accomplish other repetitive tasks, such as creating master data for an application, copying and renaming large numbers of files, or sending hundreds of cute cat emails to your colleagues just to annoy them a little!
Want to know more about how we use automated testing at Uzinakod, or want to talk to us about your project? Don’t hesitate to contact us now.