Coding resources to take you from manual testing into test automation

Automated testing is the future of the software testing industry, with demand for QA engineers steadily rising. If you’re reading this as a manual tester, you’re likely looking to shift over into a test automation role.

Automated testing is the future of the software testing industry, with demand for QA engineers steadily rising. If you’re reading this as a manual tester, you’re likely looking to shift over into a test automation role.

Making the leap into test automation is a good idea for your career. For one, the automation world certainly offers greater job security. For example, Glassdoor currently displays a mere 4,000 “manual tester” job listings compared to a whopping 31,000 “test automation engineer” listings.

Manual testers are frequently under-appreciated at work and face an income ceiling because in the eyes of their employer, their effectiveness typically corresponds to their working hours. In the Glassdoor overviews, the test automation jobs consistently fall into a higher salary bracket than manual testing positions. Moreover, manual testing attracts many entry-level candidates each year, from recent graduates to career switchers, thus pushing down the average salary level for such positions.

Beyond job security and higher pay, test automation is already becoming the way for companies to test software products. Many modern, forward-looking companies are already investing and will continue to invest in test automation. So if you’re looking work in a more relevant, faster-paced, and more innovative environment, test automation skills are a must-have.

What should you do as a manual tester to switch careers into test automation? Keep reading as we provide actionable recommendations to both novice and experienced programmers.

No coding experience? No problem!

If you’re a programming newbie, the quickest way to get started with test automation is to focus on learning just enough programming to be able to use test automation tools effectively.

Most roles in test automation entail being a “Quality Assurance (QA) Engineer”, whose main task is to prevent defects in the overall development process. Test automation tools today require QA engineers to write code in Python, JavaScript, or other languages to create automated tests. That said, the DSLs that the testing frameworks use only require knowing a subset of a programming language. For example, it’s not necessary to know every single JavaScript language feature to write a well-structured test in JavaScript. Deep language knowledge helps, but it’s in no case a pre-requisite.

So how should you go about learning just enough programming to be dangerous?

Step 1: Choose the programming language

To choose the most suitable programming language to learn, first think through the test automation tooling that you’ll be using:

  • Are you already set on using Cypress? If so, learn JavaScript, since Cypress tests need to be written in JavaScript.
  • Have you already decided to use Playwright? Then learn JavaScript or Python, since Playwright allows you to choose JavaScript or Python bindings, among other options.
  • Does your company or team already use a specific tool for automated testing?
    • If yes, then the programming language that’s already in use for testing would clearly be the most effective choice. Going with the language your team already uses means that you can get help and guidance. Further, you’ll likely be able to consult pre-existing tests for learning purposes.

If your company or team doesn’t do any automated testing, simply go with JavaScript. You can use the language with both of our recommended test automation frameworks (Playwright and Cypress). Importantly, JavaScript is beginner-friendly, has a large community, and there are lots of resources online that can help you learn.

Note: Selenium Webdriver is a popular test automation framework that’s widely adopted, but we don’t recommend it to first-timers. The framework can be quite complex to set up and use. Unless you have adequate support from colleagues who already use Selenium at work, we recommend that test automation beginners focus on simpler tools like Cypress and Playwright.

Step 2: Review online resources to learn the basics of programming

There are many resources online for learning programming, but it can be challenging to pick one from all of the results in an online search. If you have any programmer friends or colleagues, ask them to recommend beginner-friendly resources that have worked for them.

Here are some resources that we recommend for JavaScript:

  • JavaScript basics from Mozilla. This JavaScript introduction is a great starting point. JavaScript is the language that’s frequently used for testing, so learning it will help you start writing end-to-end tests in no time.
  • Code academies. There are multiple code academies and bootcamps that offer free resources as well as advanced paid courses. For example, Codecademy offers a free Intro to JavaScript course, and Khan Academy’s JavaScript course is donation-supported.

If you’re interested in testing using Python, here are our recommendations:

Initially, focus on reviewing introductory resources, before going through an entire tutorial course, or video series that you’ve chosen.

Step 3: Learn a little bit and apply it to test automation right away

Instead of learning programming first, and only applying that knowledge to test automation after, we suggest learning and applying concurrently.

After going through your chosen introductory resources, start applying them as soon possible. Install the test automation framework that works with the language you’re learning:

  • For Python, use Playwright for Python.
  • For JavaScript, Use Playwright or Cypress.
  • Use the framework that your organisation or team are already using if you’ve chosen to stick with the existing tooling.

Try using your newfound programming skills to automate simple actions, which can be opening a browser window and clicking a few buttons.

A small amount of JavaScript or Python experience will get you quite far along your test automation journey. Focus on trying things out and learning as you go. Emphasize “just in time” knowledge over “just in case” knowledge. For example, if your tests don’t require a Python “dictionary” data structure, don’t start learning the ins and outs of Python dictionaries. Your goal should be to start writing useful tests quickly, and you can pick up the specifics of the language as you go.

When choosing where to apply your new programming skills, initially focus on tasks that are either time-consuming or tedious. If you can automate even a small portion of a task that you or your team don’t like doing, the change will give you a boost of confidence to continue learning.

Note: It’s important that you skip learning about as much of the JavaScript and Python tooling as you can get away with. Don’t worry about code quality reports, build tools, linters, and so forth. These tools can be valuable in the future but they will likely be distracting and confusing in the beginning.

Step 4: Go deeper into the language as you create more tests

As you continue to tweak existing automated tests and creating new test cases, you’ll inevitably get more accustomed to your chosen programming language. For example, if you’re learning Python, you’ll quickly gain proficiency in using assertions and function definitions. This process will take time, so it’s important that you not rush or pressure yourself to become a “perfect” programmer overnight.

If you don’t have programming experts around that can help you, consider joining Slack or Discord programmer communities. You can also attend virtual or in-person meetups where you can get help from peers with experience in both programming and test automation.

Learn from your colleagues as much as possible

If you work at an organisation that uses a particular language, we recommend learning that language and its corresponding test automation tooling instead of picking a new language and new frameworks for it. This will allow you to get help from your colleagues and to start applying your knowledge right away with minimal setup required.

An additional benefit of going with your organisation’s language is that you might even have an opportunity to transition into a software engineering role, if that’s what you’re interested in long-term.

Know how to code? This section’s for you!

If you have some programming experience, you can skip the initial steps of learning to code and get results faster.

Step I: Choose a suitable test automation framework

To get started with test automation, try picking a framework that supports the language you already know:

  • If you know JavaScript, pick Playwright or Cypress.
  • If you know Python, Java, or .NET, pick Playwright as it provides bindings for these languages, in addition to JavaScript.
  • If you have programming experience in any other language(s), try to use a test automation framework from the language you already know.
    • It’s important to note that if your chosen programming language isn’t common in the test automation context, you’ll have a hard time getting team members to contribute to your automation efforts.
    • If you aren’t proficient in any language that’s both popular and accessible, consider going through the steps in the “No coding experience? No problem!” section and using JavaScript or Python. You’ll advance through the steps more quickly compared to a programming novice.

Step II: Start automating most time-intensive or tedious tasks

When getting started with test automation, you’ll get a strong boost of confidence and buy-in from your team if you start automating the most time-consuming or tedious manual testing tasks from the outset.

Use the initial automation results to collect feedback from your colleagues and any other decision-makers like your manager or technical lead. If you’ve chosen the right tasks to automate, the feedback will likely be positive and encouraging.

At this point, it might make sense to suggest spending more of your time on test automation and transition into a test automation role.

Step III: Convert more manual tasks to automated scripts

When you can spend more time on test automation, replace more and more of your manual testing processes with automated test cases. Be careful not to go overboard with automating everything—some tests just take too much effort to automate for the amount of time that automating it would eventually save.

Try to cement a culture of writing automated tests within your team. This will allow the test coverage for your software product to grow over time without your direct involvement.

What about test recorders and other no-code test automation tools?

Some tools like Cypress Studio allow you to create tests by recording actions performed in the browser. While it might seem tempting to focus on using such tools if you aren’t familiar with programming, we recommend against using test recorders when getting started with test automation. Here’s why:

  1. Cypress Studio and other recorders are functionally limited—they cannot replicate the entire set of test actions that are available to QA engineers who write tests in code. They also produce test code that can be difficult to maintain and reuse.
  2. Test recorders almost always create tests that are specific to a concrete test case. A lot of the value of test automation code is in its reusability, and you cannot reuse test code that’s too specific to a given page or UI element. Moreover, if you needed to update a feature that’s being tested with recorded tests, you’d need to go in and re-record the test scenarios. Constantly re-recording tests is time-consuming and removes many of the benefits of test automation.

For these reasons, we believe that you should start playing around with test frameworks directly in code without relying on any no-code tools. Writing code for test automation early on will get you proficient enough in programming to succeed at a test automation job. By interacting with test frameworks like Cypress and Playwright, you’ll also get a sense of what makes for a well-written test which is crucial to your future productivity.

Automate your sign-in tests with Mailosaur

Sign-in and sign-up flows are top candidates for test automation given how frequently they need to be tested and how impactful any undetected issues can be to a piece of software.

Other common options to start automating include product pages and the checkout flow, such as for e-commerce stores—also due to the high potential impact of issues not caught by manual tests.

If you decide to automate testing of sign-ins and sign-ups that require email confirmation, consider using Mailosaur. You can use Mailosaur directly in your test automation framework—we support Cypress, Playwright, and more—to validate that email and SMS confirmations are sent correctly and contain all desired information.