BDD в действии
Покупка
Новинка
Издательство:
ДМК Пресс
Перевод:
Киселев Артём Николаевич
Год издания: 2023
Кол-во страниц: 554
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-93700-252-5
Артикул: 856452.01.99
Разработка на основе поведения (Behavior-Driven Development, BDD) — это подход к проектированию программного обеспечения, предполагающий представление примеров желаемого поведения приложения в форме конкретной тестируемой спецификации. Представленные в книге практики совместной работы и стратегии автоматизации помогут вам максимизировать преимущества BDD для вашей команды разработчиков и ваших бизнес-клиентов. Вы узнаете, как интегрировать BDD в существующий процесс разработки.
Издание подойдет для всех команд, занимающихся разработкой программного обеспечения. Опыт работы с BDD не требуется. Примеры на Java, JavaScript и TypeScript, представленные в книге, легко можно выразить на любом другом языке.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Локальные компьютерные сети. Программное обеспечение локальных сетей. ОС
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Джон Фергюсон Смарт, Ян Молак BDD в действии
BBD in Action SECOND EDITION JOHN FERGUSON SMART JAN MOLAK Foreword by DANIEL TERHORST-NORTH
BDD в действии ДЖОН ФЕРГЮСОН СМАРТ ЯН МОЛАК Предисловие ДЭНИЕЛА ТЕРХОРСТА-НОРТА Москва, 2023
УДК 004.021 ББК 32.973.05 С50 Смарт Дж. Ф., Молак Я. С50 BDD в действии / пер. с англ. А. Н. Киселева. – М.: ДМК Пресс, 2023. – 552 с.: ил. ISBN 978-5-93700-252-5 Разработка на основе поведения поведения (Behavior-Driven Development, BDD) – это подход к проектированию программного обеспечения, предполагающий представление примеров желаемого поведения приложения в форме конкретной тестируемой спецификации. Представленные в книге практики совместной работы и стратегии автоматизации помогут вам максимизировать преимущества BDD для вашей команды разработчиков и ваших бизнес-клиентов. Вы узнаете, как интегрировать BDD в существующий процесс разработки. Издание подойдет для всех команд, занимающихся разработкой программного обес-печения. Опыт работы с BDD не требуется. Примеры на Java, JavaScript и TypeScript, представленные в книге, легко можно выразить на любом другом языке. УДК 004.021 ББК 32.973.05 Copyright © DMK Press 2023. Authorized translation of the English edition. © 2023 Manning Publications. This translation is published and sold by permission of Manning Publications, the owner of all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-6172-9753-3 (англ.) © Manning Publications, 2023 ISBN 978-5-93700-252-5 (рус.) © Перевод, оформление, издание, ДМК Пресс, 2023
Оглавление Часть I ПЕРВЫЕ ШАГИ.......................................................................................... 28 1 Создание программного обеспечения, которое стоит создавать.............. 29 2 Введение в разработку на основе поведения.................................................. 43 3 BDD: краткий тур................................................................................................... 67 Часть II ЧЕГО Я ХОЧУ? ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ С ПОМОЩЬЮ BDD.....................................................................................................109 4 Обдумывание: от бизнес-целей к приоритетным функциям....................111 5 Описание функций и расстановка приоритетов...........................................154 6 Объяснение функций на примерах..................................................................181 7 От примеров к выполняемым спецификациям............................................211 Часть III КАК СОБРАТЬ ВСЕ ВМЕСТЕ? ПРОГРАММИРОВАНИЕ ПО ПРИНЦИПУ BDD.................................................................................................258 8 От выполняемых спецификаций к автоматизированным приемочным тестам.............................................................................................260 9 Разработка надежных автоматизированных приемочных тестов...........302 10 Автоматизированные критерии приемки для уровня пользовательского интерфейса.........................................................................318 11 Шаблоны проектирования автоматизированных тестов для уровня пользовательского интерфейса.........................................................................356 12 Масштабируемая автоматизация тестирования с помощью Screenplay Pattern..................................................................................................384 13 BDD и выполняемые спецификации для микросервисов и API................415 14 Выполняемые спецификации Serenity/JS для существующих систем.....442 15 Переносимость автоматизации тестирования с Serenity/JS.......................474 16 Живая документация и доказательство выпуска..........................................513
Содержание Предисловие........................................................................................................ 17 Вступление......................................................................................................... 19 Благодарности................................................................................................... 20 Об этой книге..................................................................................................... 22 Об авторах......................................................................................................... 26 Об иллюстрации на обложке........................................................................... 25 Часть I ПЕРВЫЕ ШАГИ........................................................................... 28 1 Создание программного обеспечения, которое стоит создавать..................................................................................... 29 1.1 BDD с высоты 50 000 футов.................................................................. 31 1.2 Какие проблемы вы пытаетесь решить?............................................ 34 1.2.1 Правильное создание программного обеспечения....................... 35 1.2.2 Создание правильного программного обеспечения...................... 37 1.2.3 Ограниченность знаний: борьба с неопределенностью.............. 38 1.3 Подходит ли BDD для ваших проектов?............................................. 40 1.4 Что вы узнаете из этой книги.............................................................. 41 Итоги .................................................................................................................. 41 2 Введение в разработку на основе поведения......................... 43 2.1 Изначально BDD разрабатывался для облегчения обучения TDD........................................................................................................... 44
Содержание 2.2 BDD также хорошо подходит для анализа требований................... 47 2.3 Принципы и практика BDD.................................................................. 49 2.3.1 Сосредоточьтесь на функциях, несущих пользу бизнесу............. 50 2.3.2 Работайте вместе, выявляя и определяя функции..................... 51 2.3.3 Примите неопределенность........................................................ 52 2.3.4 Иллюстрируйте функции конкретными примерами................. 52 2.3.5 Пример на Gherkin........................................................................ 53 2.3.6 Не пишите автоматические тесты – пишите выполняемые спецификации........................................................ 55 2.3.7 Эти принципы также применимы к модульным тестам.......... 58 2.3.8 Живая документация................................................................... 61 2.3.9 Использование живой документации для поддержки текущих работ по сопровождению............................................. 61 2.4 Преимущества BDD............................................................................... 63 2.4.1 Сокращение напрасных усилий.................................................... 63 2.4.2 Снижение затрат........................................................................ 64 2.4.3 Простота и безопасность изменений......................................... 64 2.4.4 Более короткий цикл выпуска новых версий................................ 64 2.5 Недостатки и потенциальные проблемы BDD.................................. 65 2.5.1 BDD требует активного участия бизнеса.................................. 65 2.5.2 BDD лучше всего работает в контексте гибкой, или итеративной, разработки................................................... 65 2.5.3 BDD плохо работает в изоляции................................................. 65 2.5.4 Плохо написанные тесты могут привести к более высоким затратам на их сопровождение.................................................. 66 Итоги .................................................................................................................. 66 3 BDD: краткий тур.................................................................................. 67 3.1 Поток BDD............................................................................................... 68 3.2 Обдумывание: определение бизнес-ценностей и бизнес-функций................................................................................. 70 3.2.1 Определение бизнес-целей............................................................ 70 3.2.2 Выявление возможностей и функций.......................................... 71 3.2.3 Описание функций........................................................................ 73 3.3 Объяснение: изучение функции на примерах.................................. 75 3.3.1 Выявление требований................................................................ 75 3.3.2 Разделение функции на пользовательские истории.................... 77 3.4 Формулирование: от примеров к выполняемым спецификациям..................................................................................... 78 3.5 Автоматизация: от выполняемых спецификаций к автоматизированным тестам........................................................... 80 3.5.1 Настройка проекта с помощью Maven и Cucumber.................... 81 3.5.2 Реализация выполняемых спецификаций Cucumber..................... 85 3.5.3 Автоматизация выполняемых спецификаций............................ 87 3.5.4 Реализация связующего кода........................................................ 89 3.6 Демонстрация: тесты как живая документация..............................104 3.7 BDD снижает затраты на сопровождение.........................................105 Итоги .................................................................................................................107
Содержание Часть II ЧЕГО Я ХОЧУ? ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ С ПОМОЩЬЮ BDD..........................109 4 Обдумывание: от бизнес-целей к приоритетным функциям.....................................................................................................111 4.1 Этап обдумывания................................................................................112 4.1.1 Стратегическое планирование в проекте BDD.........................113 4.1.2 Стратегическое планирование – это непрерывная деятельность..............................................................................114 4.1.3 В стратегическом планировании участвуют и заинтересованные стороны, и члены команды.......................115 4.1.4 Выявляться должны гипотезы и предположения, а не особенности.........................................................................116 4.2 Описание бизнес-видения и целей...................................................118 4.2.1 Видение, цели, возможности и особенности..............................118 4.2.2 Чего требуется достичь? Начните с видения............................120 4.2.3 Заявление о видении....................................................................121 4.2.4 Использование шаблонов формулировок видения......................122 4.2.5 Какую пользу это принесет бизнесу? Определите бизнес-цели..................................................................................123 4.2.6 Написание хороших бизнес-целей...............................................124 4.2.7 Покажите мне деньги: бизнес-цели и доходы.............................125 4.2.8 Анализ с помощью серии вопросов «почему»: определение бизнес-целей................................................................................127 4.3 Impact Mapping......................................................................................131 4.3.1 Определение болевых точек........................................................132 4.3.2 Определение бизнес-цели............................................................133 4.3.3 Кто получит выгоду? Определение участников........................133 4.3.4 Как должно измениться их поведение? Определение последствий................................................................................136 4.3.5 Что делать? Определение результатов....................................136 4.3.6 Картирование обратных влияний..............................................138 4.4 Pirate Canvases.......................................................................................139 4.4.1 Пиратские метрики...................................................................139 4.4.2 От пиратских метрик к пиратским полотнам........................142 4.4.3 Выявление отстойных идей........................................................142 4.4.4 Создание эпического ландшафта...............................................146 Итоги .................................................................................................................152 5 Описание функций и расстановка приоритетов.............154 5.1 BDD и уточнение требований к продукту.........................................155 5.2 Что такое функция?..............................................................................157 5.2.1 Функции предоставляют возможности....................................159 5.2.2 Функции можно разбить на более управляемые фрагменты....163 5.2.3 Функция может быть описана одной или несколькими пользовательскими историями..................................................166 5.2.4 Функция не является пользовательской историей....................170 5.2.5 Функции выпуска и продукта......................................................170 5.2.6 Не все укладывается в иерархию................................................172
Содержание 5.3 Real Options: не принимайте на себя обязательств раньше, чем это потребуется.............................................................................173 5.3.1 Опционы имеют ценность..........................................................175 5.3.2 Опционы имеют ограниченный срок действия..........................176 5.3.3 Никогда не совершайте никаких действий заранее, если не уверены в их необходимости...........................................177 5.4 Deliberate Discovery...............................................................................177 5.5 Планирование выпуска и спринта с помощью BDD.......................178 Итоги .................................................................................................................180 6 Объяснение функций на примерах...............................................181 6.1 «Три товарища» и другие подходы к выявлению требований......182 6.2 Объяснение функций на примерах...................................................184 6.3 Использование таблиц для описания сложных требований..........191 6.4 Example Mapping...................................................................................193 6.4.1 Сеанс Example Mapping начинается с пользовательской истории.......................................................................................194 6.4.2 Выявление правил и поиск примеров..........................................195 6.4.3 Обнаружение новых правил........................................................196 6.4.4 Выявление неопределенности.....................................................197 6.4.5 Проведение сеанса Example Mapping...........................................199 6.5 Feature Mapping.....................................................................................199 6.5.1 Сеанс Feature Mapping начинается с примеров..........................200 6.5.2 Примеры разбиваются на шаги..................................................201 6.5.3 Поиск вариантов и новых правил...............................................202 6.5.4 Поиск альтернативных потоков...............................................203 6.5.5 Группировка связанных потоков и запись неопределенности.....204 6.6 OOPSI......................................................................................................206 6.6.1 Результаты.................................................................................207 6.6.2 Выходы.........................................................................................207 6.6.3 Процесс........................................................................................208 6.6.4 Сценарии.....................................................................................208 6.6.5 Входы...........................................................................................209 Итоги .................................................................................................................210 7 От примеров к выполняемым спецификациям..................211 7.1 Превращение конкретных примеров в выполняемые сценарии................................................................................................213 7.2 Написание выполняемых сценариев................................................215 7.2.1 Файл функции имеет заголовок и описание...............................215 7.2.2 Описание сценариев....................................................................217 7.2.3 Структура «Дано ... Когда ... Тогда»...........................................218 7.2.4 И и Но..........................................................................................220 7.2.5 Комментарии..............................................................................222 7.3 Использование таблиц в сценариях..................................................222 7.3.1 Использование таблиц на отдельных этапах............................223 7.3.2 Использование таблиц примеров...............................................224 7.3.3 Ожидающие сценарии.................................................................227 7.4 Организация сценариев с помощью файлов функций и тегов.....228
Содержание 7.4.1 Сценарии сохраняются в файле функций...................................228 7.4.2 Файл функций может содержать один или несколько сценариев.....................................................................................230 7.4.3 Организация файлов функций.....................................................230 7.4.4 Плоская структура каталогов...................................................230 7.4.5 Организация файлов функций по историям или выпускам продукта.....................................................................................230 7.4.6 Организация файлов функций по функциональности и возможностям.........................................................................231 7.4.7 Аннотирование сценариев тегами.............................................232 7.4.8 Добавляйте предыстории и контекст, чтобы избежать дублирования...............................................................................234 7.5 Правила и примеры..............................................................................236 7.6 Выразительные сценарии: шаблоны и антишаблоны....................237 7.6.1 Искусство разработки хорошего кода на Gherkin......................237 7.6.2 Как выглядит плохой сценарий Gherkin......................................239 7.6.3 Хорошие сценарии носят декларативный, а не императивный характер....................................................240 7.6.4 Хорошие сценарии делают что-то одно, и делают это хорошо.........................................................................................242 7.6.5 В хороших сценариях есть значимые действующие лица...........244 7.6.6 Хорошие сценарии фокусируются на главном и скрывают второстепенное..........................................................................248 7.6.7 Сценарии Gherkin – не тестовые сценарии................................251 7.6.8 Хорошие сценарии независимы...................................................253 7.7 Но где все подробности?......................................................................256 Итоги .................................................................................................................257 Часть III КАК СОБРАТЬ ВСЕ ВМЕСТЕ? ПРОГРАММИРОВАНИЕ ПО ПРИНЦИПУ BDD............................................................258 8 От выполняемых спецификаций к автоматизированным приемочным тестам................260 8.1 Введение в сценарии автоматизации...............................................263 8.1.1 Определения шагов интерпретируют шаги..............................264 8.2 Настройка проекта...............................................................................267 8.2.1 Настройка проекта Cucumber на Java или TypeScript...............268 8.2.2 Организация проекта Cucumber на Java....................................268 8.2.3 Организация проекта Cucumber на TypeScript...........................270 8.3 Запуск сценариев Cucumber................................................................271 8.3.1 Java-классы для запуска тестов Cucumber.................................271 8.3.2 Запуск сценариев Cucumber в JavaScript и TypeScript.................272 8.4 Написание связующего кода...............................................................273 8.4.1 Внедрение данных через параметры определения шага............275 8.4.2 Повышение гибкости выражений Cucumber...............................277 8.4.3 Выражения Cucumber и пользовательские типы параметров.................................................................................278 8.4.4 Использование регулярных выражений.......................................281