“The Best” of the Best Practices for Test Automation
We've narrowed down some of the test automation best practices into these key considerations.
Join the DZone community and get the full member experience.Join For Free
If I were to write about the benefits of test automation, rest assured that you would be reading all about the enhanced reliability it provides, its laser-like accuracy, and far-reaching coverage. And of course, I would certainly make sure to stress how it can drastically improve product quality, reduce time-to-market, and perhaps most valuable of all, bring with it a high return on investment.
However, I am not writing about the benefits of test automation, although they are indeed impressive when all laid out like that. Instead, I have chosen to write about something that is arguably much more valuable than the benefits of test automation to your business: how to achieve them. And just like most things done well, it requires the right procedures, the right strategies, and of course, the “right” best practices.
Today, we are going to dive into what those best practices are so you can not only get the most out of your testing efforts, but deliver the highest ROI.
Determine Which Test Cases to Automate
First off, you need to accept that it is impossible to automate all testing. We know, we've tried. But in knowing this, it makes selecting which test cases to automate all that more important.
In essence, the real value of test automation comes from how many times any given test can be repeated. If a test is only to be performed a couple of times, it is better left to test manually. As a rule of thumb, test cases that run frequently and require large data sets to perform the same action are ideal candidates for automation.
Here are some perfect examples of the types of tests that can benefit drastically from automation:
- Tests prone to human error
- Repetitive tests that run across multiple builds
- Tests that require numerous or diverse data sets
- Tests that are effort or time intensive when done manually
- Tests that run across different hardware, software platforms, and configurations
- Tests that are simply impossible or not feasible to run manually
Divide Your Efforts Based on Skill Level
While it is nice to think that everybody is at the same skill level on your QA team, the reality is that it is seldom the case. Considering this and the fact that test creation is at the crux of test automation, it is vital to divide your efforts accordingly based on the skill level of your team and the tool selected. Allow me to elaborate.
If you have chosen to use an open source tool, then your automation engineer must have adequate coding skills to utilize it fully, or even at all. However, that isn’t to say that junior engineers can’t use test automation. Depending on which tool you select, such as certain proprietary ones, then QA engineers of all skill levels have the ability to create test scripts with minimal training or guidance.
Another route for filling any skills gap or lacking the infrastructure that may exist is outsourcing certain aspects of the process to a skilled and experienced partner. This can include everything from strategy, proof of concept, script development, infrastructure setup, and even workshops and hands-on training.
Choosing the Right Test Automation Tool
Some would say that selecting an automated testing tool is essential for test automation. We’d argue that it is selecting the right tool that makes the real difference. However, a quick Google search will show you that the market abounds with hundreds of different test automation tools to choose from.
So where do you begin?
Here are some basic guidelines to consider when selecting which tool is right for you:
Flexibility: It is unlikely that your team is all at the same skill level which is why you need to select a tool that can be utilized by everyone. For example, if you lack the expertise to write automated test scripts, you will want to make sure that the tool provides an alternative, like the ability to perform keyword testing.
Supportability: Tools available are usually platform and technology dogmatic, meaning that you will not often come across a tool that will support multiple platforms and technologies. Determine what you are testing and across what operating systems and then determine which tool best supports your efforts.
Reusability: One of the most significant benefits of test automation is its ability to reuse tests which is why you need to choose a tool that can do just that. Does it allow you to create tests that are not only reusable, but maintainable, and even more important, resistant to UI changes in the application?
If You Want Good Tests, You Need Good Data
Perhaps one of the most boring and time-consuming aspects of test automation is the creation of test data. Sadly, the fact that it is boring does nothing to diminish the importance of it.
Creating test data, and more specifically, well-structured test data, is an undertaking that is undoubtedly worth your time and effort. When you set a baseline of good quality test data, it becomes much easier to write automated tests through the entire development lifecycle.
When it comes to your test data, one of the best practices you can implement is to use external data sources. The reason behind this is that by using external data, it makes your tests not only easier to maintain but more importantly, reusable. When this is done, you can easily add various testing scenarios with the data file being extended through new data, all without any edits to the original automated test.
Shift-Left for Maximum Results
In order to maximize your test automation efforts, you need to begin your testing as early as possible and as often as is required; or, as many know it, you need to Shift-Left.
The Shift-Left movement is one that is seeing testers and developers begin their testing efforts much earlier than was historically done. The reason being is that when testing begins earlier in the project lifecycle, the more bugs and glitches can be found. Tests like automated unit testing can even begin on the first day of development and used to gradually build your test suite. It doesn’t require an extensive or complicated explanation to realize that when bugs and glitches are detected earlier, it is much faster and cheaper to fix them than in the ensuing production or heaven forbid, deployment.
If you are looking to produce higher quality products, reduce your time-to-market, and garner a higher ROI, then I wouldn’t hesitate to suggest test automation as the solution. However, the solution of test automation is only of value when it is implemented correctly and utilized using best practices. And while not every business is the same, nor are their uses for test automation, the aforementioned best practices can all be easily adapted to help you maximize your automated testing efforts.
(First published in mobileLIVE Perspectives)
Published at DZone with permission of Ragavan Balasubramaniam. See the original article here.
Opinions expressed by DZone contributors are their own.