В разработке по Agile пользовательская история является фундаментальным элементом для предоставления ценности клиенту. Эти краткие описания желаемой функциональности отражают «кто», «что» и «почему» функции или требования. Однако, чтобы обеспечить, что пользовательские истории являются выполнимыми и проверяемыми, команды Agile часто используют методику, называемую «Дать / Когда / Тогда» (GWT) критериев приемки. Этот метод помогает четко и однозначно определить ожидаемое поведение пользовательской истории.

Что такое критерии приемки?
Критерии приемки — это условия или правила, которым должна соответствовать пользовательская история, чтобы считаться завершенной. Они выступают в качестве моста между видением владельца продукта и реализацией команды разработки. По сути, они определяют границы и ожидания для каждой пользовательской истории. Без четко определенных критериев приемки пользовательская история может быть подвержена интерпретации, что приводит к недопониманию и возможному повторному выполнению работы.
Структура критериев приемки «Дать / Когда / Тогда»
«Дать / Когда / Тогда» — это формат создания критериев приемки, заимствованный из разработки, ориентированной на поведение (BDD). Он способствует более структурированному и понятному способу выражения ожидаемого поведения пользовательской истории. Формат состоит из трех частей:
- Дать: В этом разделе описывается начальный контекст или состояние системы. Он задает сцену для описываемого сценария. По сути, он предоставляет необходимую фоновую информацию для понимания сценария.
- Когда: В этом разделе описывается действие или событие, которое запускает поведение, описанное в пользовательской истории. Это конкретное событие, которое выполняет пользователь или происходит в системе.
- Тогда: В этом разделе описывается ожидаемый результат или исход действия или события, описанного в разделе «Когда». Он определяет, что должно произойти в результате действия, как правило, в виде наблюдаемых изменений в системе или приложении.
Преимущества критериев приемки «Дать / Когда / Тогда»
- Четкость: Формат GWT предлагает структурированный и понятный способ выражения ожидаемого поведения пользовательской истории. Это снижает неоднозначность и обеспечивает, что каждый член команды разработки, включая разработчиков, тестировщиков и владельцев продукта, четко понимает, что необходимо сделать.
- Проверяемость: Формат естественным образом подходит для создания тестовых случаев. Каждый компонент «Дать», «Когда» и «Тогда» можно перевести в конкретные сценарии тестирования, что облегчает проверку правильности реализации пользовательской истории.
- Согласованность: Критерии приемки GWT способствуют сотрудничеству между членами команды. Владельцы продукта, разработчики и тестировщики могут совместно определять и уточнять критерии, обеспечивая, чтобы все были на одной волне относительно объема и ожиданий истории.
Примеры критериев приемки «Дать / Когда / Тогда»
Рассмотрим простой пример для сайта электронной коммерции:
Пользовательская история: Как клиент, я хочу иметь возможность добавлять товары в корзину, чтобы купить их позже.
Критерии приемки (GWT):
- ДаноЯ нахожусь на странице товара
- КогдаЯ нажимаю кнопку «Добавить в корзину» для товара
- Тогда Товар должен быть добавлен в мою корзину покупок
- ИЗначок корзины в панели навигации должен отображать обновленное количество элементов
- ИМне должно быть показано подтверждение о добавлении товара в корзину
В этом примере критерии приемки предоставляют четкое понимание того, что ожидается от пользовательской истории, делая её выполнимой и проверяемой.
Описание проблемы: исследование случая:
Рассмотрим исследование случая для популярного приложения для совместного использования поездок, такого как Uber. Проблема заключается в улучшении пользовательского опыта за счёт внедрения функции, позволяющей пассажирам забронировать поездку на определённые даты и время заранее.
Истории пользователей с критериями приемки GWT:
История пользователя 1: Забронировать поездку заранее
Как пассажир, я хочу иметь возможность забронировать поездку на определённую дату и время заранее,чтобы я мог лучше планировать свои поездки.
Критерии приемки (GWT):
- Учитываяу меня установлено приложение для совместного использования поездок и я вошёл в систему
- Когдая открываю приложение и ввожу пункт назначения, дату и время поездки
- Тогдаприложение должно отобразить доступных водителей на выбранную дату и время
- Имне должно быть возможно подтвердить и забронировать поездку
- Имне должно быть отправлено уведомление о подтверждении с деталями забронированной поездки
История пользователя 2: Изменить или отменить забронированную поездку
Как пассажир, я хочу иметь возможность изменить или отменить забронированную поездку,в случае, если мои планы изменятся.
Критерии приемки (GWT):
- ДаноУ меня запланирована поездка
- КогдаЯ открываю приложение и перехожу к своим запланированным поездкам
- ТогдаЯ должен увидеть список моих предстоящих запланированных поездок
- ИЯ должен иметь возможность выбрать поездку, чтобы изменить дату и время или отменить её
- ИЕсли я изменю поездку, приложение должно показать доступных водителей на обновленную дату и время
- ИЯ должен получить уведомление о подтверждении любых внесенных изменений
История пользователя 3: Уведомление водителей о запланированных поездках
Как водитель, я хочу получать уведомления, когда пассажир запланирует поездку со мной, чтобы я мог планировать своё время.
Критерии приемки (GWT):
- ДаноЯ активный водитель с открытым приложением для совместного использования поездок
- Когдапассажир запланирует поездку со мной на определённую дату и время
- ТогдаЯ должен получить уведомление в реальном времени с деталями запланированной поездки
- ИПриложение должно отображать запланированную поездку на моем панели водителя
- ИЯ должен иметь возможность принять или отклонить запланированную поездку в разумные сроки
История пользователя 4: Предоставление обратной связи по запланированным поездкам
Как пассажир, я хочу иметь возможность оставлять отзывы и оценивать водителей по заранее запланированным поездкам, чтобы помочь поддерживать качество обслуживания.
Критерии приемки (GWT):
- Учитываяя завершил заранее запланированную поездку
- Когдая открываю приложение после завершения поездки
- Тогдамне должно быть предоставлено возможность оценить водителя и оставить отзыв
- Иоценка водителя должна быть обновлена на основе моего отзыва
- Имне должно быть отправлено сообщение с благодарностью за отзыв
Эти пользовательские истории и связанные с ними критерии приемки Give / When / Then решают проблему внедрения функции планирования поездок в приложении для совместного использования поездок. Следуя этому структурированному подходу, команда разработки может обеспечить четкое понимание требований и ожидаемого поведения новой функции, в конечном итоге приводя к улучшению пользовательского опыта.
Заключение
Критерии приемки Give / When / Then предлагают структурированный подход к определению ожидаемого поведения пользовательских историй в процессе разработки по Agile. Разбивая критерии на три отдельных раздела — Give, When и Then — команды могут достичь большей ясности, проверяемости и согласованности, в конечном итоге приводя к более успешной разработке продукта. Внедрение этой структуры в ваш процесс Agile поможет вашей команде создавать программное обеспечение высокого качества, соответствующее ожиданиям пользователей.











