What tool should I learn first?

I’m from a development background, so have no problem when it comes to coding. I’m still a beginner when it comes to automation.

Currently I’m playing with selenium, but what other tools would you recommend for people learning the automation craft?

The main question is:
What do you want to test and which language?

There are several Visual / Regression Testtools,
Applitool Eyes or backstopJS for example.

UnitTesting with the framework of your choice etc.

1 Like

In general, I’m agnostic about language. At the moment, it’s an exercise of getting as much breadth as I can on what common tools are out there!

1 Like

Selenium is pretty good, and regularly used. It’s definitely the industry standard for web tests. Avoid older proprietary tools (QTP/QC/UFT/Loadrunner) like the plague.

Cucumber, if doing user facing tests, is probably the other tool you’ll see a lot. It’ll run your tests, great reporting, hooks into CI pretty nicely, and makes very readable tests. You can get it for C# (specflow), Ruby, Java, Go, and lots of other languages.

I’d say it’s worth finding a nice assertions framework, too. I tend to code in Java, so I use AssertJ. For Ruby, there’s the RSpec Expect syntax which is nice.

Actually, Rspec in general is great, it’s readable unit testing for Ruby.

If you’re doing ruby based Selenium, check out Capybara and Site Prism. They’re Ruby based DSLs which will make your life a lot more pleasant. Site Prism is great for doing the page object pattern.

Some more advanced topics if you’re interested:

For performance testing, JMeter is more common, but I much prefer Gatling. I’d rather write Scala than XML, but maybe that’s just me…

A (relevant) plug for myself, I’ve been doing a lot of stuff about cloud infrastructure testing recently - here’s a summary a colleague wrote up. ServerSpec is the most popular tool, but there’s also Goss and AWS Spec.

There’s also something pretty cool called property based testing. In this you state the outer bounds of your functions/APIs, and the framework fuzzes lots of random data at your function and tries to find breaking edge cases. For python you can use Hypothesis, and for Java, QuickTheories.

Phew! Hope this is helpful. I’d post more links, but apparently new users can only post 2 links per post…?!


Problems first, Tools second

If you want to be a good Automator I would recommend you work on your testing skills and ignore APIs and libraries, to begin with. Learn how to:

  • Improve your test analysis skills
  • Discover your project and products context
  • Break down an application and identify risks
  • Determine which risks might benefit from automation and which don’t
  • Focus on how to use interfaces to your benefit so that you get as close as the thing that you want to test and reduce overheads

You can do this through the use of heuristics, mental models and oracles.

Once you have identified your risk and how you want to mitigate it, choosing the right tool for the job becomes a lot easier and results in using a tool that works for you rather than against you. Don’t be seduced into learning a specific tool because it’s popular in the industry or works for someone else’s context.


Just adding a bit to what you said: sometimes, there is no “best tool”… just the one that makes you more confident to get the job done.

1 Like