Software Testing offers a synthesis of information in the field of software testing. It brings together the two fundamental approaches-functional and structural-with numerous practical examples and exercises. The material provides the basis for making well-informed choices regarding appropriate techniques.
Part I focuses on the mathematics needed to understand and correctly apply the two fundamental approaches. Parts II and III examine the functional and structural testing techniques. Part IV includes information on integration and system testing. Part V focuses on testing management.
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.