Testing is an information service. It gives feedback about our work and our product. It helps us answer important questions, make informed decisions, correct mistakes and misunderstandings.
When we relegate testing to the end of the release cycle, we ensure that most of the feedback will be delivered late—after problems have been coded into the project, long after the actions that led to the results, and perhaps too late for us to act on. And if development slips, we often squeeze or cut testing in service to the release date. When we test only at the end, we deprive ourselves of information, and reduce the timeliness, relevance, and value of the information we deliver.
Great testers apply many skills: detecting ambiguity, imagining troublesome scenarios, and creating concrete examples of abstract requirements. By applying these skills early in a project, testers can help detect and correct misunderstandings before they become code. The tests created from these early conversations can guide development, gauge progress, and free our attention for other work. If we begin testing early, we can build quality into the product from the start.