If there is one new skill every QA professional needs today, it is this: the ability to write a test script.
The demand for testers who can write at least a little bit of code is the logical outcome of automated testing, which requires QA pros to script the tests they want the software to execute.
Online job listings for software testers offer irrefutable evidence of the need for scripting skills. Read through the ads on sites like Indeed.com, and phrases like "QA automation scripting skills," "write testing applications from the ground up" and "good scripting skills in at least one common language" come up all the time.
Conference presenters like to weigh on this topic, too. "Try Ruby," they say. Learn to script – employers are looking for testers who can code." No matter who delivers it, the message is always the same: If you lack the skills to write a test script, you are falling behind your software testing peers. But what is the best way to acquire these scripting skills—especially in an economy where employers are reluctant to pay for formal training?
I asked Dave Haeffner how testers looking to learn how to write test scripts should best go about it. Haeffner now runs the QA consultancy Arrgyle, in Alexandria VA. In his prior job as a senior quality assurance analyst at online financial services firm The Motley Fool, he set up and oversaw their automated Web testing infrastructure.
Seeking a starter language
The challenge is not in the newest features. It's getting people educated to use the [testing] tools and frameworks.
Dave Haeffner, Chief Arrgonaut at Arrgyle
Haeffner had a lot to say about today's software testing and the skills it requires. "To do testing well [today], you have to learn a programming language." But how you gain that skill is another story, he said. "There is not a good path mapped out."
One place testers often start is with the language of the application under test. If it's written in Java, they think about learning Java. That way, the developers on their team could pitch in on writing the scripts. "But I have never seen that work out all that well," Haeffner said. He noted that this line of thinking – learn Java because the app is written in Java – is commonplace among QA pros learning programming skills for the sake of testing.
But when reality sets in, they are more likely to opt for languages like Ruby or Python, which are less difficult to learn. Faced with this decision when working at The Motley Fool, Haeffner chose Ruby. He taught himself, keeping just a few steps ahead of his team.
Haeffner said that even if your employer agrees to foot the bill for formal training, most of the programming language classes out there aren't aimed at testers. They are for software developers. Testers who enroll in these courses will no doubt learn to write code in Ruby. But their newly-acquired skills may have limited relevance to their needs as a tester. "You don't need to learn a lot to be effective," he said. "You need just enough Ruby to be dangerous."
Ruby for testers--Any takers?
During our conversation Haeffner and I tossed around the idea of "Ruby for Testers," a formal training course geared to the need of QA teams, not developers. The idea is similar to "Physics for Poets." This science course offered at many colleges and universities is especially popular with humanities majors. It teaches the basics for an educated layperson. But it will not, for example, fulfill the physics course requirements for pre-med students.
I asked Haeffner what exactly "Ruby for Testers" should teach. What does the tester learning Ruby need to know? "The challenge is not the next feature," he said. "It's getting people educated [enough] to use the tools and frameworks [for test automation]," he said. To help fill that gap, Haeffner publishes Elemental Selenium. The weekly newsletter offers tips on using the popular, open source testing framework. Various forums on the Web are also geared to teaching Ruby to testers. But Haeffner said: "I think there is a market for [Ruby for Testers] in a more commercial way. It's hard to find [training courses] I can refer clients to."
In an ideal world, "Ruby for Testers" is a low-cost, online course that runs for a week and requires two hours a day. It gives the student some material to work on, offers code samples, and provides access to an expert who can answer your questions, Haeffner explained. "You want someone who says 'that doesn't work. Do this.'"
How did you teach yourself to write test scripts? Let me know and I'll profile you in a future column.