Collaboration and Teamwork
Agile projects depend on constant collaboration among team members. There's nothing new in that; it's true of all successful software projects. Yet often, testers aren't encouraged to work collaboratively with programmers. Some don't see themselves as part of the same team. At STARWEST 2008, there was even a keynote with the title "Has the Time for the Adversarial [Test] Organization Passed?". Seeing this on the program suggested to me that it isn't unusual for software professionals to think of test organizations in this way.
Was there ever a time when it made sense for testers to be adversarial? Independence is important for testers, and there can be good reasons for a test group to have a separate reporting structure from that of the programming organization. Organizational independence can help to ensure that testers' needs for time and resources are heard and that their findings aren't buried. I believe it played a part, especially in the early days, in testers' ability to develop a professional identity and discipline.
But independence doesn't require "us and them" relationships. Do we think programmers should want to work with adversarial testers? Would you if you were a programmer? True independence is independence of mind. Testers need the courage to test what needs to be tested and to give accurate information about our findings, but we also have to work with programmers, not against them. Our jobs are different, but we share with programmers both the activity and the goal of developing working software.
In many companies, the testers "certify" that software is ready for release. Sometimes the responsibility has been forced onto testers by management, but more often the test organization wanted it and even fought for it. Why?
I've found in my consulting that testers in gatekeeper roles typically feel beleaguered, often acting as if they are the last bastion of quality before less-than-perfect software hits an unsuspecting world. Being gatekeepers can cause testers to become self-righteous and judgmental, behaving like the quality police—or judge and jury—blaming programmers for software bugs, and acting as if no one else cares about software quality. Some testers feel crushed by the responsibility. They can become obsessive, afraid to look objectively at their testing, and reluctant to let go of the software even when they aren't finding bugs.
In reality, testers know we can never really test thoroughly enough to certify anything.