«« Collaborative Documentation for Eclipse? Tiger ReInstall »»
blog header image
Testing It Myself

I just read Ed Burnette's blog post My dream job and I'd have to say I agree with most of the points. Maybe I'll make a post like this someday.

One point stood out for me:

"At my dream job there would not be separate quality testing groups. Developers would be responsible for the quality of their own code."
Passing the quality buck to a testing team is common -- and it got even more common during the tech bubble in the late 90's. Why? Because developers don't like to test, it's boring work.

Which leads to my theory: recruiters and managers promised developers they wouldn't have to test to keep them with the company. Testing teams were common before that but the bubble entrenched them even more.

Besides, anyone can bang on software for hours and hours. The bubble created "testing" jobs for any Joe off the street. But great testers are technically savvy, rare and valuable.

Why do Ed and I think it's so important for developers to test their own code? I can't speak for Ed, but here are a few reasons I have:

  1. Developers can't learn from their mistakes (and write better code in the future) if the bugs they make never come back to them. If the testing is left up to a testing team, a single bug can be created, found and fixed by three (or more) different people.
  2. When you write your own tests, you tend to be more critical of your own code, leading to higher code quality and less defects to fix later.
  3. If developers write the tests, they'll know how to fix the test suite and keep it green (100% passing) when the code changes!
  4. Having unit tests in place makes the code easier, faster and safer to refactor in the future.
  5. When developers write tests for their own code, they find new bugs (and regressions) faster. They don't have to wait for the testing and bug reporting turnaround time before the bug gets back to them. This speeds up overall development time instead of slowing it down (like is commonly thought because of the effort needed to make the tests).
  6. Testing and development teams are sometimes adversarial, which can affect the attitude and morale of the entire building and affect the quality of the final product.

Should testing teams be completely abolished? No, testing teams can keep the developers honest about writing tests and sharing their expertise by helping developers write better tests. A testing team can also work on more advanced testing techniques, like code coverage analysis, performance testing and bringing in new testing solutions that can help the team. Testing can be just as much R&D as development.

There are also UI tests that are more efficiently (and cheaply) run manually by real people sitting in front of the software. I don't think this is going away anytime soon -- UI testing just isn't at a mature enough state yet, so banging on the end software is still important.

Testing is creeping its way up the API levels to the UI though, especially in platforms that are written to be automatically testable from the ground up, like I found with Ruby on Rails.

Just to be clear: I don't want to be a full-time tester, just like I don't want to be a full-time build/release engineer. I'm a software developer and I want to deliver quality software. I believe that part of that is writing tests for my own code.

Posted at July 07, 2006 at 01:41 PM EST
Last updated July 07, 2006 at 01:41 PM EST
Comments

I like having a QA group that will take a fresh look at a piece of software. Someone who doesn't necessarily have all the domain knowledge, but knows how to break software. ;-)

Blackbox UI testing I feel only finds somewhere around 10% of the bugs of a system. I've got nothing to back that up, but I feel that's a good "worse case" rule of thumb. That way if I send an app off to QA and it comes back with 1 bug, then I have to keep my eyes open for the other 9 that have been missed. ;-)

» Posted by: Jim at July 7, 2006 08:24 PM

You wrote:
"A testing team can also work on more advanced testing techniques, like code coverage analysis, performance testing and bringing in new testing solutions that can help the team. Testing can be just as much R&D as development."

In most organizations it seems like "testers" are not trained to do development. Even simple shell scripts would be stretching their capabilities. Research to discover new testing techniques? Hard to imagine.

» Posted by: Ed Burnette at July 16, 2006 12:33 PM

Ed: there are some great testers out there that can do testing R&D -- but they really are rare and valuable.

» Posted by: Ryan at July 17, 2006 09:41 PM
Google
 
Search scope: Web ryanlowe.ca