Software testing is vitally important in the software development process, as illustrated by the growing market for automated testing tools. Moreover, software testing generally consumes between 30 and 60 percent of the overall development effort.
Many companies are already using automated test execution tools. Modelbased testing pushes the level of automation even further by automating the design, not just the execution, of the test cases. Model-based testing tools automatically generate test cases from a model of the software product. This gives a repeatable and rational basis for product testing, ensures coverage of all the behaviors of the product, and allows tests to be linked directly to requirements. Intensive research on model-based testing in the last 5 to 10 years has demonstrated the feasibility of this approach, has shown that it is cost-effective, and has developed a variety of test generation strategies and model coverage criteria. A range of commercial model-based testing tools are now available (see Appendix C for a brief list of commercial tools), as are many research tools and experimental prototypes.
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 focuses on the mainstream practice of functional blackbox testing rather than the more specialist areas of testing real-time software or concurrent software. It covers different styles of model, especially transition-based models (e.g., finite state machines and UML state machines) and pre/post models (e.g., B machines and UML/OCL specifications). It uses examples and case studies from a variety of software domains, including embedded software and information systems. It shows how model-based testing can be used with existing test execution environments such