« Testing Anti Lock Brakes | Main | Job Descriptions as Cubby Holes »

February 01, 2005

Development = = Testing

In most software development organizations there is a clear division between the people who write software and the people that test the software. I always felt uneasy about this division, especially during the last few years where I've been fortunate enough to work on both sides of this divide. The fundamental assumption in this organizational scheme is that you need different people to do the testing than you need to write the software. I have several concerns with this.


Testing is Part of Software Development

Since when did testing become an outside activity to development? Maybe I just don't get this concept, but to me, testing is fundamental to software development. Take any developer who hates testing their code and I'll show you someone who happens to test their code in a very unstructured or lazy way. It doesn't mean that they don't test their code. Otherwise, how could they have even the slightest confidence in the code they produce? So what most developers end up doing is some minimal, manual testing to make sure a few superficial test cases pass and then declare the code as "complete" and pass it on to the testing department for more thorough testing.

What we, as developers, are essentially doing is passing the buck to someone else to verify the quality of our code.


Are Testers Necessary?

Yes they are. There will always be a need for a group of people to try and break software that developers produce. What I am saying, though, is that testers should be given higher level testing responsibilities. We shouldn't be relying on testers to answer questions like "does the software do the basic things it's supposed to do?". Instead, testers can answer questions like:

  • What happens if I run very complicated test cases against this software?
  • What would happen if I tried to make 1000 users use the software at the same time?
  • What would happen if I tried running this software on a very low-end machine? a different platform? a different operating system? a different configuration?
  • How easy is it to install this software?
  • How easy is it to configure this software?

    Currently, testers are forced to answer just one question: does the software work? From my experience, that's what they spend the majority of their time figuring out. As developers, WE should be answering that question and free up tester's time to answer the more complicated questions about our software. As developers, we should be taking more responsibility for the quality of the software we produce.

    Posted by Misha Rybalov at February 1, 2005 05:59 PM

    Comments

    Post a comment




    Remember Me?