Are programmers bad testers

qatesting

I know this sounds a lot like other questions which have already being asked, but it is actually slightly different. It seems to be generally considered that programmers are not good at performing the role of testing an application. For example:

Joel on Software – Top Five (Wrong) Reasons You Don't Have Testers (emphasis mine)

Don't even think of trying to tell college CS graduates that they can
come work for you, but "everyone has to do a stint in QA for a while
before moving on to code". I've seen a lot of this. Programmers do not
make good testers
, and you'll lose a good programmer, who is a lot
harder to replace.

And in this question, one of the most popular answers says (again, my emphasis):

Developers can be testers, but they shouldn't be testers. Developers
tend to unintentionally/unconciously avoid to use the application in a
way that might break it.
That's because they wrote it and mostly test
it in the way it should be used.

So the question is are programmers bad at testing? What evidence or arguments are there to support this conclusion? Are programmers only bad at testing their own code? Is there any evidence to suggest that programmers are actually good at testing?

What do I mean by "testing?" I do not mean unit testing or anything that is considered part of the methodology used by the software team to write software. I mean some kind of quality assurance method that is used after the code has been built and deployed to whatever that software team would call the "test environment."

Best Answer

The question seems to be asking specifically about System Testing, so that's what I'm referring to throughout this answer.

I think there's an important distinction to be made between being a bad person to choose to perform testing, and actually being bad at testing.

Why programmers are bad at testing:

  • If you've written the code, you (should) have already thought of as many ways as possible that things could go wrong, and have dealt with them.
  • If finding a particularly niggly bug means that you have to then go and fix it, in a codebase you might be sick of, then that isn't going to help your motivation.

Why programmers are good at testing:

  • Programmers tend to be logical thinkers, and good at working in a systematic way.
  • Experienced programmers will be very good at quickly identifying edge cases and so coming up with useful tests. (If there's a formalised testing process, then most all of these cases should already have been identified and tested prior to systems testing.)
  • Programmers are pretty good at making sure that all the useful information goes into a bug report.

Why programmers are bad testers:

  • Programmers are more expensive than testers (in the vast majority of cases).
  • The mindset is fundamentally different: "Build a (working) product" vs "This thing isn't going out the door with any (unknown) bugs in it."
  • Testers will typically be more efficient - i.e. perform more tests in the same amount of time.
  • Programmers specialise in programming. QA professionals specialise in testing.
Related Topic