В данной книге показано, как применять принципы разработки программного обеспечения, в частности шаблоны проектирования, инкапсуляцию, исключение повторений и описательные имена, к написанию кода тестов. В части I рассматриваются теоретические основы методов разработки тестов и описываются концепции шаблонов и «запахов» тестов (признаков существующей проблемы). В частях II и III приводится каталог шаблонов проектирования тестов, «запахов» и других средств обеспечения большей прозрачности кода тестов. Кроме этого, в части III сделана попытка обобщить и привести к единому знаменателю терминологию тестовых двойников и подставных объектов, а также рассмотрены некоторые принципы их применения при проектировании как тестов, так и самого программного обеспечения. Книга ориентирована на разработчиков программного обеспечения, практикующих гибкие процессы разработки. В основном здесь рассматриваются примеры для существующих реализаций инфраструктуры xUnit, но затронуты и более новые инфраструктуры тестирования на основе данных.