Chapter 6. Higher-Order Testing

When you finish module-testing a program, you have really only just begun the testing process. This is especially true of large or complex programs. Consider this important concept:

A software error occurs when the program does not do what its end user reasonably expects it to do.

Applying this definition, even if you could perform an absolutely perfect module test, you still couldn't guarantee that you have found all software errors.

To complete testing, then, some form of further testing is necessary. We call this new form higher-order testing.

Software development is largely a process of communicating information about the eventual program and translating this information from one form to another. For that reason, the vast majority of software errors can be attributed to breakdowns, mistakes, and noise during the communication and translation of information.

This view of software development is illustrated in Figure 6.1, a model of the development cycle for a software product. The flow of the process can be summarized in seven steps:

  1. The program user's needs are translated into a set of written requirements. These are the goals for the product.

  2. The requirements are translated into specific objectives by assessing feasibility and cost, resolving conflicting requirements, and establishing priorities and trade-offs.

    Figure 6.1. The software development process.
  3. The objectives are translated into a precise product specification, viewing the product ...

Get The Art of Software Testing, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.