The Role of Test

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.