Software testing is becoming a cool job. I've heard from several people lately who are working in perfectly respectable and highly technical jobs, but they want to know how to get a chance to do testing instead.
I frequently receive questions about how to break into a career as a software tester or how to learn how to test after getting a testing job and no instructions on how to do it. I'll offer a framework for figuring out how to get started and how to grow.
First, the bad news
It's a tough job market out there, at least in the places I've been monitoring. On the swtest-discuss mailing list, consultant Rex Black recently said: "Given the commoditization of technical work these days, I would be loath to recommend to anyone not living in India or China that now was a good time to pursue entry-level software testing work."
You should take a very careful look at the job market before you decide you want to become an entry-level tester, given the number of experienced testers and other software professionals who also are looking for work now. If you're still determined to stick with it, read on and I'll offer a plan B, too.
Another thing we can learn from Rex comes from chapters eight and nine in his book Critical Testing Processes . He presents the management perspective on hiring and growing testers. Here, I'll discuss it more from the tester's point of view.
Rex talks about three categories of skills that hiring managers should look for (plus some very important "general qualifications"). The skill levels in the three categories vary widely between candidates, and it's often hard to find someone who's strong in all three. You can make yourself more marketable by improving in one or more of these dimensions:
It's common for people who are strong in the other two skill areas to find themselves in a testing position, even though they know very little about testing. They can find bugs using only common sense, but they could be far more effective if they learn some of the vast amounts of available information about testing that has accumulated over the last several decades.
There is no universal standard set of testing skills that will always be beneficial on a project. If you are currently working as a tester, or if you can learn about the places you might want to work, you can assess which skills you need to polish. Otherwise, read about different kinds of software development processes and decide which ones you'd most like to work with.
For example, you might want to learn how testing is done on low-process agile development projects. Or maybe you'd rather learn the rigors of testing in a safety-critical, military, or regulated environment, where standards are more likely to be important. Maybe exploratory testing is useful in the companies you want to work for. Or perhaps it's better to first become an expert in test design techniques and writing detailed, step-by-step test procedures. System testing or functional testing? Automated or manual? Process improvement? You can't learn it all at once, so be sure to prioritize based on the needs of the types of places where you want to work.
How well can you relate to the people who will buy and use the software? Do you understand the problems they're trying to solve and how they will use the software to solve them? Ideally, you've been an end-user yourself. You can fake it sometimes, learning on artificial problems, but you can't beat