How to learn automation from scratch

@shariff asked on Slack this week

I’m looking to learn automation from scratch. Other than mobile automation (xcode and android for apps) and cypress, what else should I learn, or what do you suggest are THE automation languages / framworks to learn? thanks

We’ve got a few Club Posts To Help You Get Started With Software Testing And QA which includes How do you choose a programming language for software testing automation?

For automation, getting started from scratch, before even thinking about a language, can be a bit daunting.

If you were advising someone who wanted to learn automation from scratch, what’s the first bit of advice you would give?


Even if I have an extensive background with IT and code/tools, I feel writing code is annoying in general.
To be less daunting I:

  • set up a goal or have a goal set to me - a problem;
  • treat that as any testing project: find the context, get informed, set up logistics, learn, experiment, explore, split the work into sessions, get some break in between, report or talk to someone from time to time;
  • get into it & stick with it until it’s finished - some things can take hours, some days, others months;
  • do not aim for other things than finding a first solution to the problem; it can be the worst/dirtiest solution…
  • analyze from there if it’s worth pursuing: improving the solution, changing to a different tool-set or language, changing to a different approach, throw it away and be happy with the journey, use it for the intended purpose and be happy with it;

Everyone learns differently, but finding a mentor was key to me learning the basics of test automation.

I was lucky when I started my career that a senior member of the team was willing to spend a couple of hours a week with me to talk through coding basics and then using those coding skills to write real tests against our automation. The important bit for me was that I understood what I was testing - it wasn’t an abstract problem to solve through code.


Besides the actual programming/scripting language that will be used, I’d suggest to get familiar with the applicable automation methodologies used for the target automation type (desktop GUI, web browser, mobile web), for example object/element location by IDs or class names, visual OCR object recognition, XPath, CSS selectors, jQuery/javascript/DOM, keyboard shortcuts, mouse control (movements, clicks, & X/Y coordinate system). All that is equally important to the actual coding in the eventually selected language, in understanding the approach of how to do things. On the web side, having an understanding of the DOM and javascript can augment one’s abilities to do automation above what you may be limited by core Selenium/WebDriver.

1 Like
  • Learn why people automate, what problem(s) are you trying to solve?
  • Find the simplest way to solve that problem, this could be using a tool, or coding language (Ideally something that is easy to setup or has lots of helpful documentation to get you going.
  • From here try and solve a few more problems with the same tool or set of scripts, this could be running the test with specific test data or against a different development environment, or running the automation in the cloud (not on your machine).
  • When you run into problems you don’t know how to solve.
  1. Read the documentation first
  2. Second google for answers
  3. Third reach out for help with specific questions

Like others have mentioned finding a mentor or someone who is a step ahead of you can dramatically increase the speed in which you learn. If you want to learn from my mistakes, I’m giving a talk ’ I’ve Made Huge Mistakes in Test Automation, so You Don’t Have To at Test Bash New Zealand online - Where I’m sharing my automation journey up until now with lots of lessons learned!

1 Like

Here is a the recording of a talk I’ve done a few times - hopefully lots of encouragement and tips for anyone looking to have more automation as part of their role:-

1 Like

I’ve got a different take. While I agree to all the things that others have said, if you really wanna learn automation, my technique would be to

“learn to write a simple app using the framework you are working on”. For example, if you are learning writing UI tests for mobile apps, I’d recommend writing a simple hello work app or a calculator app using the same framework.

This would help understand the actual framework well enough for you to them build your automation capabilities on top of it.

This has been my advice to anyone who’d wanted to learn automation.

Would love to know what others think about my take.

1 Like