ABSTRACT

In the preceding three chapters, we studied as many types of functional testing. The common thread among these is that all view a program as a mathematical function that maps its inputs onto its outputs. With the boundary-based approaches, test cases are identified in terms of the boundaries of the ranges of the input variables, and variations give us four techniques-boundary value analysis, robustness testing, worst-case testing, and robust worst-case testing. We then took a closer look at the input variables, defining equivalence classes in terms of values that should receive “similar treatment” from the program tested. Four forms of equivalence class testing are usedweak normal, strong normal, weak robust, and strong robust. The goal of examining similar treatment is to reduce the sheer number of test cases generated by the boundary-based techniques. We pushed this a step further when we used decision tables to analyze the logical dependencies imposed by the function of the program. Whenever we have a choice among alternatives, we naturally want to know which is preferred-or at least how to make an informed choice. In this chapter, we look at questions about testing effort and efficiency, and then try to get a handle on test effectiveness.