Software Testing Techniques 2 Editon

This book gives a lengthy and fairly comprehensive overview of software testing that emphasizes formal models for testing. In the introduction, the author gives a general overview of the testing process and the reasons and goals for testing. He carefully distinguishes between testing and debugging, and advocates these as separate activities. Testing according to the author is done to find bugs; whereas debugging is done to find the origin of the bugs and fix them. The author characterizes testing as either functional or structural. Functional testing treats the program from the user’s point of view, with inputs given to the program, and then the outputs are checked for conformance to a specified reference. Structural testing examines how the program is implemented, in terms of programming style, design, etc. The notion of an oracle is defined as any program or process that specifies the expected outcome of a collection of tests. The author clearly identifies and characterizes the different types of tests that arise in development organizations, such as unit testing, regression testing, stress testing, and integration testing.
(more…)