DEV-07: Get independent testers for functional sign-off.
Individual developers should and must be responsible for defining and executing unit tests on the programs they write (see [DEV-06: Set up and use formal unit testing procedures.]). Developers should not, on the other hand, be responsible for overall functional testing of their applications. There are several reasons for this:
We don’t own the requirements. We don’t decide when and if the system works properly. Our users or customers have this responsibility. They need to be intimately connected with, and drive, the functional tests.
Whenever we test our code, we follow the “pathways to success” without ever knowing it. In other words, the mindset we had when we wrote the code is the same mindset we have when testing the code. Other people, other eyes, need to run the software in complete ignorance of those pathways. It is no wonder that unit testing was so successful and yet integration testing has such problems.
To improve the quality of code that is handed over to customers for testing, your team leader or development manager should:
Work with the customer to define the set of tests that must be run successfully before an application is considered to be ready for production.
Establish a distinct testing group—either a devoted Quality Assurance organization or simply a bunch of developers who haven’t write any of the software to be tested.
This extra layer of testing, based on the customer’s own requirements ...