The Testing Domain Workbook is the most extensive and exhaustive work you will ever find on a specific testing technique (or related techniques if you include equivalence class analysis and boundary testing as the book does). What I like best is the combination of academic background and roots combined with practical experience and industrial practice. All the concepts are presented in a simple and approachable manner with pointers to more details for those desiring more. While the book appears daunting in size, it is only because of the extensive examples and exercises. The core of the book is very approachable and less than 100 pages. To gain mastery, working through the exercises is most useful, but you can do that over time.
Many practical aspects and considerations for testing are covered that are usually skipped over in broad testing surveys or short articles. For example, many books talk about different approaches such as risk-based, scenario-based, or pair-wise testing. Books may also cover the issue of combining values for a test, but Testing Domain Workbook walks you through the details and implications of what each approach entails when applied to combining values for a domain test. Further, it provides extensive guidance of when (in which context) the advice is most applicable (or not). For example:
If you’re doing system testing after the programmers have done extensive unit testing of their variables, it will be unnecessary and wasteful to do thorough testing of secondary dimensions.
The book incorporates many viewpoints, sometimes strong opinions, and pithy statements such as:
Boundaries are funny things. When people say “No one would need a value that big,” what they really mean is “I can’t imagine why anyone would need a value that big.” The world is often less constrained than the limits of our imagination.
The book is exacting and consistent in its terminology, but the reader needs to be careful to keep the concepts clear and distinct. For example:
Well-designed domain tests are powerful and efficient but aren’t necessarily representative. Boundary values are suitable for domain testing even if those values would be rare in use.
The best representative of the class is the one that makes the most powerful test.
So the best representative, most powerful, is not necessarily the most representative of typical values. The book focuses on boundary values and bug hunting so that typical values are unlikely to be used even though they are part of the domain. You need to use more than the one well-developed technique of this book as the authors themselves state. For example:
well-designed scenario tests are usually representative but they’re often not powerful. To test a program well, you’ll use several different techniques
You will be a better tester if you read this book. You will be a much better tester if you actually work through the exercises of the book.
I was a pre-publication reviewer and I also posted this on Amazon as a review of the book.