Test automation engineer, the desired skillset

Home
Our Insights
Articles
Test automation engineer, the desired skillset
Posted on

In my last article, I wrote about how to develop good quality software in agile. In such an approach, test automation is essential. And at the same time, according to “Challenges in Test Automation: Survey Key Results”, 62% of survey respondents (mostly managers) agree that one of the top challenges in applying test automation is lack of skilled people. Many manual testers would like to start their journey with developing automated tests, however, without a good learning path and some technical background, the road seems to be a bit bumpy.

With this article I had two goals in mind:

  • To help aspiring test automation engineers to plan their learning path,
  • To help managers set up development paths and promotion requirements within their teams.

Commonly, we distinguish three levels of skills: junior, middle and senior, or — as I like to call them — foundation, professional, and master.

 

1. Test Automation Foundation

To start working on automating test scripts, one should have reasonable familiarity with programming tools, as well as decent knowledge of testing itself.

Programming

This is obvious, but to start developing an automated test you need at least basic knowledge of one programming language. I would recommend Java or JavaScript. JavaScript is easy to learn and easy to work with in smaller projects. It is a programming language for Cypress or Puppeteer. Java on the other hand is a mature programming language suitable for bigger projects. It is the most commonly used programming language in test automation now. Apart from the programming language, you need to know the basics of HTML and CSS. For bigger projects, you should also be familiar with GIT.

Theoretical testing

It is a no brainer that test automation engineers needs to know how to design tests. First of all, you need to know what tests are for and where to test. And this knowledge is not as easy to acquire as it might seem. Common certification is still propagating processes from 15 years ago. But since then, we have made some progress. So instead, I recommend reading about the agile testing process and approach. A good source is the Agile testing book by Lisa Crispin and Janet Gregory. You also need knowledge about black-box testing techniques, designing test cases, defining testing data, and of course, writing test reports and issuing bugs. To augment these must-have skills, there are two more that I’d suggest are worth acquiring. One is BDD (Behavior Driven Development) — an approach in which software is specified from the end-user perspective with the use of dedicated domain language, Gherkin. The other is the theoretical aspects of API testing. Since automating tests on the API level gives the best bang for your buck, knowing what it is and how to design API test is a good idea. For novices, I would recommend reading up on the VADER approach (Verbs, Authorization, Data, Errors, Responsiveness).

Technical testing

OK, now that you’ve made some preparations in programming and theoretical testing, it’s time to put it all together. For this, you need to know some test automation tools and/or automation libraries and testing libraries. As for test automation tools, I recommend you take a look at my previous article — Tools for test automation in 2022. As for the libraries, let’s start with ones used in automation. No matter what programming language you are using, the golden standard is Selenium (web browser automation). Having said that I myself am amazed by what PlayWright can do, so take this as an option. Next comes the testing library. And by that I mean a library that usually provides an extensive assertion library and a test runner. For Java, a good choice would be TestNG, while for JavaScript — Jest. The reality is, each programming language has its own library of choice.

Alternatively, if you choose to specialize in API test automation only, you can skip Selenium/PlayWright and take a good look at API testing libraries, like Rest Assured.

 

2. Professional Automated Tests Development

Theoretical programming

All right, so you have decent test automation skills and have some experience in the field. It’s time to take your game to the next level. First of all, spend more time on honing your programming skills. As a professional tester, you will be responsible not only for writing scripts but also for making more architectural decisions. You will also be helping younger teammates in guiding their code development. So, take time to arm yourself with an in-depth understanding of Object-Oriented Programming. Make sure you read such classic books as Clean Code by Bob Martin and Refactoring by Kent Beck. This is also a good time to familiarize yourself with the basics of software architecture and some design patterns.

Programming

With all that theoretical programming knowledge you may now go deeper with your programming language. For Java, for example, you should be able to use more advanced aspects, like streams API, lambda expressions, generics, etc. You should be also able to develop some basic operations on databases. This is useful mainly for test data seeding in the target environment. It is also good to know something about your Application Under Test. If you are testing a web application, where the front-end is written with the use of Angular or React, it is good to know some basics of these front-end frameworks, even just for adding automation IDs for elements.

Theoretical testing

In terms of testing, you already know most of the things. It is time to move a bit further beyond functional testing. As a professional test automation engineer, you should be aware of other types of automated tests: performance tests, load tests, security tests. At this level, it is also good to know different approaches to test automation, like Acceptance Test Driven Development, Keyword Driven Testing, Data-Driven Testing, etc. The idea behind this is that in test automation we usually need to select proper tools for the situation in which tests are developed. The broader your knowledge and context awareness, the better decisions you will make.

Practical testing

Since you already know most of the tools used for functional test automation, you need to learn how to use tools for non-functional testing. For performance and load testing, a good choice would be JMeter or Gatling. But the selection of particular tools depends on your preferences and project context: for analyzing web application code, I would recommend mastering Lighthouse.

 

3. Master your Test Automation skills

Theoretical programming

All right, so you have several years of experience in test automation, and you would like to master your craft. At this level, you should be able to perform more advanced programming tasks. To be able to do that, you will need some more advanced programming background. Most valuable will be design patterns and software architecture. For design patterns, you are probably already familiar with Page Object pattern, factory, facade, and a few more. Now it would be time to master other, more advanced ones. Also, it is the level where you should have a good understanding of software engineering, and especially the DevOps model. This background will give you a better understanding of the test automation context and will let you plan an automation strategy well.

Programming

As for programming tools, since you already know your programming language, it is time to go further towards DevOps tools, like Azure DevOps, Jenkins, etc. You should be able to build new pipelines and embed different automated tests in them. And since we are talking about DevOps, you should also be familiar with Docker. You should be able to build an image, and execute container or containerized applications (e.g., with Docker Compose).

Theoretical testing

The mastery level is all about awareness. So, in the testing field, you will no longer learn new things on the level of individual tests, but rather hone your skills on a higher level. Thus, you should be fluent in Continuous Integration and Continuous Delivery approaches, know how to best tailor tests for particular applications and situations. You should also be familiar with regulatory requirements that may apply to automated tests (if you are working in regulated industries).

4. Bottom line

There is one more thing you should learn. And this is the ability to observe, critique and change. Among all the skills mentioned above, you should be hungry for learning and constantly be looking for process optimization. This is not something you can learn from others. This is something you should learn from yourself. Pay attention to what you are doing and try to do it better next time.

"One of the top challenges in applying test automation is lack of skilled people. Aspiring test automation engineers should to plan their learning path, but it’s also managers’ task to set up development paths and promotion requirements within their teams."