УДК 004.054ATDD
ББК 32.973-018
Г21
Г21 Маркус Гэртнер
ATDD – разработка программного обеспечения через приемочные тесты.
Пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2016. – 232 с.: ил.
ISBN 978-5-97060-418-2
Применяя методику разработки через приемочные тесты (ATDD),
заказчики, разработчики и тестировщики получают возможность совместно
сформулировать тестопригодные требования, что позволяет создавать
высококачественное программное обеспечение в сжатые сроки. Однако на
практике многие не понимают, в чем истинный смысл ATDD. Настоящая
книга – первое практическое руководство начального уровня по внедрению
и успешному применению этой методики.
На примерах автор показывает, как применять ATDD, используя различные
языки и каркасы. В результате проработки примеров порождаются
различные артефакты: классы для автоматизации тестирования, определения
шагов и полные реализации. На этих вполне реалистичных примерах автор
иллюстрирует фундаментальные принципы ATDD, показывает место ATDD
в общем процессе разработки, делится своим обширным опытом и предостерегает
против типичных ошибок.
Эта книга будет полезна тестировщикам, разработчикам, бизнес-аналитикам
и руководителям проектов. Она позволит заложить прочный фундамент
для получения первых результатов от внедрения ATDD уже сейчас и поможет
добиться еще большего в будущем, по мере накопления опыта.
Original English language edition published by Pearson Education, Inc., Permissions
Department, One Lake Street, Upper Saddle River, New Jersey 07458, or you may fax your
request to (201) 236-3290. Copyright © 2013 Pearson Education, Inc. Russian-language
edition copyright © 2013 by DMK Press. All rights reserved.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может гарантировать
абсолютную точность и правильность приводимых сведений. В связи с этим
издательство не несет ответственности за возможные ошибки, связанные с использованием
книги.
ISBN 978-0-321-78415-5 (англ.)
ISBN 978-5-97060-418-2
© 2013 Pearson Education, Inc.
© Оформление, перевод на русский язык
ДМК Пресс, 2016
Стр.5
ОГЛАВЛЕНИЕ
Предисловие Кента Бека ................................... 10
Предисловие Дэйла Эмери ................................ 12
Вступление ..................................................... 15
О названии ......................................................................... 15
Зачем нужна еще одна книга по ATDD? ............................... 17
Терминология ..................................................................... 18
Как читать эту книгу ............................................................ 19
Благодарности ................................................. 21
Об авторе ........................................................ 22
ЧАСТЬ I. Парковка в аэропорту ............................ 23
Глава 1. Рабочая встреча по калькулятору
стоимости парковки .......................................... 25
Парковка с доставкой в назначенное место ........................ 25
Краткосрочная парковка ..................................................... 27
Экономичная и длительная парковка .................................. 28
Существенные примеры ..................................................... 31
Резюме ............................................................................... 35
Глава 2. Автоматизация тестов для парковки
с доставкой в указанное место............................ 39
Первый пример .................................................................. 40
Парная разработка первого теста ....................................... 46
Инициализация .......................................................................... 47
Проверка результатов ................................................................ 52
Табличные тесты ................................................................. 56
Резюме ............................................................................... 59
Глава 3. Автоматизация тестов для остальных
типов парковок ................................................ 60
Краткосрочная парковка ..................................................... 60
Стр.7
Оглавление
7
Экономичная парковка ....................................................... 63
Резюме ............................................................................... 64
Глава 4. Предполагать и сотрудничать ................. 65
Рабочие встречи по выработке спецификаций .................... 66
Выдвижение пожеланий ..................................................... 67
Сотрудничество .................................................................. 69
Резюме ............................................................................... 71
ЧАСТЬ II. Система управления светофорами ......... 73
Глава 5. Приступая к работе ............................... 75
Светофоры ......................................................................... 75
FitNesse .............................................................................. 78
Вспомогательный код ......................................................... 79
Резюме ............................................................................... 80
Глава 6. Состояния светофора ............................ 82
Спецификация смены состояний ........................................ 82
Первый тест ........................................................................ 83
Займемся кодированием .................................................... 87
Рефакторинг ....................................................................... 91
Пакеты ................................................................................ 92
Перечисление LightState ..................................................... 92
Редактирование состояний светофора ............................... 98
Резюме ............................................................................. 108
Глава 7. Первый перекресток ............................ 110
Спецификации контроллера ............................................. 110
Управление разработкой кода контроллера ...................... 112
Рефакторинг ..................................................................... 120
Резюме ............................................................................. 133
Глава 8. Раскрывай и исследуй ......................... 135
Раскрытие предметной области ....................................... 136
Управление разработкой продуктового кода .................... 138
Тестируйте связующий код ............................................... 139
Цените свой связующий код ............................................. 141
Резюме ............................................................................. 143
ЧАСТЬ III. Принципы разработки через
приемочные тесты .......................................... 145
Глава 9. Использование примеров ..................... 147
Стр.8
8
Оглавление
Используйте подходящий формат .................................... 149
Разработка на основе поведения ............................................. 150
Табличные форматы ................................................................. 152
Автоматизация, управляемая ключевыми словами................... 156
Связующий и вспомогательный код ......................................... 158
Подходящий формат ................................................................ 160
Уточнение примеров ......................................................... 162
Представительное тестирование ............................................. 163
Граничные значения ................................................................. 164
Попарное тестирование ........................................................... 165
Сокращение набора тестов ............................................... 167
Учет упущений .................................................................. 170
Сбор оркестра для тестирования ............................................. 171
Резюме ............................................................................. 173
Глава 10. Разрабатывайте спецификацию
совместно ..................................................... 175
Сила трех .......................................................................... 176
Организуйте рабочие встречи ........................................... 178
Состав участников.................................................................... 178
Цель рабочей встречи .............................................................. 179
Частота и продолжительность .................................................. 180
Траление требований ....................................................... 181
Резюме ............................................................................. 183
Глава 11. Автоматизируйте буквально ................ 184
Используйте дружелюбную автоматизацию ...................... 185
Сотрудничайте в осуществлении автоматизации .............. 187
Изучайте предметную область .......................................... 190
Резюме ............................................................................. 192
Глава 12. Тестируйте рационально ..................... 193
Разрабатывайте код автоматизации тестов постепенно ... 195
Прислушивайтесь к тестам ............................................... 197
Подвергайте тесты рефакторингу ..................................... 201
Выделение переменной ........................................................... 204
Выделение ключевого слова .................................................... 204
Резюме ............................................................................. 206
Глава 13. Успешное внедрение ATDD .................. 208
Приложение А. Cucumber ................................. 211
Файлы функционала ......................................................... 211
Стр.9
Оглавление
9
Определения шагов .......................................................... 212
Продуктовый код .............................................................. 213
Приложение В. FitNesse ................................... 214
Структура вики ................................................................. 215
Таблицы SLiM .................................................................... 216
Вспомогательный код ....................................................... 217
Приложение C. Robot Framework ....................... 218
Секции .............................................................................. 219
Библиотечный код ............................................................ 222
Список литературы ......................................... 223
Предметный указатель .................................... 226
Стр.10