Section divider

Learning Automation: Becoming a Test Automation Engineer

By Dennis Gurock
12 min read
Learning Test Automation: Becoming a Test Automation Engineer

Are you a software tester and want to learn test automation? More and more teams are investing in large test automation suites, as this allows them to release software faster and automate slow and repetitive tasks. So learning test automation will make you a much more valuable and productive team member. You will also have extra time to focus on more creative QA efforts such as exploratory testing.

Not just that, but many testers find that learning test automation and learning how to program also helps them get a better understanding of the apps they test. So learning test automation not just helps you automate parts of your job, it also improves your manual testing game.

There's yet another benefit to learning test automation: if you are currently a tester and your career goal is to enter software development eventually, learning test automation is a great path to becoming a programmer. You will already be familiar with basic programming, know the tools the team uses and be a productive contributor from day one.

This article is a comprehensive guide for everyone serious about learning test automation. So lets get started and dive directly into it! 👍

Learning How to Program

If you want to become a test automation engineer, there's just no way around learning how to program. Many vendors advertise their test automation tools with how simple it is to use their visual editors. How you can just click together test automation scripts. Just record your tests, hit play, call it a day. Our advice: directly skip these no-code or low-code solutions and avoid vendor lock-in.

At the end of the day you will need to learn programming anyway in order to work on complex test automation suites. So why not directly start with the real thing and save yourself a lot of time and frustration?

The good news is that it has never been easier to learn programming. There are so many great resources, platforms, tools and projects out there helping you quickly make progress. Below we will take a look at various resources to help you get started.

Language: The Choice Is Yours

There are countless of programming languages to choose from for your first projects. So which language should you pick? This depends on a couple of factors.

  • What is your company using? If you want to become a more productive team member at your current company, it makes sense to pick a language your team already uses. So if your company is heavily invested in, say, Ruby, then start learning that.
  • Already got programming experience? Have you already worked with a programming language for a few side projects? Test automation works with practically any language, so just use what you already know.
  • Are you working in an opinionated industry? Do you want to improve your skills to advance your career in a certain industry, such as finance or gaming? If so, it doesn't make sense to learn Python first if most companies will be using C/C++.

That said, if you don't have any strong preference yet, you could just pick JavaScript to get started. Not only is JavaScript the most popular language on GitHub and StackOverflow (so there's a huge ecosystem of open source projects and communities for JavaScript out there). It is also fairly easy to learn and to use, as you can run JavaScript programs just as easily in your browser, command line and on servers.

Pick a Programming Environment

You might think that downloading a text editor and developing code on your own computer is the best way to get started, but not so fast. In recent years a couple of platforms have become available that make it very easy to write your first programs online. This is a great way to get started and skip the daunting (and sometimes confusing) part of setting up a local development environment:

  • Repl.it provides a full online development environment to write your first programs, run them on their servers and work together with other team members. This is the ideal way to get started, as you just need your web browser.

  • Glitch is another online development platform making it easy to write, organize and run code in your web browser (and on their servers). You can also easily share and extend code with other users, as well as run your own full web applications.

You will want to use a text editor and command line eventually, but using one of these (or similar) online platforms makes it much easier to get started initially. Once you are more comfortable with basic programming, you can also jump into your favorite text editor and run things on your own computer (we recommend the free Visual Studio Code editor).

JavaScript Programming 101

It can be overwhelming to learn a new programming language if you don't know where to start. Fortunately there are very good free resources out there to pick up the basic concepts of JavaScript and learn how to write your first scripts. To make it easier for you to get started, we've collected a few excellent starting points below.

Foundation Courses

JavaScript Online
Learn JavaScript in an interactive environment with short lessons. You can complete challenges directly in your browser to try the concepts you learn.

Learn JS
A collection of interactive lessons built for everyone interested in learning basic and advanced JavaScript topics.

Introduction to JavaScript
Learn all about JavaScripts' data types, control flow statements, objects & classes, as well as more advanced topics.

Video Tutorials

freeCodeCamp JavaScript Tutorials
A huge (130+ parts) list of basic and advanced JavaScript video tutorials. If you prefer videos as your format of choice for learning, this is a great resource.

Advanced Concepts

Eloquent JavaScript
This is an excellent choice for anyone who likes to study with a book – whether you prefer it in digital form or as a paperback. In each chapter, you'll work on a project to better grasp the concepts through realistic scenarios.

You Don't Know JS
Many programmers, even those who have been working with JavaScript for many years, don't really understand how JavaScript works under the hood. This digital book tries to change this and it's a must-read to really understand JavaScript's core concepts.

Learning resources to get started with JavaScript programming.

Your First Project

There's only so much you can learn from reading documentation and reviewing tutorials. The best and fastest way to get started with programming is to work on a real project. By trying to solve an actual problem you are forced to figure out how things actually work, try different things and get a better understanding of your tools. So pick a simple project to start with and further extend it to improve your skills.

For example, a simple script to automate your web browser to search Google using the popular Selenium or WebdriverIO projects could be a good first project. Especially if your team is working on web applications, the chance is good that they already use Selenium to automatically test the frontend (user interface) by automating the browser with Selenium to mimic typical user interactions and recording the results.

So automating a simple Google search in your web browser and checking if Google executed the search correctly is a good starting point. This sounds like a very easy task to automate and it's indeed only a couple of lines of code. But once you've accomplished this, you've got all the basic building blocks in place for further experimentation and more complex projects. There are many guides out there to get started with Selenium (and alternatively WebdriverIO), and here are a few articles we found useful:

const webdriver = require('selenium-webdriver'),
  By = webdriver.By,
  until = webdriver.until;

const driver = new webdriver.Builder()
  .forBrowser('firefox')
  .build();

driver.get('https://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('webdriver');
driver.findElement(By.name('btnK')).click();

driver.sleep(2000).then(function () {
  driver.getTitle().then(function (title) {
    if (title === 'webdriver - Google Search') {
      console.log('Test passed');
    } else {
      console.log('Test failed');
    }
    driver.quit();
  });
});

A simple first Selenium project (quoted from the Mozilla documentation).

Test Automation Frameworks

Now that you have chosen a programming language to learn and a development environment to edit and run your first code, the last missing piece to your test automation stack is choosing a test automation framework.

What's the purpose of a test automation framework? You use a test automation framework to structure and organize your tests and record test results, as well as generate result files that can be processed (and displayed) in the other tools you use.

For example, with the above Selenium Google code, you would add certain assertions and checks to your code to verify that the system under test (Google in our example) behaves the way we expect. If something goes wrong, we generate an error and the testing framework marks this test as failed. This way you can write many small checks to build a large test suite and the testing framework makes it easy to run them.

Testing frameworks also provide advanced features that will make life easier for large projects, such as running your tests in parallel (even across multiple servers), so you don't have to wait too long. This becomes especially important if you want to run all your tests for every code merge or deployment (see below). We recommend picking one of the standard open source frameworks for your programming language, as you will find many examples for this online. Here's a quick list of popular standard frameworks for various languages.

Test automation results reported to Testmo.

Software Engineering Best Practices

Knowing your way around the code editor, programming language and testing framework is arguably the the most important skill in test automation. But today's software projects are getting more and more complex. So in order to play nice with the rest of your team, you will need to understand and use a multitude of tools and software engineering practices.

Once you have a basic understanding of programming and test automation strategies, we recommend adding more software engineering tools to your workflow from the beginning. This will help you understand early how successful teams work, get yourself familiar with popular tools and be more productive at the same time. Lets take a look at some of these tools.

Version Control Systems

You should start using a version control system as soon as possible. Versioning your code, even your early first projects, will make life much easier. You will never lose any of your code, you will always be able to go back to previous versions, compare changes you've made, work together with other people, and even contribute to open source projects or publish you work.

If this article would have been written a few years ago, we would've listed a number of popular version control tools to choose from. Luckily for you, today the choice is much easier: git has become the defacto standard for many projects, especially open source projects, so there are many good reasons why you should pick git for your new projects.

Are you new to git and version control? Start with this free official git book, and then hop over to GitHub or GitLab to create your first projects and repositories.

Git fundamentals for beginners training video.

Continuous Integration

If you've read about continuous integration (CI) before and wondered what it means: no worries, it's a complicated term for a pretty simple concept. It basically means that multiple software developers working on the same project should merge their code regularly to make sure that their changes still work with the rest of the code.

When people refer to CI today, they usually mean more than that though: in order to make sure that the newly merged code still works, CI tools automatically detect and get the new code, build or compile it, run all test automation suites and thus verify that everything is still working. Usually CI scripts (often referred to as pipelines) also prepare all the code for server deployment or they package the app for distribution to customers.

To build on top of this, continuous delivery (CD) means that your CI pipeline can optionally also directly publish new versions to your production servers (obviously only when all test automation scripts pass!). Productive teams use this technique to release new versions of their code regularly, sometimes even multiple times per day.

If this all still sounds too complicated, try to automatically run your test suite whenever you push new code to your repository as a first simple CI pipeline. If you use GitHub or GitLab, there are great free CI tools built-in to try (see our articles on GitHub Actions and GitLab CI/CD). Or you can start with a dedicated CI tool by taking a look at CircleCI.

GitHub video explaining continuous integration and delivery.

Test Management and Reporting

Can there ever be too much testing? While it's true that teams strive to achieve a high test coverage of their projects, it can be a challenge to make sense of all the test results, track testing across larger teams and make sure that you test the right things at the right time.

Successful software testing teams also combine automated tests with exploratory testing and manual test cases, so they use a test management tool such as our app Testmo to coordinate all this. Good test management tools provide various benefits to help testing teams work smarter:

  • Unify test automation with exploratory testing and test cases management
  • Manage testing milestones so you know when and what to test
  • Generate live dashboards and reports so your team always knows what's going on
  • Integrate with issue tracking (such as Jira) to report problems discovered during testing
  • Schedule and run test automation so your testing team has full control over this
  • Have a single source of truth for all your project's quality and testing efforts

Test management tools (here: Testmo) make it easy to track and report test runs & results.

Where to Go From Here

Start with your first projects to automate your first tests. Then build upon this with more complex projects and integrate more tools and frameworks. This is a proven approach many successful testers and programmers used to gain initial experience and skills with test automation.

But there's much more to test automation than learning programming or knowing how to use certain frameworks. Just as important as knowing your way around your development environment is understanding what and when to automate testing.

So remember that it will take a lot of time and patience to become a proficient test automation engineer. It can take years to master all the bits and pieces needed to work on complex projects. If you start today and stick with it, there's a good chance that this can lead to a fulfilling and successful career.

Start Testing with Testmo Free

#1 Unified Test Management & Automation Reporting

Test automation runs
Test automation command line

PS: We regularly publish original software testing & QA research, incuding free guides, reports and news. To receive our next postings, you can subscribe to updates. You can also follow us on Twitter and Linkedin.

Section divider
More from Testmo
GitLab CI/CD Test Automation Pipeline & Reporting
This is our complete guide on setting up a GitLab CI/CD pipeline for test automation, including reporting of test results to test management.
Read full article
Automating Software Marketing Screenshots with Code
Producing great looking screenshots for software marketing websites can be surprisingly difficult and time consuming. Check out our method to automate this repetitive task with code.
Read full article
CircleCI Test Automation CI Pipeline with Docker & Reporting
Learn how to configure and set up a modern test automation CI workflow with CircleCI, Docker, test automation reporting and best practices.
Read full article

Start testing with Testmo for free today

Unified modern test management for your team.