The software development world has changed significantly in the past five years. Noteworthy among its many changes is the emergence of the "Unified Modeling Language" (UML) as an industry standard. While thousands of software computer professionals and students continue to rely upon the bestselling first edition of Software Testing, the time has come to bring it up to date. Thoroughly revised, the second edition of Software Testing: A Craftsman's Approach reflects the recent growth and changes in software standards and development. Outdated material has been deleted and new topics, figures, case studies now complement its solid, accessible treatment of the mathematics and techniques of software testing. Foremost among this edition's refinements is the definition of a generalized pseudocode that replaces the outdated Pascal code used in the examples. The text is now independent of any particular programming language. The author has also added five chapters on object-oriented testing, incorporated object-oriented versions of two earlier examples, and used them in the chapter on object-oriented testing, which he completely revised with regard to UML. In addition, GUI testing receives full treatment. The new edition of Software Testing provides a comprehensive synthesis of the fundamentals, approaches, and methods that form the basis of the craft. Mastering its contents will allow practitioners to make well-informed choices, develop creative solutions, and ultimately derive the sense of pride and pleasure that a true craftsperson realizes from a job well done.
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.