This book teaches new methods for specifying, analyzing, and testing software; essentials for creating high-quality software. These methods increase the automation in each of these steps, making them more timely, more thorough, and more effective. The authors work through several realistic case studies in-depth and detail, using a toolkit built on the C# language and the .NET framework. Readers can also apply the methods in analyzing and testing systems in many other languages and frameworks. Intended for professional software developers including testers, and for university students, this book is suitable for courses on software engineering, testing, specification, or applications of formal methods.
Part I. Overview: 1. Describe, analyze, test; 2. Why we need model-based testing; 3. Why we need model-based analysis; 4. Further reading; Part II. Systems with Finite Models: 5. Model programs; 6. Exploring and analyzing finite models; 7. Structuring model programs with features and composition; 8. Testing closed systems; 9. Further reading; Part III. Systems with Complex States: 10. Modeling systems with structured state; 11. Analyzing systems with complex state; 12. Testing systems with complex state; 13. Further reading; Part IV. Advanced Topics: 14. Compositional modeling; 15. Modeling objects; 16. Reactive systems; 17. Further reading; Part V. Appendices: A. Modeling library reference; B. Command reference; C. Glossary; D. Index.
"This is a fascinating and well-written book. The writing style is highly readable and the authors wear their learning lightly. I warmly recommend this book."
Software Engineering Notes