By Yulia Tekin
When I was starting my journey as a test automation intern, there were so many questions in my mind. Such as…. “Where do I start?” “Which tools should I use?” “Which language?” How to plan your work? “What is a test automation framework or strategy?” It was a challenging time...I desperately needed some clarity, but whenever I tried to look for the answer on the internet I was losing myself even more.
Luckily for me, I found a mentor, who helped me to start by asking wise questions and letting me scope my goals and plan how I can achieve them.
As a result of this, I gained a better understanding of what a Test Automation Engineer should know and do and it helped me to accomplish my work projects. I would like to share this to help either someone who is just starting their journey or planning to grow even more in their profession. As a type of person who wants to break down everything into easy understandable logical pieces, I thought creating a roadmap would be the best way to represent this information.
By the end of this article, you will understand:
What Test Automation Engineers do
How you can actually learn this profession if you are a beginner
You will also get an awesome infographic which will help you to create your own strategy for growing into a Test Automation Engineer.
Ready? Let’s dive in!
What do Test Automation Engineers do?
Test automation is the process of executing test cases using an automation tool. Nobody wants to execute boring and repetitive tasks manually, and that is why any form of automation exists - in test automation the aim is to reduce the number of test cases that need to run manually. But don’t be fooled into thinking that there will be no need for manual testing. In contrast, well-implemented test automation will free up testers’ time for more deep and intensive exploratory and functional testing, which should improve the quality of the software even more.
So what will you do? Of course, it depends on the company and on the particular list of responsibilities you will sign up for. But, for me it looked like the following:
Learn the application domain very well and create a test automation strategy. It requires a more holistic approach therefore test automation professionals should have a really good understanding of software testing in general.
Build test automation frameworks and develop test scenarios, which requires deeper programming and technical knowledge.
Select test cases to automate the application, which can be smoke, regression, or data-driven tests. Depending on the goal you wish to achieve.
Save time for the whole team by creating tools to automate boring and repetitive tasks. For example, the automation of report comparisons or grabbing data from the Excel spreadsheet to compare it with the actual outcome can potentially save tons of time.
Interact with the whole team to understand what are the current needs, plan what to automate and what not. Discuss ways to improve the work processes even more.
How to Actually Learn Test Automation
Get a Strong Foundation in Testing
If you are new to the testing field, I’d strongly recommend first start with increasing your software testing knowledge. Yes, you are willing to be a Test Automation Engineer, but unfortunately, without understanding the foundations of the testing profession, you won’t be able to either create an automation testing strategy or pick and understand which tests to automate. Not to mention, that you will need to have a wider knowledge of the software development process and basic engineering concepts. You can start by picking software testing books from amazon or find free/paid courses on the Internet.
I also recommend the website of one of the more prominent leaders in the industry, James Bach, if you want to get a deep understanding of exploratory context-driven testing.
“Agile Testing: A Practical Guide for Testers and Agile Teams” by Lisa Crispin and Janet Gregory is a wonderful book with lots of information about agile testing foundations.
Ministry of Testing is another great resource that provides you with tons of free useful information for testers and, most importantly, the community! Their 30 days challenges are a great way to improve your knowledge in different areas of testing, to name a few:
The timeframe is totally up to you. What I like the most about MoT challenges is that they are full of actionable tasks inspiring further learning in the area. You can start them whenever you want and share your progress in the community forum.
They also have a paid subscription, which includes even more helpful information for testers. From my own personal experience, these two courses can give a decent background to a person willing to learn more about software testing craft:
There are two great learning programs on the Linkedin learning platform, which will give you a focus and structure on the specific topic taught by industry experts.
You will need to be a LinkedIn Premium user, or you could check your local library as some of them make this service free for their patrons. I know most New Zealand libraries do.
It is also a good idea to try and actually perform manual exploratory testing to get your hands dirty and get a better understanding of the process.
Which Technology to Choose?
When the time comes to technologies, it gets even harder to pick where to start.
There are so many new tools and different approaches, so it’s so easy to get overwhelmed. I guess the choice of tool depends on what you want to achieve. There are different types of applications:
Desktop applications - can be executed on a single computer, and require installation and setup. They may also be developed for specific platforms and operating systems, or for a combination of them, and limited to one user.
Web applications - in comparison to desktop applications, can be accessed by an unlimited number of users at the same time. An unlimited number of devices and browser combinations are supported which made web applications so popular these days.
API or Web services - currently there are so many services that are ready-made for developers, so they can just plug it into their code to provide extra functionality.
Mobile applications - is another type of application, that can be installed from the app store for a single user account
For each of these technologies, you need to focus on different metrics when testing and, of course, use different tools, for example:
WinAppDriver and AutoIT for desktop applications
Selenium and TestComplete for web applications
Katalon studio and Postman for testing APIs
Appium and Katalon Studio for mobile testing
I believe you should pick one type of application and focus on it.
My personal preference are web applications to start as there are a lot of learning resources, and web applications testing is in high demand. Once you master web automation, then you can go ahead and start learning another kind of application.
Which Language to Learn?
The answer to this question depends on if you are working currently or in the process of learning or applying for a job.
If you are working already, I would suggest learning the stack your application is developed in, as that would be easier for you to collaborate with the team if you write automation using the same language. Say, for example, the application is written in JS and C#, I’d pick one of these languages to develop testing suites. It will always be easy for you to tap the dev on the shoulder and ask to review your code if necessary.
If you don’t want to pick the language your work application is written in OR you haven’t got a job yet, here is the list of the most popular languages:
Java and Python are the most common languages for test automation, so you could pick one of them and dive into an enormous amount of information about them.
You can first focus your efforts on learning the basics. It’s always confusing as to where and how to start, therefore it’s always helpful to determine your learning style. Some people can learn through watching and listening, others learn best by reading and writing, some learn best by doing. There are a number of helpful questionnaires that may help you get an insight into your own learning style, here is one of them.
I found the right balance between reading books/watching short theory videos, following up with working on practical exercises. I really enjoyed courses from Pluralsight and Packt. There are a lot of good free sources, but the real learning happened for me when I picked a real project idea and tried to implement it.
The application I was working on was a web-based to-do list with the ability to send the list of done items to the Slack channel. I picked it because it was something I needed to simplify my life as I was too lazy to copy/paste my to-do list and send it to my manager each day.
By struggling to solve real problems and debugging code, I found I learned better, and this way my brain was switching to the ‘developers’ mode faster, which is so important if you are wanting to become a test automation engineer.
Here is my suggested plan for learning a language:
Find a developer, who’d be willing to give you feedback and review your code.
Pick a real project to work on and get your hands dirty with coding
All of this in parallel with learning the theoretical basics of the language in a way that suits you
Remember, once you learn one language, the second one should be much easier as the fundamentals are the same.
Which Tool to Use?
The choice of the tool depends on the choice of the technology you’ve picked previously. I will provide you with a list of the most well-known tools, but this list will never be a finished list as new tools are being developed all the time.
QTP (now renamed to HP UFT) - supporting both Desktop & Web Applications. Uses VB script
Selenium WebDriver - is the top tool for web applications
TestComplete is a tool for desktop, mobile, and web applications.
TestProject is a free end-to-end test automation platform for web, mobile, and API testing.
Appium - testing tool for mobile applications
Watir - testing tool for web applications
Katalon Studio - a tool for API, Web, Desktop and mobile testing
JMeter - a performance testing tool
If you decided to start learning how to automate web applications, Selenium could be a great candidate. I spent some time learning it but switched to TestCafe as it was more applicable to the current work project. However, this year I definitely want to allocate extra time to learn such a popular tool. Luckily, there are numerous resources on the Internet, you just need to pick one.
Test Automation Strategy and Planning
One of the most important parts of your job as an Automation Test Engineer might be to collaborate with a team of developers, product owners, and product analysts for the purpose of defining a testing strategy for existing and new functionality. Unfortunately, many people are mistaken by a dream that they will automate everything and won’t need testers anymore. It’s true that in the current fast-paced environment, test automation is so important, however, nothing can replace a good exploratory tester. The quality of the software would be higher if testers could skip routine repetitive tasks and focus on exploratory and functional testing.
The need for testing is high when new features are being developed. Testers need to look at the new features from all angles, apply different heuristics and discover the most costly bugs in the application. In an ideal situation, test automation should be written while the feature is being worked on and should cover the main feature functionality. This way, once it’s ready to go to production, automated scenarios will ensure that a feature will continue to work as expected after the next release.
You will need to answer the following questions to build the test automation strategy:
who will be involved in test automation project
which tools to use
how will test automation fit into the current release management model
how will you shortlist test cases for test automation
what kind of testing environment will you need
how will you execute your tests and track the results
But before you begin any planning, you’ll need to ensure you and your team understand what is the goal you are trying to achieve with test automation. You want to document all decisions made, and have a feedback loop to continuously improve the test automation strategy based on lessons learnt while implementing it.
“Setting a foundation for successful test automation” is a great free course from Angie Jones, that can help you to learn how to develop a test automation strategy, as well as explore other considerations about starting test automation in your organisation. There are also a number of great resources about it on the Ministry of Testing’s website, for example, a “Leading Test Automation Strategy” workshop by Dana Aonofriesei.
Note, that a testing strategy should be a continually evolving document that will be improved with time by repetitive analysis and collaboration with the team. By trying to make it perfect the first time, you will lose time and energy when it comes to doing the actual work.
Integration With Build Management Tools
As a Test Automation Engineer, you will definitely need to gain a deeper understanding of DevOps and agile methodologies. An ability to use build management and continuous integration tools is an important skill. You will need to understand how you can achieve reliable continuous delivery of new features when the build and a lot of the testing are automated. There are lots of resources on the internet to cover this topic. Personally, I really liked Katrina Clokie’s book “A practical guide to testing in DevOps” and a free “Continuous integration with Jenkins” course from Test Automation University.
Building Utilities/Tools to Support Day to Day Testing
The other thing you can do is to create utilities and tools to help automate repetitive and boring tasks, or get CI/CD system components wired up. This can be anything that consumes lots of time, or it can be a task that makes your team workflow easier, and reduces manual overhead. Some examples of what tools you could build:
report comparisons tools
This list could be endless, you should always be looking for areas for improvement as automation is all about efficiency. For example, my team used to share the test automation reports manually by copying the file and uploading it into the specific folder in the cloud. You can afford to put up with doing it once a month, but when it becomes your daily task the first thing you wish to do is to automate it. To avoid the manual overhead, I wrote a script which automatically uploads a file to s3 bucket , and then sends a notification to a Slack channel.
Other things to learn
This is an ever-changing landscape, and one that requires continuous learning and a growth mindset. In the IT world, there is a never ending list of technologies you could learn to upskill even more and really sharpen your skillset. For example, you could add to your learning list:
Acceptance Test-Driven Development
Behavioral Driven Development
Mobile application testing
But be aware that you can’t cover everything at once, so focus first on the plan you created for yourself, and then focus on the advanced topics once you feel more familiar and confident with the basics.
To summarise, where should you start if you want to learn test automation?
First of all, I would suggest realizing that if you need to study this profession and become a Test Automation Engineer, your motivation should be high as the learning process would take a lot of commitment and time.
Create your personal learning plan, using the roadmap provided for the inspiration:
Get a strong foundation in testing
Pick which automation technology to learn
Pick a language
Choose a tool
Learn about test automation strategy and planning
Get a good understanding of DevOps and Agile
Try and build a utility/tool to support day to day testing
Cover extra topics such as performance and mobile testing, TDD, ATDD, and BDD.
Research the learning resources and pick the most relevant to your journey
Find a mentor, learn to think like a programmer and practice, practice, practice!
Be ready to fall and stand up over and over again, keep yourself motivated
Thank you for letting me share the roadmap with you today. I hope it encourages you to build an action plan for becoming a test automation engineer. Start small, review your progress on a regular basis, and you will get there!
Yulia discovered her passion for test automation after restarting her career as a software tester. She always strives for quality and automation to ease the entire development process. More information about her transition to a test automation developer can be found on her blog.