This book explains the principles behind behavioral testing in general and behind the most important black-box testing techniques in use today, that is, testing a system based on its desired behavior or function and for conformance to its specifications. The book provides fully worked examples and leads the reader step-by-step from specifications to finished test cases.
Review By: Harmon Avera, Jr. 06/23/2010Beizer has a definite "attitude" about software testing (or the lack of it) that shows through in his prose style. Whether you agree or disagree with him, it makes the book lively and fun to read.
The easy review of this book is "BUY and USE THIS BOOK!!"
I found Beizer’s book packed with information but easy to read. The book presents black box testing as a series of implementations of Beizer's generic black box testing pattern:
1. Review the requirements,
2. Pick an appropriate view (or model) of the system,
3. Generate a graph of the system based on the chosen view,
4. Determine the paths to cover all of the graph, then
5. Develop test cases that force all of the paths.
Each system view implementation is a testing "model," which may or may not represent the actual software implementation of the system. This model must be self-consistent and able to predict test outputs based on test inputs. Test cases have to include the inputs, procedure, and expected output based on the chosen path through the graph of the model’s "view." Beizer points out that there is no single “correct” model of the system under test; different systems (and different parts of the same system) require different viewpoints.
An important part of each implementation chapter is the "Application Considerations" section, where Beizer describes the Application Indications, Bug Indicators, Limitations and Caveats, and available Automation Tools. There is also a Self-Assessment section at the end of each chapter to make sure you understand the material.
After reading the book, I used the "control-flow" view, which graphs the system based on the flow of process control, to prepare and run test cases against my current development project. I uncovered several new bugs (both requirement and implementation) using this method.