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.
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:
- 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.
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.
If you’re interested in testing using Python, here are our recommendations:
- We definitely recommend the comprehensive Python tutorial that’s part of the Python documentation. You might want to skim over some of the sections and come back to them later to look up specific things.
- Code academies. Codecademy offers a free Python course, and freecodecamp’s Python for Everybody curriculum is donation-supported.
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.
- 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.
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.
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 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.
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:
- 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.
- 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.