![]() |
Yuhang (Henry) Wang Scott Thornton |
1.0 Introduction |
|---|
| Table of Contents | |
|
Throughout the history of software development, there have been many divergent definitions for Software Testing. First, in the 1950s, testing was defined as "what programmers did to find bugs in their programs" [Hetzel 1988]. Today, this definition is much too restrictive in that software testing has been extended to include not only determining that a program functions correctly, but also that the functions themselves are correct.
As the science of software engineering matured through the 1960s and 1970s, the definition of testing underwent a revision. Consideration was given to exhaustive testing of the software in terms of the possible paths through the code, or by enumerating the possible input datasets. Even with the complexity of the software systems being developed at that time, this was impractical, if not theoretically impossible. The 1950s concepts were extended to include "what is done to demonstrate correctness of a program" [Goodenough 1975] or to define testing as "the process of establishing confidence that a program or system does what it is supposed to do" [Hetzel 1973]. Although this concept is valid in theory, in practice it is insufficient. If only simple, straightforward tests are performed, it is easy to show that the software "works". Since these tests may not exercise a significant portion of the software, large number of defects may remain to be discovered during actual operational use. It was therefore concluded that correctness demonstrations are an ineffective method of testing during software development. There is still a need for correctness demonstrations (acceptance testing for example), as will be seen later in this paper. The 1980s saw the definition of testing extended to include defect prevention. According to Boris Beizer [Beizer 1983], the act of designing tests is one of the most effective bug preventers known. As well, with the blossoming costs and effort dedicated to testing, it was recognized that a testing methodology was required, specifically that testing must include reviews and that it should be a managed process. The power of early test design was recognized in the beginning of the 1990s. Testing was redefined to be "the planning designing, building, maintaining and executing tests and test environments" [Hetzel 1991]. This incorporated all of the ideas to date in that good testing is a managed process, a total life cycle concern with testability [Beizer 1990].
|
![]() |
||||
Scott Thornton
Last Modified Date: 10-April-2003 |
|
|||