The Royal Spanish Academy defines automating as follows:
Apply the automatic to a process or a device.
We constantly talk about automated testing processes under the framework of saving costs and time, forming in our mind sentences such as “test more in less time” and “save time and money”. But what is software test automation really? What are we really going to achieve by automating the testing process?
Taking the ISQTB Glossary definition of “test automation” we have:
The use of software to perform or support test activities.
Which we could translate as The use of software to execute or help testing activities. We are going to divide this sentence into two parts, on the one hand (a) The use of software and on the other hand (b) to perform or support test activities, and we will analyze what we can infer from them.
How to approach software test automation?
First of all, it involves the use of software to test the software. Stated like this, it can be something of an oxymoron, but it becomes clearer if it is stated as: use of TOOLS to test the software. These tools can be found in different forms, such as a script, or have automation frameworks like Selenium. We may think that it is not necessary to use these tools, but without them it would be impossible, since we would be in the scenario of a manual execution, even if it were as simple as clicking on a mouse: the use of a tool (software) is essential. ) to perform tests automatically.In addition, it must be taken into account that this automation of software tests does not have to (or cannot even in some cases) be restricted to test execution tools, such as the aforementioned Selenium or Postman, but that we will also need other tools for the automatic generation of test data, reports, analysis of results, etc. Hence the second phase of the definition, which implies the execution of the mentioned tools to carry out the tests.We must have a set of resources that allow us to analyze, design and execute the automatic testing process as a whole. These resources should not be limited to technical or software resources, which are the ones covered by the definition shown, but we also need additional methodological and procedural ones for this process to be truly effective.
The process of automating tests
With all this, we can find certain complications such as having a messy test set, unmaintained scripts, poorly generated data, etc.
For this, we must carry out a series of activities that allow us to reduce risks:
• Review the test code.
• Refactor the code.
• Keep testing simple.
The tests that we automate must be well structured, readable and verify only one item. This will make the tests easier to maintain, requiring less time for that work. We have to keep our code simple, but that doesn’t mean it’s easy. Let’s think about approaching the testing process as follows: we do a quick Google search, choosing the first advertised tool, from which we select/configure some options, and then we search StackOverflow for our doubts about it, selecting a hodgepodge among the three first verified answers. If this sounds familiar, you’re doing the wrong thing.
This will make our tests non-maintainable, since we lack proper knowledge about them. In addition, these tests will hardly be usable to be used as part of other tests, and, therefore, we will be building a poor testing process.
Test Automation Key Points
Being able to carry out simple automated tests requires a lot of time, and having certain previous points clear before launching into coding the tests, or generating the test data. For this, it is important to define a clear communication strategy, which must be simple and, as we said, in order for it to be so, we must invest some time in thinking about it beforehand:
• What do we want to automate?
• Is it really necessary to automate tests?
• What should be automated and what not?
• What coverage do we want to cover?
• How do we approach test data generation?
• What environment is the most suitable for execution?
• Who will perform and maintain these tests?
In order to carry out these tasks correctly, we need a properly trained team that is capable of carrying out the analysis of the component or system to be tested, and has the appropriate experience to be able to carry out the tasks of coding and software maintenance effectively.After the creation of the tests, we must not forget another defining factor of the success of our tests: the environment. This must be thought beforehand, that it has the necessary characteristics for the execution and analysis of the tests. These environments not only refer to the tools that run on them, but also to their technical resources (computing capacity, data volumetry, etc.).In short, the test automation process, like the testing process, must be viewed as a series of activities that provide feedback, under a framework of continuous improvement, seeking the objective of achieving the highest quality, not only in the tests to execute, if not in the tasks that are carried out over time, which guarantee us the effective automation of our tests.
At SQS, we are specialized in designing and implementing automated test environments that facilitate and reduce the cost of performing regression tests.We train the client to be able to maintain the environment in an efficient and professional way.We can help you automate your unit, integration and system tests, using our own and third-party automation tools.Do not hesitate to contact us to learn more about our test automation service!