ATDD - разработка программного обеспечения через приемочные тесты
Покупка
Тематика:
Прикладное программное обеспечение
Издательство:
ДМК Пресс
Автор:
Гэртнер Маркус
Перевод:
Слинкин А.А.
Год издания: 2016
Кол-во страниц: 232
Дополнительно
Доступ онлайн
В корзину
Применяя методику разработки через приемочные тесты (ATDD), заказчики, разработчики и тестировщики получают возможность совместно сформулировать тестопригодные требования, что позволяет создавать высококачественное программное обеспечение в сжатые сроки. Однако на практике многие не понимают, в чем истинный смысл ATDD. Настоящая книга - первое практическое руководство начального уровня по внедрению и успешному применению этой методики. На примерах автор показывает, как применять ATDD, используя раз-
личные языки и каркасы. В результате проработки примеров порождаются различные артефакты: классы для автоматизации тестирования, определения шагов и полные реализации. На этих вполне реалистичных примерах автор иллюстрирует фундаментальные принципы ATDD, показывает место ATDD в общем процессе разработки, делится своим обширным опытом и предостерегает против типичных ошибок. Эта книга будет полезна тестировщикам, разработчикам, бизнес-аналитикам и руководителям проектов. Она позволит заложить прочный фундамент для получения первых результатов от внедрения ATDD уже сейчас и поможет добиться еще большего в будущем, по мере накопления опыта.
Тематика:
ББК:
УДК:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Маркус Гэртнер 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 людям, которые уже применяет ее на практике. И наконец, она заслуживает многократного прочтения. Итак, читайте, практи- куйтесь и снова читайте. Каждый раз вы будете находить что-то новое и полезное. – Дэйл Эмери
Доступ онлайн
В корзину