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

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

Покупка
Артикул: 806863.01.99
Доступ онлайн
329 ₽
В корзину
Применяя методику разработки через приемочные тесты (ATDD), заказчики, разработчики и тестировщики получают возможность совместно сформулировать тестопригодные требования, что позволяет создавать высококачественное программное обеспечение в сжатые сроки. Однако на практике многие не понимают, в чем истинный смысл ATDD. Настоящая книга - первое практическое руководство начального уровня по внедрению и успешному применению этой методики. На примерах автор показывает, как применять ATDD, используя раз- личные языки и каркасы. В результате проработки примеров порождаются различные артефакты: классы для автоматизации тестирования, определения шагов и полные реализации. На этих вполне реалистичных примерах автор иллюстрирует фундаментальные принципы ATDD, показывает место ATDD в общем процессе разработки, делится своим обширным опытом и предостерегает против типичных ошибок. Эта книга будет полезна тестировщикам, разработчикам, бизнес-аналитикам и руководителям проектов. Она позволит заложить прочный фундамент для получения первых результатов от внедрения ATDD уже сейчас и поможет добиться еще большего в будущем, по мере накопления опыта.
Гэртнер, М. ATDD - разработка программного обеспечения через приемочные тесты / М. Гэртнер, пер. с англ. А. А. Слинкина. - Москва : ДМК Пресс, 2016. - 232 с. - ISBN 978-5-97060-418-2. - Текст : электронный. - URL: https://znanium.com/catalog/product/2046022 (дата обращения: 13.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 – разработка 

программного 

обеспечения через 
приемочные тесты

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

Москва, 2016

УДК    004.054ATDD
ББК     32.973-018

Г21

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

ATDD – разработка программного обеспечения через приемочные тесты.  
Пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2016. – 232 с.: ил.

             

Применяя методику разработки через приемочные тесты (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 (англ.)                     © 2013 Pearson Education, Inc.
ISBN 978-5-97060-418-2                                 © Оформление, перевод на русский язык  

      ДМК Пресс, 2016

ISBN 978-5-97060-418-2                                

Мой жене Дженнифер, 
моему пасынку Леону 
и нашей дочери Катрин 
за то, что они не обижались, когда я 
проводил с ними слишком мало времени, 
работая над этой книгой

ОГЛАВЛЕНИЕ

Предисловие Кента Бека ................................... 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 людям, которые уже применяет ее на практике. И наконец, 
она заслуживает многократного прочтения. Итак, читайте, практи-
куйтесь и снова читайте. Каждый раз вы будете находить что-то новое 
и полезное.

– Дэйл Эмери

Доступ онлайн
329 ₽
В корзину