Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

ATDD — разработка программного обеспечения через приемочные тесты

Покупка
Артикул: 442759.02.99
Доступ онлайн
439 ₽
В корзину
Применяя методику разработки через приемочные тесты (ATDD), заказчики, разработчики и тестировщики получают возможность совместно сформулировать тестопригодные требования, что позволяет создавать высококачественное программное обеспечение в сжатые сроки. Однако на практике многие не понимают, в чем истинный смысл ATDD. Настоящая книга — первое практическое руководство начального уровня по внедрению и успешному применению этой методики. На примерах автор показывает, как применять ATDD, используя различные языки и каркасы. В результате проработки примеров порождаются различные артефакты: классы для автоматизации тестирования, определения шагов и полные реализации. На этих вполне реалистичных примерах автор иллюстрирует фундаментальные принципы ATDD, показывает место ATDD в общем процессе разработки, делится своим обширным опытом и предостерегает против типичных ошибок. Эта книга будет полезна тестировщикам, разработчикам, бизнес-аналитикам и руководителям проектов. Она позволит заложить прочный фундамент для получения первых результатов от внедрения ATDD уже сейчас и поможет добиться еще большего в будущем, по мере накопления опыта.
Гэртнер, М. ATDD — разработка программного обеспечения через приемочные тесты : практическое руководство / М. Гэртнер ; пер. с англ. А. А. Слинкина. - 2-е изд. - Москва : ДМК Пресс, 2023. - 233 с. - ISBN 978-5-89818-641-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/2108535 (дата обращения: 12.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Маркус Гэртнер

ATDD – разработка 
программного 
обеспечения через 
приемочные тесты
ATDD by Example

A Practical Guide to Acceptance
Test-Driven Development

Markus G¨artner

Upper Saddle River, NJ • Boston • Indianapolis • San Francisco
New York • Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • Sydney • Tokyo • Singapore • Mexico City
ATDD – разработка 
программного 
обеспечения через 
приемочные тесты

Маркус Гэртнер

Москва, 2023

2-е издание, электронное
УДК 004.054ATDD
ББК 32.973-018
Г21

Г21
Гэртнер, Маркус.
ATDD — разработка программного обеспечения через приемочные тесты / 
М. Гэртнер ; пер. с англ. А. А. Слинкина. — 2-е изд., эл. — 1 файл pdf : 233 с. — 
Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо 
Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный.
ISBN 978-5-89818-641-8

Применяя методику разработки через приемочные тесты (ATDD), заказчики, 
разработчики и тестировщики получают возможность совместно сформулировать 
тестопригодные требования, что позволяет создавать высококачественное программное 
обеспечение в сжатые сроки. Однако на практике многие не понимают, в чем 
истинный смысл ATDD. Настоящая книга — первое практическое руководство начального 
уровня по внедрению и успешному применению этой методики.
На примерах автор показывает, как применять ATDD, используя различные 
языки и каркасы. В результате проработки примеров порождаются различные артефакты: 
классы для автоматизации тестирования, определения шагов и полные реализации. 
На этих вполне реалистичных примерах автор иллюстрирует фундаментальные 
принципы ATDD, показывает место ATDD в общем процессе разработки, 
делится своим обширным опытом и предостерегает против типичных ошибок.
Эта книга будет полезна тестировщикам, разработчикам, бизнес-аналитикам и 
руководителям проектов. Она позволит заложить прочный фундамент для получения 
первых результатов от внедрения ATDD уже сейчас и поможет добиться еще 
большего в будущем, по мере накопления опыта.

УДК 004.054ATDD 
ББК 32.973-018

Электронное издание на основе печатного издания: ATDD — разработка программного обеспечения 
через приемочные тесты / М. Гэртнер ; пер. с англ. А. А. Слинкина. — Москва : ДМК 
Пресс, 2016. — 232 с. — ISBN 978-5-97060-418-2. — Текст : непосредственный.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было 
форме и какими бы то ни было средствами без  письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических 
ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность 
приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные 
с использованием книги.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.


ISBN 978-5-89818-641-8
© 2013 Pearson Education, Inc.
©  Оформление, перевод на русский язык 
ДМК Пресс, 2016
Мой жене Дженнифер, 
моему пасынку Леону 
и нашей дочери Катрин 
за то, что они не обижались, когда я 
проводил с ними слишком мало времени, 
работая над этой книгой
ОГЛАВЛЕНИЕ

Предисловие Кента Бека ................................... 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
Оглавление

Экономичная парковка ....................................................... 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
Оглавление

Используйте подходящий формат .................................... 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
Оглавление

Определения шагов .......................................................... 212
Продуктовый код .............................................................. 213

Приложение В. FitNesse ................................... 214
Структура вики ................................................................. 215
Таблицы SLiM .................................................................... 216
Вспомогательный код ....................................................... 217

Приложение C. Robot Framework ....................... 218
Секции .............................................................................. 219
Библиотечный код ............................................................ 222

Список литературы ......................................... 223

Предметный указатель .................................... 226
ПРЕДИСЛОВИЕ 
Кента Бека

Существует любопытная симметрия между тем, как в этой книге 
представлена методология разработки через приемочные тесты 
(ATDD – Acceptance Test-Driven Development), и тем, как с помощью 
этой методологии разрабатывается программное обеспечение. Умение 
выбрать конкретные примеры поведения программы, которые 
выявляли бы правильное поведение системы в целом, – это особое 
искусство, как и искусство подобрать такие примеры применения 
методики, подобной ATDD, которая дала бы читателю возможность 
освоить ее. Маркус проделал блистательную работу по выбору и 
представлению примеров.
Читая эту книгу, придется вникать в код. Продвигаясь вперед, вы 
поймете, как нужно изменить взгляд на проблему, чтобы успешно 
применять ATDD. В двух словах эта смена мировоззрения заключается 
в том, чтобы вместо «Вот эту функцию я хочу включить» говорить «
А как мы будем ее тестировать? Вот пример». Изучая примеры, 
вы снова и снова будете встречаться с этим переосмыслением в разных 
контекстах.
Что мне нравится в построении изложения вокруг примеров 
кода, так это излучаемая автором уверенность в вашей способности 
учиться. Это не просто «12 простых правил тестирования веб-приложения», 
отпечатанных на тонкой папиросной бумаге, которая расползается 
при первом соприкосновении с влажной реальностью. Вы 
узнаете о конкретных решениях, принимаемых в конкретных контекстах, 
о решениях, с которыми вы можете (и обязательно будете, если 
хотите извлечь из книги максимум пользы) не соглашаться, спорить 
и делать по-своему.
Ближе к концу книги формулируются общие выводы, подводящие 
итог принципам, продемонстрированным на примерах. Если вы 
из тех, кому легче усвоить материал, понимая общие идеи, то начать 
лучше с этого места. Но в любом случае эффект от прочтения этой 
Предисловие Кента Бека

книги прямо будет пропорционален усилиям, которые вы приложите 
для осмысления примеров.
Одна из слабых сторон первоначального варианта методики разработки 
через тестирование (TDD) заключается в том, что она может 
превратиться в технику, которую программист использует для нужд 
собственно программирования. Некоторые программисты смотрят на 
TDD более широко, легко переходя в тестах от одного уровня абстрагирования 
к другому. Но в ATDD такой двусмысленности нет – эта 
методика предназначена для общения с людьми, которые с языками 
программирования не знакомы вовсе. Качество отношений с заказчиком – 
и лежащего в их основе взаимопонимания – способствует 
повышению эффективности процесса разработки ПО. ATDD может 
стать шагом в направлении более ясного выражения мыслей, а эта 
книга – обстоятельное и доступное введение в тему.

– Кент Бек
ПРЕДИСЛОВИЕ 
Дэйла Эмери

Не счесть программных проектов, не отвечающих ожиданиям заказчика. 
На протяжении многих лет я десятки раз слышал, как заказчик 
объясняет причины провала тем, что разработчики не обращали внимания 
на наши пожелания. А сотни разработчиков, напротив, считают: «
Заказчик не говорит, чего он хочет. По большей части он вообще 
не знает, чего хочет».
Я видел достаточно проектов, чтобы прийти к другому выводу – 
сформулировать, что должна делать программная система, трудно. 
Для этого нужно предельно точно говорить и внимательно слушать, а 
в обычных взаимоотношениях между людьми так бывает редко, да и 
не очень-то необходимо. Писать хорошие программы трудно. Качественно 
тестировать программы трудно. Но труднее всего четко объяснить, 
чего мы хотим от системы.
Методика разработки через приемочные тесты (ATDD) помогает 
справиться с этой проблемой. С ее помощью вся команда совместно 
добивается ясности и точного понимания еще до начала разработки. 
В основе ATDD лежат два приема. Прежде чем приступать к реализации 
какой-либо функции, члены команды формулируют конкретные 
примеры ее практического применения. Затем эти примеры переводятся 
на язык автоматизированных приемочных тестов. Примеры и 
тесты становятся важной частью точного и разделяемого всеми сторонами 
описания того, что понимать под словом «сделано» для каждой 
функции.
Какова цена общего понимания? На семинаре по ATDD один разработчик 
объяснил это такими словами: «После того как мы начали 
совместно работать над примерами, мне стало небезразлично, что мы 
делаем. Я наконец-то стал понимать, что и зачем мы создаем. И что 
еще более важно, я был уверен, что вся команда одинаково понимает, 
чего мы пытаемся достичь. У нас появилась общая цель – мы стали 
одной командой».
Предисловие Дэйла Эмери

ATDD не только помогает понять, когда разработку функции 
следует считать законченной, но и когда приступать к тестированию 
этой функции (и всех предыдущих). Примеры служат верстовыми 
столбами на пути к завершению. А поскольку каждый пример описывает 
ситуацию, значимую для заказчика, то мы можем быть уверены, 
что не только продвигаемся вперед, но и движемся в нужном 
направлении.
Ну ладно, я упомянул о нескольких важных особенностях и преимуществах 
ATDD. Это-то было просто. А вот вопрос посложнее: как 
всё это организовать в реальном проекте? Ответ оставляю Маркусу 
Гэртнеру. В этой книге Мартин закатывает рукава и не только 
рассказывает, но и показывает, как ATDD работает на практике. Он 
позволяет постоять у него за спиной и увидеть, как тестировщики, 
программисты и бизнес-аналитики думают, применяя принципы и 
приемы ATDD.
Хочу предупредить об одном подводном камне. В первых главах – 
когда мы следим, как бизнес-аналитик Билл, тестировщик Тони и 
программисты Филлис и Алекс описывают и реализуют небольшую 
программную систему, – материал может показаться чрезмерно упрощенным, 
даже примитивным. Не поддавайтесь первому впечатлению. 
В этих главах происходит много интересного. Это весьма квалифицированная 
команда, и некоторые аспекты ее работы на первый взгляд 
неочевидны. Например, обратите внимание, что при обсуждении 
требований нет никаких упоминаний о технологии. Члены команды 
говорят исключительно о бизнес-функциях системы. И заметьте, 
что когда Тони и Алекс автоматизируют первые тесты, Тони небезуспешно 
пользуется отсутствием у себя опыта программирования. 
Столкнувшись с непонятной технической деталью, он просит Алекса 
объяснить ее, а затем они вместе исправляют код, так чтобы он говорил 
сам за себя. И обратите внимание, как часто Алекс настаивает на 
сохранении тестов в системе управления версиями, – но только после 
того как код заработает. Если вы новичок в ATDD, то эти моменты 
могут показаться неочевидными, но они – неотъемлемая составная 
часть успеха.
По счастью, чтобы осознать эти тонкие нюансы, нужно всего лишь 
продолжать чтение. Маркус часто делает паузы, чтобы объяснить, что 
и почему делает команда. В конце каждой главы он резюмирует, как 
команда работала совместно, о чем думали ее члены и какие приемы 
применяли. А в заключительной части книги Маркус сводит все воедино, 
подробно описывая принципы, на которых зиждется ATDD.
Предисловие Дэйла Эмери

Эта книга – прекрасное введение в методику разработки через 
приемочные тесты. Заодно она позволяет по-новому взглянуть на 
ATDD людям, которые уже применяет ее на практике. И наконец, 
она заслуживает многократного прочтения. Итак, читайте, практикуйтесь 
и снова читайте. Каждый раз вы будете находить что-то новое 
и полезное.

– Дэйл Эмери
Доступ онлайн
439 ₽
В корзину