Over the years friends and former colleagues have asked me for test automation training advice. A common comment I hear is that they find it difficult to lock in a goal to learn only one technology and continue building off it. Then, along their journey, they easily become sidetracked. If you are experiencing the same struggles, I’ve included some needed resources for test automation newbies.
For many people, this phase is the hardest — just finding out how to get started, finding help when roadblocks occur, and staying on track. There are a few steps you need to take to prepare:
OS Requirements an OSX, Linux, or Ubuntu operating system will be easier to set up compared to a PC (not impossible).
Basic Fundamentals of Unix - learn how to install and manage command-line tools.
Ruby Version Manager(RVM) is a command-line tool which allows you to easily install, manage, and work with multiple Ruby environments, from interpreters to sets of gems.
Browser Add-ons(Firefox) These add-ons will help find and verify CSS, HTML Elements, and XPATH locators needed for your tests.
Github Learn the basics in 15 minutes.
Here, it's almost always a matter of personal preference; use whatever makes you feel the most productive. Some suggestions:
Success in test automation requires a programming background. Traditional manual testers have very little to no programming background. If you're a non-programmer just starting to learn how to program, I’d encourage you to stick with one programming language until you’ve mastered the basic concepts. When you have a solid programming foundation, most of the concepts you learn in one programming language can be applied to any other language. The biggest problem for many is understanding where to learn a programming language, and then, choosing which one. Ruby and Java are very popular in the world of test automation. Just select any language that you are interested in learning, roll up your sleeves, and jump in. I love Ruby, so as an example, let’s start there.
Lynda.com Fundamentals of Programming
Codecademy is a free interactive course that presents small reading sections along with coding challenges
Codeschool has video lessons, coding challenges, and screencasts.
Continue challenging yourself by completing the interactive exercises using Rubymonk
Beginning Ruby by Pete Cooper
Each learning method has its benefits and drawbacks between live and online self-paced courses. For me, it’s all about the flexibility as long as the online course has a support structure in place when a roadblock occurs. For many, face-to-face communication really does enhance the whole experience and provides for a better learning process. It’s your choice.
Behavior-Driven Development (BDD) and Cucumber Training Material
Learn BDD and Cucumber by attending public courses or scheduling an in-house course from Cucumber.io Training.
Start Developing Test Automation Scripts by Jeff Morgan using Cucumber and Watir.
Acceptance Test Driven Development (ATDD)
Learn ATDD. Introduces Cucumber and Ruby scripting.
Receive weekly a email covering how to use Selenium from Elemental Selenium.
Learn how to start off on the right foot with Selenium in this simple, actionable, and totally free 5-day Selenium Bootcamp by Dave Haeffner.
Looking for in-depth training? Check out Test Automation Bootcamp that teaches test automation using Ruby and Cucumber over eight weeks.
There’s no way around it. I highly recommend learning good programming principles because automation is a software development project. Over the years I have found that following a relatively small number of fundamental guiding principles has helped me become a much more effective automation engineer.
is the single most fundamental tenet in programming. Avoiding repetition results in maintainable code. If code is going to be used more than once, then make it a reusable component
Coding Standards — Commenting, naming conventions, organization of tests, modular or independent.
is pretty straightforward. Simplicity (and avoiding complexity) should always be a key goal. Simple code takes less time to write, has fewer bugs, and is easier to modify.
A conference is an opportunity to meet industry experts, others like you, and learn more about your future craft: test automation. Finding a conference tailored to your needs can be a daunting task. I recommend attending one of the three conferences listed below or find a conference that meets your needs. I attended a software testing conference a couple of years ago and it changed my life. I left wanting to be more involved with the industry.
An annual conference that brings together Selenium developers and enthusiasts from around the world to share ideas, socialize, and work together on advancing the present and future of Selenium.
A biannual event covering the hottest topics in the industry including Agile testing, performance testing, test automation, mobile application testing, and test team leadership and management.
An annual test automation conference hosted by Google. It is a great opportunity to present, learn, and challenge modern testing technologies and strategies.
Getting in touch with an industry expert is surprisingly easy in this tech-savvy world. The easiest way to connect with these experts, in my opinion, is by attending conferences, in person. The value of face-to-face conversation is untouchable. I’ve found most industry experts hold weekly office hours to talk about learning hurdles, troubleshooting, guidance, and more. Start connecting now without having a physical conversation with the individual (definitely sounds a little creepy) by following them on Twitter or personal blogs. If you are searching for an expert, I recommend:
Selenium @TourDeDave (Dave Haeffner)
Cucumber @chzy (Jeff Morgan)
Software Testing @jamesmarcusbach (James Marcus Bach)
You may have better luck with a local meetup, and requesting an Automation Getting Started session or a hack day workshop. Meetups bring meaningful face-to-face interactions with people who share your same interests, values, and beliefs. Thus, it is important to surround ourselves with a community of supportive people. You can:
Find out what's happening in Test Automation Meetup groups around the world and start meeting up with the ones near you.
No local test automation meetup? Start a Test Automation Meetup group.
You can make use of open source to perform proof of concept activity and learn about your target technology. Evaluate the selected technology based on usability, learning curve, and if the technology can be used in your testing process.
Capybara is a library written in the Ruby programming language for testing browser applications.
Appium is a testing framework used for native, hybrid and mobile web apps automation.
Selenium is a suite of tools to automate web browsers across many platforms. What you do with that power is entirely up to you.
Watir is the most elegant way to use Selenium WebDriver with Ruby.
It is impossible to list all the available test automation technologies. These are my favorites.
I am a huge fan of BDD, even if you call it Specification by Example or Acceptance Test Driven Development (ATDD). Learn how to take your testing to the next level using the concepts of BDD, and one of the many tools you can use to implement it with Cucumber or RSpec. This is one of the most powerful tools that help teams use the automated tests as both executable specifications (before coding) and documentation of the implemented system (after coding). Book recommendations:
Behavior-Driven Development (BDD)/h5>
BDD in Action by John Ferguson Smart
Specifications by Example by Gojko Adzic
Cucumber and Cheese by Jeff Morgan The Cucumber Book by Matt Wynne and Aslak Hellesoy
The RSpec Book, by many contributors Online Documentation Better Specs
This article isn’t a complete list of resources — just a starting point for test automation newbies. It would be impossible to list every technology related to test automation, especially when new technologies are born every day. But what’s provided here is a good start. Greg Sypolt (@gregsypolt) is a senior engineer at Gannett and co-founder of Quality Element. He is a passionate automation engineer seeking to optimize software development quality, while coaching team members on how to write great automation scripts, and helping the testing community become better testers. Greg has spent most of his career working on software quality – concentrating on web browsers, APIs, and mobile. For the past five years, he has focused on the creation and deployment of automated test strategies, frameworks, tools, and platforms.