Agile Development & Testing

When adopting an agile approach to producing software, it is essential that folks from different functions come together to work as one team. Of prime importance is the coming together of the builders and breakers. Both developers and testers need to work closely together as one team to produce quality software. Development and testing go hand-in-hand rather than testing playing catch up with Development. This implies an incremental approach to testing work-in-progress artifacts as opposed to testing completed pieces. Build something-test it quickly-provide rapid feedback-incorporate feedback-build more-test some more ….

In such an approach too, it is easy to retain the functional distinctions in terms of assuming that testers do the testing and developers just code. To achieve greater quality, the emphasis must be on building in quality and prevention rather than just detection. Development is equally if not more responsible to build in quality and adopting quality practices that minimizes defects. Testers would partner with Development to quickly understand, test and provide feedback.

For Development to prioritize building in of quality, there needs to be shifts in the way customer reported issues are dealt with. When a customer reports an issue which wasn't found by internal testing, does the "blame" rest on the tester who did not find the issue or would you rather question the developer who built that piece of code with the defect? It isn't about blaming one or the other. Instead, the responsibility must lay with both. The developer whose code has the defect is as much responsible for the issue as the tester whose tests did not catch the issue. 

Also, there needs to be an organization wide emphasis on testing. When Development produces an artifact, there needs to be demonstrated evidence of tests having been run with "satisfactory" results. In fact, reporting of test results for any artifact being delivered by Development needs to be a requirement rather than something that is desirable or good to have. Effort/project estimates for producing software must include testing and time required to implement quality practices.