I've put a lot of time and effort into studying automation development, but I haven't been an automation developer for long. I spent many years laying the groundwork, and now I am putting together a proof of concept for an Appium/Javamobile test automation framework.
The biggest wake-up call for me, a manual testertrying to get into automation, was that automationisn't about relying on learning a single testing tool, as it was in the old days, when Rational Rose, Segue SilkTest, and Mercury Quick Test Pro dominated. Now it's much more difficult. In order to do really well in test automation, youmustlearn how to code.
I am not saying that all QA engineers mustknow how to code. But if you're a manual tester attempting to break into test automation, your time may be better spent learning a programming language than learning the ins and outs of anautomation tool.
I taught myself how to codeand gained employment as an automation developer—and you can too. All it takes isfive difficult steps.
Why learn automation development?
Traditionally, a QA engineer's role has been a non-coding one. As a software quality assurance engineer, yourprimaryrole on the software development team is to be an end-user advocate, seeing the product through the eyes of the customer. You need to use—and abuse—the product just as end users would. You can do thisthrough processes such as exploratory testing, described in Cem Kaner'sTesting Computer Software:
“What are the boundaries expected for a certain input? What happens if you push beyond those boundaries, giving unexpected or illegal responses, just to see how the system under test will behave?”
By automating the regression test suite, you'll have more time to explore the system you're testing and how it behaves.
During April'sLean Coffee for the Ministry of Testing Meetupin Boston, I asked, "How can manual testers looking to move to automation learn how to code?" This quickly turned into another question:ShouldQA engineers learn to code?
Llewellyn Falco, author of The Mob Programming Guidebook, responded, "Everyone should know how to code! It's like reading and writing. You may not have authored a book, but you should know how to read and write."
I agree.When I was in schoolstudying software engineering, my testing was enhanced once I started learning more about the business analyst role, database development, and software development. So here's what to do:
Step 1: Pick a language, any language
It doesn't matter what you pick asyour first programming language:Java, JavaScript, Python, and even Ruby are all good candidatesif you want to break into automated testing. Here's a quick rundown:
- Selenium WebDriver/Java is a favorite pairing for testing enterprise software, and a good all-around language to know. But note that companies are still transitioning from Java 7 to Java 8, even though the latest versioncame out many years ago.
- JavaScript pairs nicely with many different JavaScript front-end frameworks, such as VueJS. Protractor was created by Google to testAngularJS apps. Nightwatch.JSand SeleniumJS pairwell with Node.JSand server-side JavaScript. Also try learning E6,the latest versions of JavaScript.
- With Python, you can quickly hack together things that work.Selenium with Pythonis a lot less verbose.
- Ruby is another easy-to-learn language. When Ruby on Rails was at its peak, developers used it whenever they wanted to create a simple web app. But there doesn't seem to be as much demand for it in automation anymore.
Step 2: Code, code, code
Not long ago I was an out-of-work software tester without much experience coding. I had some coding experience back in grad school, but that was ten years in the past. So, to get used to coding again, I worked through all of the examples in the free eBookLearning Python the Hard Way. If you need a lot of hand-holding, this is the book for you.
Working with Python alsohelped, since thelanguage has a relatively shorter ramp-up time.Then I purchasedJava for Testers, to ease me into the Java programming language. Anything byThe Evil Tester, himself, Alan Richardson, is gold.
But reading about coding is not enough. You must code! I remember when I first started trying to learn from Richardson's Selenium WebDriver in Java online course. I'd listen to the lectures and watch the videos everywhere—even on trains, planes, and subways. But because I wasn't actually coding along with the instructor, it didn't sinkin.
When you're working through an online course, if the video shows the instructor typing code into IntelliJ, you should be doing the same. In my case, I set up the left half of my screen with the video playing in a browser, while in the righthalf I typed awayand attempted to run the code examples.
If you still needmore hand-holding, consider enrolling in a massiveopen online course (MOOC).Many organizationsofferonline courses that are free or cheap. Here are just a few:
- edX, part of Mooc.org, describes itself as "offering high-quality courses from the world’s best universities and institutions to learners everywhere."
- Khan Academy, which "offers practice exercises, instructional videos, and a personalized learning dashboard that empower learners to study at their own pace in and outside of the classroom."
- Udemy, "a global marketplace for learning and teaching online where students are mastering new skills and achieving their goals by learning from an extensive library of over 45,000 courses taught by expert instructors."
Looking for information on coding in Java? EdX, Harvard, and MIT's MOOCoffer three new introductoryJava courses:
- Part 1: Starting to Code with Java
- Part 2: Writing Good Code
- Part 3: Fundamental Data Structures and Algorithms
If you are a mobile tester,learning about the inner workings of Android app development will help you figure out how to set up Appium. I also recommend the GoogleAndroid Developer's site, which:
- Walks you through installing Android Studio, an integrated development environment (IDE) for PC or Mac. Thetutorialswalk you through how things work.
- Offers free courses, such as the Android for Beginners series.
- Shows you how to create your first app.
Whilebootcamps won't make you a coder, much of the documentation for open-source tools, languages, and frameworks is available online, as are free online tutorials. It's all just a Google search away.
Step 3:Create aGitHubaccount and explore
If you haven't already, sign up for a GitHub account. GitHub is a magical place where you can examine the latest open-source automation toolsetsand receive instruction and the most up-to-date information from the creators of the tools themselves. They also provide sample tests, so others can learn their toolsets. You'll findtools such as:
- SeleniumHQ, which has documentation on all the latest bindingsof this number-one GUI automation tool in C#, JavaScript, Java, Ruby, and Python
- Appium, the Selenium WebDriver for mobile applications
- Protractor, a Node.JS-based automation tool you can use to help test AngularJS applications
- REST Assured, theJava-based framework that helps you test RESTfulAPIs
The beauty of GitHub is that as long as you allow the code in your GitHubrepository to be displayed publicly, it is completely free!
Do you have any code samples or projects that you want to include in anonline coding portfolio? Upload them to GitHub and include a link to your account on your résumé. GitHub has an extensive help section on how to create an account and upload your code. You also will learn about how code is processed, from branching to merging to creating pull requests!
Step 4: Write a quick-and-dirty automated test
Now it's time to go public by writing your first automated test on your favorite site and placing the results on GitHub. Once I got a hang of things, I started looking around for things to automate, such as Dave Haeffner'sThe Internet, a practice test sitecreated for beginning automation developers.
Do you have your own automation solution you have created? Share it, and get feedback!
Step 5: Think you know it? Keep practicing.
The most important thing is not to stop practicing to code once you're hired as a test automation engineer. Learning is a never-ending journey.
Whenever I learn something valuable, I comeup with sample code, thenattempt to write a few code walkthroughs, which I placeon my blog.I started off simply, withThe Internetas my test site. Then,after a few more months of work experience, I tried to figure out how to automate a bit of Amazon's site. From there, I started tinkering with API testing, firstwith Apache's HTTP Components, then with Postman, and finally with the JavaREST Assuredlibrary. Currently, I am in the middle of figuring out Appium Desktop, a tool I want to use to explore mobile applications.
To keep yourself motivated to continuously learn, chart your progress in a blog, thenlist it with the Ministry of Testing.
The rest is up to you
I can tell you from firsthand experience that, if you go throughthis process, you're far more likely to be hired as an automation developer. Why? Because you can prove to an employer the most important skill of all: that youare a self-starterwho is willing toteach yourself.
Want to know more? Team up with your peers. If you're in the Boston area, stop by one of the Ministry of Testing'sLean CoffeesI attend, or go to a meetupin your area. Andif you want to bounce around more ideas and best practices, leave me a comment below.
Image credit: Flickr
Keep learning
Take a deep dive into the state of quality withTechBeacon'sGuide. Plus:DownloadthefreeWorld Quality Report 2022-23.
Put performance engineeringinto practicewith thesetop 10 performance engineering techniques that work.
Find to tools you need with TechBeacon's Buyer's Guide for Selecting Software Test Automation Tools.
Discoverbest practices for reducingsoftware defects with TechBeacon's Guide.
- Take your testing career to the next level.TechBeacon's Careers Topic Center provides expert advice to prepare you for your next move.