This book gives a practical introduction to model-based testing, showing how to write models for testing purposes and how to use model-based testing tools to generate test suites. It is aimed at testers and software developers who wish to use model-based testing, rather than at tool-developers or academics.The book focuses on the mainstream practice of functional black-box testing and covers different styles of models, especially transition-based models (UML state machines) and pre/post models (UML/OCL specifications and B notation). The steps of applying model-based testing are demonstrated on examples and case studies from a variety of software domains, including embedded software and information systems. From this book you will learn:* The basic principles and terminology of model-based testing* How model-based testing differs from other testing processes* How model-based testing fits into typical software lifecycles such as agile methods and the Unified Process* The benefits and limitations of model-based testing, its cost effectiveness and how it can reduce time-to-market* A step-by-step process for applying model-based testing* How to write good models for model-based testing* How to use a variety of test selection criteria to control the tests that are generated from your models* How model-based testing can connect to existing automated test execution platforms such as Mercury Test Director, Java JUnit, and proprietary test execution environments* Presents the basic principles and terminology of model-based testing* Shows how model-based testing fits into the software lifecycle, its cost-effectiveness, and how it can reduce time to market* Offers guidance on how to use different kinds of modeling techniques, useful test generation strategies, how to apply model-based testing techniques to real applications using case studies