Don't write your own tests. That is what they say. They refers to professional (software) tester and software testing boards.
I don't buy it.
But let's not follow along blindly to what others say. I want to get to the root of the argument and then decide from there what might be best.
I will start with the pros of dividing between testers and developers.
- Impartialness to the code
- A fresh set of eyes / a new perspective
- No idea of how a feature might be implemented (and what consequences that has)
- A good tester is very analytical and follows procedures to test
- Testing can be done while other things are being developed
- Good working knowledge of test tools and test techniques (because it's their job)
- Pride in their work with a desire to find defects
- Less confirmation bias (Developers assumes their code will work and tests might not be necessary.)
- Effectiveness in finding defects tends to be higher (according to statistical reports and based on the points above)
Here is a list of cons for seperating testers and developers:
- It's much more expensive.
- It takes more time.
- Testers need to learn about the subject they are testing.
- People need great communication skills. There is a lot of communication needed that is done in a way that no one is offended.
- People might not be able to understand the other person's point of view.
- Testers might want to do too much according to protocol.
- Testers need to be really experienced in their craft to make it worthwhile.
- Developers miss the benefits of TDD, especially the design aspect that increases code quality.
- Developers might miss the safety that tests written earlier might give them when trying things out.
I might have missed a point here or there. Please feel free to send in ideas on what I could add to either list.
Tomorrow you'll get my point of view on this.