The True Value of Testing
A skilled tester makes the effort to understand the customers' requirements fully; only then does he or she know how to work with the development team to make sure that those requirements are met. If your developers consistently delivered the right functionality at the right time, how much value would your business gain? If more software defects were found and fixed during development, rather than leaking out to production, how much money would your business save?
Testers can apply their strong analytical skills during planning sessions, asking questions about each piece of functionality. These questions often reveal hidden assumptions. Because testers work with the whole product and have a "big picture" view, they can look at impacts that a user story or feature might have on the rest of the system. Testers test the requirements—understanding what the business really wants, and looking for defects before they happen. Their questions prevent future misunderstandings and wasted resources. Their ability to clarify requirements helps the team make better implementation decisions. They help developers think about testability, focus on simplicity, and facilitate test automation with well-designed code.
At this point you might be thinking, "But we have analysts who write requirements." It's true that analysts make important contributions in understanding business needs. However, like the business experts themselves, your analysts may not know how to express those needs in a way that helps programmers to produce the right code. Because testers usually understand the technical aspects of implementing a new software feature, and know how to express business needs in terms of clear examples and tests, they're able to contribute better guidance for the developers than the analysts could provide.
Programmers know what code to write when they have examples illustrating the necessary functionality. These examples may start out as whiteboard drawings, spreadsheets, or paper prototypes. Testers know how to turn those examples into high-level acceptance tests. All of a sudden, we now know when a user story (or requirement) is done—at least for the happy path. Customers may know what they want, but too often they don't know how to express this information meaningfully. Testers can help customers to create acceptance tests that define the minimum quality criteria for each requirement.
Once testers take a user story or set of requirements and start to create more details around what they want to test, they can flesh out variations in time to identify changes or new requirements. A good exploratory tester challenges shared assumptions and finds issues that weren't even considered during planning or coding. When testers are treated as equal members of the team, they can bring up issues early, when it's still possible to make changes in the code.