What is the Role of Test?  The answer, of course, is “it depends”.  Those that know me know that this is the answer to almost any question I ask (I guess I need to ask more specific questions…).  The role of the software test team depends on many things, including the project, the people, the customer, and on the needs of management. 

On many small projects, the developers are the testers.  On others, the test team may be brought on line later in the project for exploratory testing or usability testing.  Larger projects tend to have more experienced test teams who are involved in the project earlier.  Experienced test teams will generally write test cases, write tests, and review specifications.  They will also measure things like code coverage and test pass rates, and provide reports that show this data.  I could go on, but in retrospective, this paragraph discusses the tasks of the test team, but not necessarily the role.

The context-driven school of test says that the role of test is to provide information.  The information the test team provides – whether it’s test results or metrics, or whatever else their task dictates – can be used to help management make decisions about the product.  I like this, but I think there’s more to the role.  Some people will tell you that the role of test is to find bugs.  I disagree with this one (ack!  Sacrilege!).  I think that finding bugs is a byproduct of providing information (or performing any of several testing tasks).  I would say, however, that one role of test is to find the most important bugs early.  It doesn’t matter if you find 99 bugs in a particular component, if the 100th bug is the one that crashes the system.  A very important role (in my opinion at least) is that the role of test to be the customer.  The test team is responsible for seeing software from the customer’s point of view.  I could argue that the entire engineering team is responsible for this, but this is one case where I think the test team should be on the hook.  While achieving code coverage results of 80% or higher would be beneficial, it’s most important that every customer scenario is tested.  When every customer scenario is tested, take some time to determine if there are more customer scenarios.  If you can’t think of more customer scenarios, spend more time understanding your customer.

As usual, I could write more, but I won’t.