his updated and reorganized fourth edition of Software Testing: A Craftsman's Approach applies the strong mathematics content of previous editions to a coherent treatment of Model-Based Testing for both code-based (structural) and specification-based (functional) testing. These techniques are extended from the usual unit testing discussions to full coverage of less understood levels integration and system testing.
The Fourth Edition:
Emphasizes technical inspections and is supplemented by an appendix with a full package of documents required for a sample Use Case technical inspection Introduces an innovative approach that merges the Event-Driven Petri Nets from the earlier editions with the "Swim Lane" concept from the Unified Modeling Language (UML) that permits model-based testing for four levels of interaction among constituents in a System of Systems Introduces model-based development and provides an explanation of how to conduct testing within model-based development environments Presents a new section on methods for testing software in an Agile programming environment Explores test-driven development, reexamines all-pairs testing, and explains the four contexts of software testing Thoroughly revised and updated, Software Testing: A Craftsman’s Approach, Fourth Edition is sure to become a standard reference for those who need to stay up to date with evolving technologies in software testing. Carrying on the tradition of previous editions, it will continue to serve as a valuable reference for software testers, developers, and engineers.
This book has some interesting points. Since it is a very academic book, I found interesting that it starts explaining discrete math topics and graph theory, with focus on software testing. The chapters until Integration Testing are very useful. Another positive point: the book is filled with examples about the topics it covers.
However, there are some tedious chapters, with very biased opinions from the author. Unfortunately, the author also has some misconceptions about Agile, which can be harmful to those who are starting to study Agile software development.
It provides a good overview of software testing and different sorts of testing along with various associated quality and adequacy metrics. In addition, it introduces few advance topics in software testing. However, the code fragments in form of pseudocode (or, is it VB?) leaves much to be desired. Lastly, topics such as state machines and petri-nets seem academic and distant from real-world practice. It would have been helpful to provide concrete real-world examples where these notions were used. Also, covering BDD would have been more helpful.
Maybe best reference for Software Testing. But the problem is Software Testing is still not even a science or approach. That's why this book is like a diary of someone just wrote what he innovated about how test software. For me after reading this book, my conclusion is there are lots of work to do only define what is Software Testing or just give up for testing a software. Which means just need to stop testing a software. Because user feedback and usability will do it.