May 21, 2019 by Nicoleta Ungurusan
Learn Automation Testing. Start with the Basics.
Tips & Tools to Start Learning Automation on Your Own
This article will cover guidelines and tools to start learning automation on your own, as well as tell the story of my transition from a manual tester to full-time automation engineer and eventually to a trainer.
I started working at Cognizant Softvision as a manual tester. I quickly realized that staying relevant in this field means constantly learning and updating and incorporating new skills, as the challenges that you need to meet as a tester are always growing greater. And already in some cases, manual testing isn’t enough. The role of software testing has changed. QA specialists should be aware of how the code works and, moreover, how to write it.
I don’t want to get too much into the benefits of automation since there are plenty of threads dedicated to this alone: you know it saves time, money, and it’s reliable. But you probably also noticed that lately, it’s in high demand because more companies adopted automation to improve test efficiency and it will become even more popular in the coming years as more organizations shift to Agile. Testers who know how to code and are familiar with tools such as Selenium and Appium are the ones who will stand out.
With the current industry shift in QA, thousands of experienced manual testers are facing this challenge. And what options are we left with? Well from my perspective I see only two viable options. The easiest one is to continue with manual and eventually take up coordination roles or take up the challenge and dive into the real software industry – coding.
“You simply cannot get by if you continue to apply yesterday’s testing methods to tomorrow’s technology.”
At first, I was also resistant to learning new skills outside my area of expertise. Not that I didn’t enjoy learning, far from it, I was always curious and proactive in reading about the latest testing tools and gadgets. But, I just hated the idea of starting over, being a novice again. Especially after two years passed and I felt like I was finally getting the hang of everything and I was confident in what I was doing. I thought about keeping at it, being the best I could be and one day switch to a leadership position. I’m sure some of you are in this exact situation, maybe with much more experience than I had at that time, and you’re considering if it’s worth starting over.
But it doesn’t have to be all or nothing!
What would be a reasonable solution? The context of switching to automation at your will without having any knowledge won’t happen for most of us. It didn’t happen to me either. So in the beginning and for a while you’ll have to start working on your own, and on your own time. I know there’s simply not enough time and you’re too busy running manual tests, you don’t have enough knowledge or experience to implement and you’re not even sure where to start.
If you are currently employed as a tester, see if you can bring the skills you are learning into your job. It’s a good way of applying what you learned, get some utility out of it and eventually make your life easier.
BEFORE YOU BEGIN
Below you’ll find the roadmap of getting started on your own, broken down with answers to some of the most popular questions:
Do I need to learn how to write code?
Automated tests run from scripts, and the scripts are, by definition, code. There are some intermediate steps you could take to postpone the issue at hand but sooner or later you’ll find yourself in the same place.
What are those intermediate steps? Record and playback, many tools allow it (such a Selenium and Appium). The drawback? Unless you update them, they’ll always run the exact recorded sequence with no flexibility, and even the slightest change in the application would break them. Personally, I don’t recommend it, since it’s not scalable at all, but it’s still a good place to start learning, simply by updating existing scripts then writing them from scratch.
So, what programming language should you choose?
I don’t have a technical background. Can I learn how to code by myself?
This was the reason that it took me so long to start. I had little experience with coding. Everything that I knew was my high school experience which was pretty rusty after five years. And even back then I wasn’t particularly good at it.
I just felt I have nothing to give to the world of coding compared to the many people who already had more experience than me and could bring more value than I could. So, while not convinced but also not wanting to feel like I gave up, I started signing up for java internal courses. Why java? It was the most popular at that time, not knowing any programming language picking something “mainstream” was better than nothing.
My problem was that I found myself merely watching and listening to the lectures. Because I was not typing out the exercises side by side with the instructor, playing with and figuring out the code, nothing was really sticking, so I became frustrated and gave up several times. I tried a couple more courses from different sources thinking I haven’t found the one that works for me. Eventually, I figured it out. The problem was not with the courses but with the study method I applied. In order to learn to code, you can’t passively listen to someone describe his or her code. You need to type it out yourself, experiment with it, and refactor it. Only then can you truly understand it.
Here are some references that can be used for studying when trying to learn:
https://www.codecademy.com, Internal courses, Udemy, YouTube
Use that programing language in practice. Start with the basic arithmetic operations so you get used to the syntax, then get into more complex algorithms. You should keep practicing until you’re comfortable doing stuff like string manipulation, searching, and sorting.
Helpful links and resources:
- Download an IDE such as intellij or eclipse. This is just a platform to help you write, modify, compile and debug your code.
- Try a site with programming problems where you can start practicing. I like this one because problems can be solved using any programming language: https://www.codeabbey.com/index/task_list
CHOOSING YOUR TOOL
Once you got that out of the way, it’s fair to consider that the hardest part was completed. It’s time to choose your tool.
- If your application is web-based, then Selenium is the best choice for that, as it supports functional automated testing across different browsers.
- Appium is an open source test automation tool that supports native apps automated testing in major mobile platforms like iOS and Android.
- If you are interested in learning API Test automation, then SoapUI is the best candidate.
- Interested in learning Performance Testing? Start with learning JMeter.
All of these tools are open source, with plenty of guides to support them.
Confirm that your choice will work in your specific environment if you want to apply it in your project (and I highly encourage you to use it in your project), then integrate the tool you selected in your IDE. For this part, stack overflow is your best friend. If you can’t use your project or you don’t want to, then you can automate another site, like Facebook, a shopping site, booking.com, etc.).
Once your setup is done, start with the most simple things, the login process in your app. This part will introduce you to the concept of element ids, tags and xpath. Find the selector of the username and password field and Login button, enter data into it and perform a button click on the Login button. This should be your first test.
Keep it simple. Make it work if errors come up. Once it starts working go through each and every line of code you have written for this and try to understand its need and importance.
Keep implementing things and keep learning. Don’t forget you can also use the recording tool, and Google is your friend whenever you get stuck.
Once you have some tests written and you gained some momentum, you should look into project architecture, which is just a standardized way of organizing your code.
SEIZE YOUR OPPORTUNITIES
Recognize opportunities when you see them. Don’t wait for someone to approach you and offer you a position. Be proactive, start applying what you studied in your project. Your curiosity and persistence will speak volumes and you might get the ball rolling for starting an automation framework within your project.
In my project, there was already a team that was doing automation full time. I started slowly shifting to 20% of the job involving exposure to automated testing and 80% manual. My first tasks consisted of fixing failing tests that needed maintenance, and eventually write new scripts myself. After a couple of months, that time grew to 50% automation, and in a year the client finally gave his clearance for a new spot in the automation team. The switch happened easily because I was already comfortable with the project, the tools, and the team and the way they were operating.
It was hard in the beginning. I felt behind compared with all the things my colleagues knew and it was overwhelming. I felt unsure of myself even after working at it for more than a year. But, like I was told over and over again in my times of uncertainty, it takes time and patience to learn the craft. Also, no matter how good you become, there’s always more to learn, so take comfort in knowing even the experts don’t know it all. But there are a lot of resources at your disposal. there is no lack of help available at any time when you have a question or you’re just looking for some guidance.
Find a mentor
Speaking of guidance, another thing that contributed largely to my success is that I found a trainer. While I was trying to learn java and not really managing to stay consistent, I looked around for someone who could answer the questions I had from direct experience.
Don’t wait for someone to pull you aside and say, “I’m going to teach you how things are done.” Target someone within your reach that you aspire to be like. If there’s someone in your network who’s doing what you want to be doing one day, reach out to them. You don’t have to walk up and say, “Will you be my mentor?” Just establish a relationship and ask for advice. Nothing encourages a mentor to teach more than a student who takes what they learn, applies it, and then comes back for more.
How to be a good student?
Have the right attitude. Aside from your persistence and curiosity that I mentioned earlier, stay humble and be willing to be wrong. You have to be open to hearing feedback and learn from it.
For example (and this is something I can relate to), when someone points out a better way to refactor some piece of code that you wrote, don’t say something along the line of “Why refactor it? This already works.” I know your code is your baby, but this attitude does not leave room for improvement and you might just find yourself getting stuck with something that just barely works.
What can you do besides finding a mentor? If you lack the discipline to work consistently and maintain a study schedule, find a person who holds you accountable for your work. A coworker, a friend, a family member – someone to keep you in check.
Once you achieve the level of success that you desired keep in mind that technology is always changing, and it’s very easy to forget that fact if you have been at the same job for a while. Tech talks, code camps, and other meetups are a good way to keep up with what’s happening with the software industry and latest trends. Try to go as often as possible. Also, read articles, watch videos, go to presentations, be active in the community, and, most importantly, stay curious.
I leave you with a final reminder of the major steps: Start by choosing a programing language, practice with it until you gain some confidence, choose a tool for the kind of automation that interests you, start with the most basic tests, and try to apply what you learn in your project.