What makes a good tester?

Tuesday, July 03, 2007 by Eric Nehrlich

I'm currently in the Quality Assurance (QA) phase of the Software Management Training Program here at Fog Creek Software.  That's why I'm currently running the beta test of FogBugz 6 among other things.  To prepare for my stint in QA, I talked to "Jill the Very, Very Good Tester", immortalized in The Basics of Bug Tracking, for her thoughts on testing, and reflected on the qualities of the good testers I worked with in my previous career as a software developer. 

Good testers see the world differently than software developers.  Or from most people, really.  When they're in testing mode, they try things that no "sane" person would ever try.  They see the flaws, the interstices where systems grind against each other, and figure out ways to exploit them.

  • What happens if I start doing one task, interrupt to do a second, go back to the first task, and then skip to a third task?
  • What happens if I paste a ridiculously long piece of text including all sorts of non-standard international characters into every possible text field, including the zip code?
  • What happens if I intentionally try to inject SQL code into the database?
  • What happens if I don't understand any of the instructions and just start double-clicking randomly on everything I can see? 
  • What happens if I just start hitting random keys on the keyboard?

I used to work with a guy named Henry who was incredibly good at this.  I'd spend hours testing my code, clicking on every button, trying every possible combination of inputs I could think of.  I'd give him the software, and he'd be back at my desk in five minutes, saying "Eric, I broke it!"  I'd ask him what he did, and he'd explain how he was doing something that nobody had ever requested or even mentioned, and because the software wasn't designed to do that, it broke.  Fortunately, Henry would also have figured out a way around the bug so that he could keep working while I was trying to fix it, cursing all the way.

At the same time as they are coming up with all these crazy ways to break the software, good testers also have to be incredibly methodical.  They map out every aspect of the software before starting, create a test plan to make sure they exercise all of the desired functionality from the specification, and systematically go through every corner of the software.  These are the kind of people you want running your FDA certification process because they will follow the process to the letter and nothing will fall through the cracks (a former coworker of mine is now a consultant in that field).

When they do find a place where the software doesn't work as expected, they reproduce the bug in a minimal number of steps and file a bug.  Joel describes the importance of this careful reproduction process in the The Basics of Bug Tracking, both in helping to track down the bug and making sure that it's well and truly fixed.   

Somebody who's good at the methodical part may lack the craziness necessary to invent truly dastardly ways of breaking things.  Somebody else who has the completely off-the-wall perspective to try absurd things may not have the patience to figure out exactly what they did that finally broke the software.  So finding testers who have both skills is hard. 

I'm not particularly good at testing yet.  I still think like a programmer, so I know what a feature is supposed to do and tend to do what the developer expected when using that feature.  I'm still working on developing that outsider's perspective, of trying things no programmer would ever try because it shouldn't work. 

I'm also learning to test in a more methodical fashion.  I'm improving at my coverage when doing a full test of a new feature.  And when I come across odd behavior in FogBugz, I can track down a decent set of reproduction steps, and often even isolate it to a section of code that's causing the problem. 

Being a tester has encouraged me to think outside the perspective of a software developer, and to develop aspects of myself that didn't get used as a programmer.  I'll be glad to have that different perspective as I move forward into a career in technology management. 

Categories: General
Tags: ,
Actions: E-mail | Permalink