Software engineer/QA tester

3 ways to be more marketable as a test automation engineer

It's a brave new world for quality assurance (QA) professionals, with plenty of opportunity out there for test engineers who are willing to buff up their personal skills to meet market demand for professionals who grasp highly automated testing processes.

"Whether the transformation initiative is called DevOps or agile, the impact to the tester is that testing must be automated and repeatable," says Wayne Ariola, chief marketing officer at continuous testing firm Tricentis and a longtime QA expert. "The time cycles available for testing have significantly compressed. No longer do we have the option at the end of a development cycle to execute multiple weeks of testing. Testing must occur in line with the iterative delivery of software, and the assessment of the 'risk of the release candidate' must happen in near real time."

So what does that mean for QA pros hoping to ensure both gainful and profitable employment in the coming years? Contrary to early murmurs years ago that the automation of DevOps was going to put testing on the developers' desk and put QAs out of a job, the truth is that organizations still badly need testing professionals in their ranks.

The thing is that they're no longer responsible for running the tests so much as designing them. The ones who are well-paid today and who will continue to reap the rewards in the future are the ones who understand disciplines such as risk-based testing, model-based test automation, and test data management; who truly understand the environment of the extended system under test (SUT); and who are familiar with technology such as service virtualization, says Ariola.

It can be a difficult transition for those who have been in traditional testing for a long time, says T.J. Maher, senior QA engineer for Ahold Delhaize and a TechBeacon contributor.

"The most difficult thing? Realizing that if you are an automation engineer, you are not just QA anymore. Congratulations, you are now a software developer! As an automation engineer, you are writing software to test software." 
T.J. Maher

How to write better functional test automation scripts with native object identification

Code like a developer

The crux of what should be driving QA professionals moving forward is coding, says Nikolay Advolodkin, automation test lead for Fulcrum and CEO of Ultimate QA.

"It may not be sexy, but I strongly believe that the next generation of test automation professionals must hone their development skills."
Nikolay Advolodkin

This doesn't necessarily mean that every test automation engineer needs to learn how to code step definitions, but at the very least they should be able to write in business-readable, domain-specific languages such as Cucumber's Gherkin if they want to be meaningful contributors to the continuous delivery process, says Evan Jones, quality assurance engineer for the Nerdery.

"A lot of long-term manual QA testers have a sort of fear or aversion to coding. It can definitely seem overwhelming; most of understanding code is seeing it in action as you are developing, and this is rarely seen from a manual tester's point of view. But the code used to write automation suites is generally not very sophisticated and is straightforward."
Evan Jones

And once they've gotten their hands dirty with a simpler language, testers may find that their fear is alleviated simply by getting a handle on the basics, such as understanding how code compiles, using an IDE, and familiarizing themselves with GIT flow, Jones says. This can be a beachhead for diving into the more fundamental disciplines of development.   

"It's a whole new world, with all new disciplines to learn," says Maher, who encourages newbies to start figuring out what it means to write clean, readable code, how to refactor it, how to maintain it, and how to participate in a code review.

"For that first year, you will be floundering like a newborn. Enjoy this time! For this period, you will have the freedom to make mistakes. Make sure to ask all the questions you can to the other developers around you, and always listen to the answers given to you." 
—T.J. Maher

Design systems like an architect

But simply understanding how to code is just one piece of the puzzle. If that were it, large organizations would simply divert developers into the testing ranks and be done with it. What a skilled test automation professional brings to the table is not just coding skills, but also all the domain expertise of what it means to design a meaningful set of tests. Even as automation engineers learn the vehicle by which they will build the automated tests, they should also be honing their ability to ask and answer the "why and what" of test automation, says Bas Dijkstra, an independent consultant in test automation and a TechBeacon contributor.

"It's easy and tempting to start automating right away when given the task, diving deep into the 'how,' to create beautiful test automation, yet what is so often forgotten is that creating these tests isn't a goal in itself."
Bas Dijkstra

"Test automation is only a means of supporting and making more efficient the overall testing and development process. Without the ability to take a step back and ask, 'Why do I want to use test automation in the first place?' and, 'What tests am I going to automate, at what level, and to what extent?' there's a big risk of creating wonderful automated tests that add nothing to the bigger picture of more efficient testing and development," said Dijkstra.

Indeed, test automation engineers should be acquiring the skills they need to design whole systems that operate with purpose.

"At the end of the day, test automation is a system," says Ultimate QA's Advolodkin. "The test automation professionals that can build the most robust and flexible system are those that win. These individuals are capable of expanding their test automation efforts on a regular basis. These professionals rarely hit plateaus. Their test automation runs faster, tests more of the application, and reveals more issues. This can only be done with excellent development skills."

Burn the midnight oil

Acquiring the coding and design skills necessary to thrive will take a multifaceted learning approach, both at work and at home. This means seeking multiple educational opportunities on the job, in the classroom, at conferences, and on the couch, through self-guided learning.

"Self-guided learning is critical because, unless you are actually taking time to expand your knowledge about your work, you will never know how to get ahead."
—Nikolay Advolodkin

If you are just focused on your daily tasks at work, you may never lift the blinders to see what's around you, Advolodkin said. He said he started learning how to use Docker with Selenium. "That truly changed how I do automation. It's not something that I was doing at work." 

For those who need more structure to their learning, classroom training may offer an extra push from teachers or peers. And those who want the best of both classroom and couch learning can take advantage of the surge in massive open online courses (MOOCs) over the past half-decade. MOOCs combine the formal structure of a course with the self-pacing of at-home exploration.

Meanwhile, on-the-job training lets test automation engineers learn in quirky real-world environments that are usually way more complicated than theoretical examples offered by teachers.

Regardless of where the knowledge comes from, those who have been there and done that emphasize that QA pros who want to get to the next level will need to commit to putting in a lot of extra hours. That's time spent not just learning, but also experimenting with the technology and practicing coding.

"How do you perfect it? Only by practice, practice, practice, nights, weekends, and holidays."
—T.J. Maher

In the workplace, Advolodkin suggests starting simply by creating a single automated test, cleaning it up, making it stable, running it regularly and then moving on from there.

The real-world work environment also provides an extremely important component: access to peers who can help bring skills up to snuff. And not necessarily peers in testing. For example, Dijkstra says that he frequently sees testers struggling with looking at applications from the perspective other than that of the end user. For such folk who can't grok the under-the-hood elements of the application, it may help to start to reach out to developers more often.

"One way to overcome this is to talk to developers more often, have them review your automation approach, and have them show you what the internal structure of an application looks like," he says. "Is there an API, for example, that exposes business logic that you're currently testing through the UI? If so, there's an option for more efficient automation right there."

This example underlines Dijkstra's belief that the most effective way he's found to improve his test automation skills is by learning from people more experienced than he is.

"This I do by reading their blogs, listening to podcasts and interviews that feature them, attending their talks at conferences, and interacting with them both in real life and through social media," he said. "I keep being surprised at how open and approachable all of these world-renowned experts are. Put that to good use!"

Getting more marketable: Hit the books

Our panel of experts offered a great beginner's list of books, courses, and online sites they use to hone their test automation skills. Here's where they suggest starting.

T.J. Maher's suggestions

"I signed up for Alan Richardson's Selenium WebDriver with Java course back in 2013, and he is still updating it," Maher said. "It was the best $299 I ever spent. I can credit this course and the code I was able to produce because of it for my first automation development job at Fitbit. If you don't know Java, study Alan's Java For Testers."

Evan Jones' suggestions

"Codecademy has been my go-to for picking up new code languages and other miscellaneous code-related tasks. They have courses from the most basic level, so anyone can participate," Jones said. "Cucumber and Cheese: A Testers Workshop, by Jeff Morgan, is a great resource to understand the benefits of agile, [behavior-driven development], and automated tests, and it also provides a step-by-step guide on how to set up an automation test suite."

Nikolay Advolodkin's suggestions

"Watch videos from developer legends such as 'Uncle Bob' Robert Martin at CleanCoders.com," Advolodkin says. "Read books such as Clean Code: A Handbook of Agile Software Craftsmanship and Head First Design Patterns: A Brain-Friendly Guide."

How to write better functional test automation scripts with native object identification
Topics: Quality