Testing comprises a large part of the software development effort. In some cases, testing can consume up to 80% of the entire software development budget. Worse, testing produces no quality measurements that can be used to assess the quality of a product before it is shipped. Most of the testing tools available today are designed to accommodate code coverage which do not, in itself, allow a quality assessment of the product to be made.

Software testing is the process of executing software to determine its correctness with respect to its specification. Failures are deviations from the specification and are often determined from observed versus intended behavior of the system. Failures are those things that cause the failures and those things that we spend so much time trying to find and fix.