on behavioral integration and system testing. However, re-use is possible—and important. On one project, my test team used some test drivers written by programmers for component testing to create load generators for stress and performance testing. On another project, developers used my test team's automated functional test system for regression testing as they added new functionality to the software they were working on. Pervasive testing means everyone participates in testing, and testers leverage the skills, knowledge, and outputs of the whole team to reduce costs of conformance (i.e., testing) as well as costs of nonconformance.
Pervasive testing also means that, as test execution begins, the findings of the testers play a key role in high-level project status meetings. The product of the test team is information. The information products of a pervasive test team provide the project management team with key insights into the quality of the system, and the trends playing out in system development. How quickly are we fixing bugs? What problems remain? Have we explored all the key risks yet? When will we be ready to ship? Pervasive test efforts have answers to these questions, and those answers enlighten the decision-making process of the project management team.
Pervasive Testing Teamwork
As you might expect, having all these people participate in testing means coordination—i.e., teamwork. Many of you have probably seen a youth soccer match played by children who have not yet learned teamwork. The game is a wild, disorganized stampede. Little legs and bodies chase the ball around the field, with lots of screaming and yelling. Every now and then a lucky kick sends the ball zooming off to a new part of the field, and, in a mad dash, the mass of excited children tear off after the ball, trailing loud, impatient noises.
Does this remind you of your last project? If so, teamwork is what's lacking.
With teamwork, each project team plays a specific part, and each team member knows his or her roles and responsibilities. People stretch to help their teammates, true, but each person focuses on doing their part. Sales, marketing, and business analysts define the expected uses. Customer support and help desk staff explain the key problems that exist in the current product. Programmers write code. Database administrators define schemas. Configuration management engineers maintain the code repository and create software releases. System administrators support development and test environments. Testers evaluate system quality and deliver useful, unbiased information in a timely, accurate, credible fashion. The handoffs between each team happen on time, as planned and committed. Throughout it all, managers provide resources and guidance, pro-actively course-correct to prevent crises, and promote teamwork within and across their teams.
Investing in Testing: Payoff Summary
When testing pervades project efforts, we now have the final piece of the puzzle in place to make our investment in testing pay off handsomely. The early, crossfunctional teamwork with all stakeholders across the project maximizes our investment. To bring this series of articles to a close, let me tie pervasive testing together with some of the other topics we've covered.
Notice that pervasive testing means that the project team deploys the right resources—human and otherwise—to run the right tests at the right time using the right techniques. Pervasive testing includes early, cross-functional reviews of requirements, designs, and code—i.e., static testing. Pervasive testing includes developers running structural component and integration tests, often using automated test tools. Pervasive testing includes an independent test team capping the mix of test techniques with behavioral testing during integration and system test. Pervasive testing is key to using the right tools and techniques at the right