{ End Bracket }

What Makes A Good Software Tester?

Dr. James McCaffrey

Recently, in conversations with software engineers and managers at Microsoft and other software companies, I have heard the same message repeatedly: finding really good software testers has always been difficult, but it seems to have become much more difficult in the past few years.

So what makes a great software tester? I narrowed it down to the eight qualities I think are most important.

  1. Passion for Analysis and Testing The key to success in any job is having a true passion for what you do. A great software tester will generally get more satisfaction from writing some test automation that exercises a software application than in writing the application itself. This characteristic is often associated with people who have college degrees in quantitative fields such as mathematics and economics, as well as in computer science. To a large extent, this passion for analysis seems to be an innate, rather than acquired, characteristic.
  2. Technical Skill A great software tester must have significant coding skills in order to understand the system under test, communicate with developers, and write test automation. Most technical skills can be learned through education or experience. There is some disagreement among my colleagues about exactly what level of coding skill is needed to be a great tester, but I believe that a great tester must have at least 7.5-on-a-scale-of-1–10 (applications) development skills.
  3. Raw Intellectual Ability A great software tester has to be smart, with strong analytical and logical ability. Software development is essentially an exercise in logic, and to operate at a high level in this environment a software tester simply has to be smart.
  4. Ability to Prioritize and Organize Although necessary for almost any job, these talents are critically important for software testers. Software development and testing is a highly dynamic and fluid activity; the key variables can change weekly or even daily. The ability to recognize, interpret, and organize around these frequently changing job environment factors is essential.
  5. Ability to Adapt and Learn In software engineering, new technologies appear with incredible speed. For example, the appearance of C# and the Microsoft .NET Framework in early 2003 completely revolutionized software application development. Great software testers must have an ingrained propensity to be ongoing learners and consistently spend part of every week dedicated to upgrading their skill sets. I performed some research a couple of years ago that suggested that a software engineer's "skill set half-life" is about 18 months—meaning that without a significant upgrade in skills, a software engineer will be rendered substantially irrelevant in the job market very quickly.
  6. Ability to Work without Direct Supervision This is another generic job skill but is a characteristic that is particularly important for software testers. The necessity for taking independent action—quickly recognizing a technical or business need related to the software testing effort, and the ability to know what steps to take without the need of managerial approval (and also the ability to know when not to forge ahead without a management OK) is an essential skill.
  7. Ability to Communicate A great software tester must have strong written and verbal communication skills. A great tester must be able to read and analyze product documentation, write test plans, write clear bug reports, write coherent status reports to management (both formal reports and ad hoc e-mail reports), and have the ability to listen critically and speak rationally in person-to-person meetings.
  8. Ability to Understand Business Strategy The characteristics of great software testers I've listed so far are primarily tactical in nature. The final skill on my list is the ability to see the larger picture of a company's overall business strategy. This enables a great software tester to actively participate at a level higher than just an individual contributor—instead of merely finding and reporting a Priority 2 / Severity 2 bug, a great software tester can identify strategic strengths and weaknesses of a software system that can ultimately lead to a business competitive advantage.

As software systems increase in complexity, the value of great software testers is becoming increasingly important. If you think you have what it takes to be a great tester, I encourage you to check out testing careers at Microsoft.

Dr. James McCaffrey works for Volt Information Sciences, Inc., where he manages technical training for software engineers working at Microsoft. He has worked on several Microsoft products including Internet Explorer and MSN Search. James is the author of .NET Test Automation Recipes. He can be reached at jmccaffrey@volt.com or v-jammc@microsoft.com.