Chapter 94. Testing Is Not a Phase
It’s a bad idea to relegate all of your testing to a separate phase at the end of a project. Testing needs to be an adversarial process, where the testers work as hard as they can to find defects and create reproducible test cases. Testing like this needs to happen continuously throughout a project, from the very beginning. Running your new system once at the end of your project just to show that everything works—well, that’s not a test. That’s a demo.
The biggest problems with testing at the end have to do with time:
-
First, it takes a lot more time to fix a program you wrote ten months ago than it takes to fix a program you wrote yesterday. It takes time to get your mind back in context, and it can take even more time to deal with new interdependencies that have emerged in those ten months.
-
Second, the final phase of a project is subject to the time-squeeze caused by all the overruns accumulated throughout that project’s life. I’ve seen projects where “the squeeze” eliminated time for the testing phase altogether.
Bad things happen when you don’t have adequate time to respond to unwelcome test (or demo) results. One of the worst is covert pressure from executives to stop finding so many problems. Such pressure can temporarily reduce your reported defect rate, but it serves only to pass more defects along to your end users, which hurts them and diminishes your reputation.
Fixing defects late in a project is a lot more expensive than fixing ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access