If you’re reading this article, the chances that your life is somehow connected to QA (or quality assurance) testing are pretty high. Maybe you’re trying to find out how to become an automation testing engineer. Well, I’ve been a software testing engineer for the last five years, and it seems like we should get to know each other because we might have common interests.
My name is Nick, and I have walked the thorny path from a manual tester to an automation testing engineer.
If you don’t understand the difference between a manual and an automation tester, take a look at this detailed tutorial with comparisons, advantages, and disadvantages.
I have often been asked about the history of my transformation from a manual engineer to an automation engineer, so I decided to share my experience and some insights.
To be honest, I am not trying to be an annoying consultant at the market, and I’m not going to insist on a particular functionality testing tool or programming language. My main goal is to help you decide where to start, what to learn, and how to make the transition from manual to automatic in the best way for you.
Before we talk about the magic formula for becoming an automation engineer, it should be noted that it’s much easier to learn automation than ever before. Many modern and simple automation tools have emerged recently, starting with the updated Selenium Webdriver IDE and the simple Catalon Automation Recorder, along with non-Selenium tools such as Cypress and TestCafe.
There is also detailed documentation on these tools with easy navigation; for example, I’ve fallen in love with Cypress and TestCafe documentation. Automation communities exist everywhere you look, and the number of Google results for these communities bears witness to this.
Along with this, the number of programming languages, automation tools, and approaches has also increased compared to 2014. Back then there weren’t many choices–pure Selenium, Java and TestNG, or JUnit. This increase in selection does not make our task easier, but rather, more complicated.
History of my own transformation from manual to automation engineer
Before giving you my subjective advice, I would like to start with my experience switching from manual to automated testing. When I tried to analyze my experience, I realized that my path from manual to automatic engineering began not with a programming language, not with automation tools, but with motivation.
Let’s go back to 2014 when I started looking for my first job as a tester. I just finished an online course that my friend was taking and, with enthusiasm, started looking for test engineer jobs right away.
My first technical interview was, to put it mildly, a failure. I was very nervous the day before the interview; I had read a bunch of stuff that got to my head. Although they asked simple questions like ‘what types of testing do you know’ and ‘what levels of existence are there,’ along with test principles, test design techniques, test login form, and SQL knowledge, something went wrong and I failed to give out good answers to these basic questions.
However, this interview made me want to better prepare for an interview, and the next time I felt much more confident. I went through several stages, one of which was receiving a test case in which it was necessary to write some positive and negative automated cases for a user registration form (using Java and Selenium).
Although I was being interviewed for manual QA, they asked if I knew anything about automation. I said “Of course!” even though I didn’t know a thing about automated testing, which is why they gave me this automation based test task.
I was given seven days to complete the test task. At the time, I’ve needed that job badly, and I really wanted to get into the company, so I tried to do my best. The plan was to connect with all of my software developer acquaintances who were in some way connected to programming and who could help me complete the test task. In 7 days, I managed to write three to four positive scripts, and I figured out how to use the Selenium IDE, basic Java syntax, git, and GitHub.
I sent in my treasured test case and hoped for a miracle. But this story is not a fairy tale and, of course, I was refused. What could I possibly write in 7 days without years of experience in automation? However, this was the exact moment when I realized that I wanted to be an automation engineer.
So what’s the point of this story? The point is that if you sit on your ass all day and you want to get into test automation without any powerful motivation, it will be a very long and difficult path, and as a result, you’ll probably give up on the idea.
Along with motivation, you’ll need to have an understanding of the following at a bare minimum: a programming language, patterns, and anti-patterns in automation testing, and automation tools. You’ll also need to understand the business value of automation and the feasibility of implementing it on a project, where to start automating and what cases to cover, and so on.
After three more interviews I was hired, and I spoke to the test manager and PM about my intentions to go into automation testing. Of course, I started with manual testing, but in my free time, I had started to automate a little. I started with some pretty simple tools like the Selenium IDE. I wrote elementary scripts, exported to Java, scribbled, and started running a little.
After 6 months, our company’s Test Manager organized Selenium and Java test automation courses, which I was invited to. After 3 months, we were able to build a test project from scratch, cover some smoke tests, connect a reporter, and show it all to management.
However, management said they didn’t need automated testing yet. Despite this, a month later I was invited to a team of automation engineers on another project in the same company. The stack had changed, and I had to retrain myself because the autotests were written in Python and PyTest instead of Java and Selenium.
Initially, the percentage of automation was around 20%, but within six months it had increased to around 60% of the main work. After this, I was invited to an outsourcing company where I completely switched to auto.
Summarizing my own experience, along with the experiences of my colleagues and friends who have also gone through this journey, I would like to make some recommendations.
What you need to learn
A programming language
Don’t get caught up in programming language ratings and trends. Choose the one you like and want to use. Learn a language that is already on your project, at least at a basic level, and don’t go into detail. Automation tests do not require a high level of knowledge in a programming language, so learning multiple languages is more advantageous than learning one in-depth.
Study with a tool that is already in use on the project. Read the code. Run existing tests. Start with simple tools (like Selenium IDE and Catalon Recorder). Explore popular automation frameworks and testing frameworks. Try different test suites. Read and run ready-made examples of your chosen project. Get a GitHub account with your test project. See ready-made solutions that already exist on GitHub and try to make ones that are similar.
These are good to know as well:
The theory of automated testing
Get acquainted with the basic concepts: the pyramid of self-tests, expediency of automation tests, patterns, how to look for elements on the page, CSS, XPATH, data-test attributes in the code.
How to learn
Try to organize courses at the company where you work (this was the most effective option for me). Our test manager had brought together a group of testers interested in automation. We drew up a lesson plan and a program that we will use to conduct classes. Then, in turn, we will prepare materials for each topic and try to adapt the knowledge gained in practice.
We’ve also designed a test project based on our work, meaning we’ve all automated a project that we all knew and had tested already. This resulted in a demo project which we showed to management. Our course lasted approximately three months, and classes were included in our working hours.
Take online or offline courses.
These courses are effective even when you pay for them out of your own pocket. You should choose a course or course designer that can apply to your own project, and try to turn around and apply your newfound knowledge to your existing project. Find a mentor within the development team, or company, or anywhere.
Convince management to set aside time for automation.
Talk about your interest in automation at the interview stage, then later with the PM and Test Manager. Be sure to show a quick result using simple tools.
Find strong motivation for yourself. You may find yourself in a better position in your company because it is profitable for businesses to have skilled engineers who can handle both manual and automation testing. Or you may just be tempted to write a program that tests for you!
Apply a comprehensive approach to learning, and immediately put any new knowledge into practice.
Start with simple tools, and learn non-stop. Use workshops and articles, follow auto communities, see GitHub project code, and try writing code.