Зачем нужны сценарии приёмки
Сценарии приёмки — шаги, описывающие то, как пользователь мог бы проверить соответствие реализованной истории критериям приёмки. То есть отвечает ли поведение ПО ожиданиям пользователя.
Автоматизированные тесты на основе сценариев приёмки — альтернативная спецификация требований к ПО для команды разработки. Она всегда актуальна, потому что автоматизированные тесты связаны с программным кодом. Если он не соответствует описанному в тестах поведению, команда разработки узнает об этом сразу. Тогда она изменит либо код, либо тесты.
Сценарии приёмки отвечают на вопросы:
- Как именно пользователь будет работать с реализованной функциональностью?
- Какого поведения от ПО ожидает пользователь?
Сценарии приёмки позволяют продемонстрировать ожидаемое пользователями поведение ПО на примерах с реальными данными.
Команда разработки не должна использовать вымышленные данные. Команде разработки нужно попросить пользователей и заказчиков предоставить, например, образцы документации, с которой они работают: выписки, отчёты, электронные таблицы и другие источники данных.
Обсуждение сценариев приёмки позволяет формировать общее понимание того, какой получится история ещё до начала её реализации. Это поможет избежать двусмысленности и расхождения во мнениях на более поздних этапах разработки. Как вы помните, чем позднее в ПО вносят изменения, тем дороже они обойдутся и команде разработки, и заказчикам.
Стоимость внесения изменений в ПО или устранения программной проблемы увеличивается пропорционально этапу, на котором вносятся изменения или исправления.
Барри Боэм (Barry W. Boehm), профессор, специализирующийся на программном обеспечении.
Оформление сценариев приёмки
Системный аналитик оформляет сценарии приёмки с помощью языка Gherkin.
Gherkin — это язык, которым описывают поведение системы в виде сценариев приёмки. Это нотация для описания сценариев приёмки.
Описание сценариев приёмки на языке Gherkin позволяет облегчить работу тестировщиков.
Синтаксис языка Gherkin включает в себя:
В этом уроке мы разберём все ключевые слова и символы, которые используются в оформлении сценариев приёмки на примере истории «Выписка по счёту клиента».
Представьте, что СА участвует в разработке клиентского приложения для банка и в текущей итерации команда автоматизирует формирование выписки по счёту клиента.
Ключевые слова
Каждое ключевое слово пишется с новой строки.
Пробелы перед строками отражают их иерархию. Чтобы добавить уровень иерархии, в начале строки нужно ввести на два пробела больше, чем в строке выше.
Функция
Функция (Feature) — ключевое слово, которое обозначает начало описания сценария приёмки. Одна карточка истории содержит одно ключевое слово «Функция».
После этого ключевого слова нужно ставить двоеточие. Это родительская строка для всех строк ниже, перед ней не нужно добавлять пробелы.
Функция может быть описана в одном или нескольких сценариев приёмки. Системный аналитик записывает их после названия функции, примечаний и критериев приёмки. Для проверки каждого критерия приёмки СА должен составить хотя бы один сценарий. Его название должно опираться на формулировку проверяемого критерия приёмки.
Сценарии приёмки бывают двух видов:
- Сценарий (Scenario) — описывает ожидаемое поведение ПО на одном примере.
- Структура сценария (Scenario Outline) — описывает ожидаемое поведение ПО на нескольких примерах.
СА пишет Scenario Outline вместо Scenario, то есть объясняет ожидаемое поведение ПО на нескольких примерах, когда эти примеры могут повлиять на результат.
Шаги начинаются с ключевых слов «Дано», «Когда», «Тогда», «И» и «Иначе». В структурах сценариев используют также ключевое слово «Примеры», потому они содержат не один, а множество примеров реальных данных в отличие от сценария.
Сценарий
Сценарий — ключевое слово, которое обозначает начало сценария приёмки. После этого слова нужно ставить двоеточие и записать название сценария.
Для критерия «Можно выбрать счёт для формирования выписки» системный аналитик добавляет сценарий с соответствующей этому критерию формулировкой — «Выбрать счёт для формирования выписки». Этот сценарий описывает ожидания клиента от поведения приложения в самой распространённой для банка ситуации: когда у клиента открыто несколько счетов. Также СА добавляет сценарий, который описывает непосредственно выбор клиентом одного счёта из нескольких открытых в банке счетов.
При этом СА понимает, что в остальных случаях клиент не должен тратить усилия для выбора одного-единственного открытого в этом банке счёта и добавляет сценарий, в котором приложение делает выбор за клиента.
Сценарии для критерия приёмки «Выписка формируется не дольше пяти минут» описывают, что приложение должно регистрировать успешное или неуспешное выполнение операции.
Дано
Дано (Given) — ключевое слово, с помощью которого СА обозначает предусловия для выполнения сценария или структуры сценария.
Шаг «Дано» описывает состояние, в которое нужно привести ПО перед тем, как пользователь начнет с ним взаимодействие, то есть начальные условия выполнения сценария или структуры сценария.
Этот шаг формулируется в прошедшем времени.
Системный аналитик также использует это ключевое слово при описании контекста.
Когда
Когда (When) — ключевое слово, с помощью которого СА обозначает совершаемое пользователем действие или случившееся событие.
Этот шаг формулируется в настоящем времени.
В каждом сценарии или структуре сценариев это ключевое слово должно использоваться только один раз. Если СА кажется, что нужно добавить больше действий или событий, то тогда ему требуется разделить такой сценарий или структуру сценария на несколько.
Тогда
Тогда (Then) — ключевое слово, с помощью которого СА обозначает ожидаемый результат выполнения сценария приёмки.
Они должны быть связаны с явной пользой, которая указана в описании функции. При описании этих шагов также необходимо помнить, что должен проверяться вывод системы (отчёты, интерфейс, сообщения), а не что-то глубоко закопанное в систему (перемещение данных из одной таблицы БД в другую и так далее).
И
И (And) — ключевое слово, с помощью которого СА обозначает дополнительные предусловия или результаты. Оно может заменить повторяющиеся ключевые слова «Дано» и «Тогда», чтобы сценарий или структура сценария выглядели более похожими на обычную речь.
Ниже представлены примеры того, как ключевое слово используется при наличии дополнительных результатов сценариев, заменяя ключевое слово «Тогда».
Но
Но (But) — ключевое слово, с помощью которого СА также обозначает дополнительные предусловия или результаты. Оно также может заменить повторяющиеся ключевые слова «Дано» и «Тогда», чтобы сценарий или структура сценария выглядели более похожими на обычную речь. При этом «Но» лучше использовать для шагов, где есть отрицание.
Структура сценария
Структура сценария — ключевое слово, обозначающее начало сценария приёмки, содержащего множество примеров реальных данных. После этого слова также нужно ставить двоеточие и записать её название.
В качестве названия СА также использует формулировку критерия приёмки, для проверки которого написана эта структура сценария.
Каждый элемент данных СА записывает в виде переменной, заключённой в угловых скобках (<>). После шагов структуры сценария СА записывает ключевое слово «Примеры», двоеточие и таблицу со всеми возможными значениями переменных.
Системный аналитик добавляет одноимённую структуру сценария для критерия: «Можно выбрать период, за который формируется выписка». Эта структура сценария описывает ожидания клиента от поведения приложения в самых распространённых для банка ситуациях: когда клиент заказывает выписку за месяц, несколько месяцев или один год. При этом СА описывает в структуре сценария, что приложение всегда формирует отдельную выписку за каждый месяц выбранного клиентом периода.
Примеры
Примеры (Examples) — ключевое слово, с помощью которого СА обозначает начало таблицы со значениями переменных.
Структура сценария должна быть проверена столько раз, сколько строк содержит таблица с примерами. При этом значения из ячеек таблицы подставляются в соответствующие переменные структуры сценариев.
Структура сценария для критерия приёмки «Можно выбрать период, за который формируется выписка» описывает, что выписка по счёту формируется за каждый входящий в выбранный период месяц в отдельности.
Структура сценария для критерия приёмки «Скачать выписку» описывает, что каждая выписка должна скачиваться на устройство в отдельном файле выбранного клиентом формата.
Критерии приёмки «Скачать выписку в PDF» и «Скачать выписку в JPEG» можно объединить в одну структуру сценария, потому что выбранный формат файла не влияет на поведение приложения, а влияет только на результат.
При этом, если команда разработки решит реализовывать в текущей итерации только критерий приёмки «Скачать выписку в PDF», тогда СА может понадобится написать другой сценарий.
Контекст
Контекст (Background) — ключевое слово, с помощью которого СА описывает предусловия для выполнения всех или части входящих в функцию сценариев или структур сценариев.
Сценарии и структуры сценариев читают сверху вниз. Весь описанный выше контекст учитывается при их выполнении. Описанные выше сценарии и структуры сценариев не учитывают контекст, расположенный ниже.
Контекст может включать одно или несколько начальных условий, которые должны быть выполнены для успешной проверки сценариев и структур сценариев. Системный аналитик описывает условия после ключевых слов «Дано» и «И».
Системный аналитик объединяет все входящие в функцию сценарии и структуры сценариев и добавляет контекст их выполнения. Он указывает, что необходимым предусловием является авторизация клиента в приложении.
Кроме того, СА заметил, что сценарии для проверки времени формирования выписки содержат общее предусловие в шаге «Дано». Он переносит эти шаги в контекст.
Символы
Кроме двоеточия (:), угловых скобок (<>), обозначающих переменные, и вертикальных линий (||), обозначающих ячейки таблицы с примерами, язык Gherkin включает другие символы для описания:
- # — для коротких комментариев к любой части описания.
- “”” — для примера данных для шагов в виде символьной строки (Doc Strings).
Короткий комментарий
Если системному аналитику нужно оставить короткий комментарий к сценарию в одну строку, можно использовать #.
Например, можно добавить к каждому сценарию и структуре сценария формулировку соответствующего критерия приёмки.
Символьная строка
В случаях, когда необходимо добавить к шагу объёмную информацию используется специальная комбинация — “””. Эта комбинация открывает блок с текстом и закрывает его.