Description
Automated testing is a cornerstone of agile development. Testing can deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge.
XUnit Test Patterns is the definitive guide to writing automated tests for today's popular XUnit test automation frameworks. Renowned testing expert Gerard Meszaros introduces more than 120 proven patterns for making tests easier to write, understand, and maintain. He then shows you how to make them more robust and repeatable, and far more cost-effective.
Drawing on his extensive experience, Meszaros illuminates the evolving role of software testing and clearly defines unit, component and system testing. He then links these concepts to the "programmer" and "customer" tests required by agile methods. You'll learn how to optimize your test automation strategy, organize it, and implement it with XUnit. You'll also learn three categories of recurring problems, and how to overcome each of these "test smells."
A comprehensive reference to more than 120 testing patterns is included, and Meszaros illuminates the principles underlying each pattern, offering step-by-step usage instructions. You'll find high-level strategy patterns, design-level patterns for testing specific functionality, and coding idioms for optimizing specific tests. In addition, an extensive library of relevant code samples is available online. Topics covered include:
- Writing better tests--and writing them faster
- Software testing phases: fixture setup, exercise SUT, result verification, and fixture teardown
- Testing business logic, databases, user interfaces, and machine-to-machine interfaces
- Isolating software to test it independently from its environment
- Refactoring tests for greater simplicity
- Working effectively with XUnit, NUnit, JUnit, and other implementations
- Designing software for greater testability
This book will benefit developers, managers, and testers working with any agile or conventional development process, any testing framework, and any testing strategy--from "tests as specification" to "tests as safety net."