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.
Review By: Scott Brookhart 07/24/2008
Model-based software testing is an advanced topic, or intermediate, at the very least. Upon seeing the book "Model-Based Software Testing and Analysis with C#," I was quite excited to see a model-based test harness for C# with such rigor. All four authors have worked with Microsoft Research and therefore have the basis for putting together a substantial set of work.
The book presents the basis for when Model-Based testing and analysis are appropriate, then looks at finite state systems, complex state systems, and, lastly, some additional advanced topics. Additionally, appendices are provided for library and command references. NModel (http://www.codeplex.com/NModel) is the framework for the model-based testing with C#. While examples and information are found on the Web site, the book is needed to grasp the full explanations and to better understand model-based testing and analysis. The book is well organized and easy to follow with code samples and explanations. While pieces of some code can be unit tested, it really takes a model-based test framework to exercise scenarios or sets of units that work together. The NModel framework provides an efficient way to exercise the code and provide insight into the states that exist without duplicating effort.
I have completed graduate study in verification and validation and looked at model checking, and still I found this book informative and intriguing. I also liked the further reading sections of the book to provide additional information. NModel is the framework for testing, with the provided tools such as the model program viewer (mpv), offline test generator (otg) and conformance tester (ct) assist with getting the work done.
I really like this framework and find it easy to understand and use. The code samples worked quite well for assisting with the explanations--it was a client server model using sockets that allowed the reader to focus on the testing rather than trying to understand the code sample or some complex set of requirements that may not have been familiar to most. I am anxious to do more work with this framework and see how well it assists with realizing defects that I would not have caught with unit testing, reviews, and other quality assurance activities. All code gets deployed with some defects no matter how thorough the testers and developers were to find them.
I am pleased to see more tools such as these available to the greater developer network to assist with these endeavors and am pleased these experts provided a basis for developers to understand why tools like these are necessary.