Заметки бизнес-аналитика
Главная › Бизнес-анализ

User story, критерии приёмки и use case

Формат user story

Как <роль>, я хочу <действие или возможность>, чтобы <ценность>.

Пример: Как покупатель, я хочу сохранить товар в избранное, чтобы вернуться к нему позже и не искать заново.

Все три части обязательны. Без «чтобы» непонятно, зачем это делать и как выбрать лучшее решение. Роль должна быть конкретной («покупатель», «кладовщик»), а не «пользователь» или «система».

INVEST

БукваСвойствоЧто значит
IIndependent — независимаяМожно сделать и выпустить отдельно от других историй
NNegotiable — обсуждаемаяЭто повод для разговора, а не контракт; детали уточняются с командой
VValuable — ценнаяДаёт пользу пользователю или бизнесу. «Создать таблицу в БД» — не история
EEstimable — оцениваемаяКоманда может оценить трудозатраты. Если не может — не хватает знаний, нужен spike
SSmall — небольшаяПомещается в один спринт; большая история — это эпик, её надо разбить
TTestable — тестируемаяЕсть критерии приёмки, по которым можно однозначно проверить готовность

Ещё одна модель — 3C: Card (короткая запись), Conversation (обсуждение деталей), Confirmation (критерии приёмки).

Как разбивать большие истории

  • По шагам процесса: поиск → карточка товара → корзина → оплата.
  • По вариантам бизнес-правил: оплата картой, потом СБП, потом в рассрочку.
  • По типам данных или ролей: сначала для физлиц, затем для юрлиц.
  • Простой вариант, затем сложный: сначала поиск по названию, потом фильтры и подсказки.
  • Счастливый путь, затем обработка ошибок.
Не разбивайте по техническим слоям («фронтенд», «бэкенд», «база»). Каждая часть должна сама по себе давать ценность пользователю.

Критерии приёмки: Given / When / Then

История: Как покупатель, я хочу применить промокод в корзине, чтобы получить скидку.

Сценарий 1. Действующий промокод
  Дано: в корзине товары на 3000 ₽, промокод SALE10 активен (скидка 10%)
  Когда: покупатель вводит SALE10 и нажимает «Применить»
  Тогда: сумма заказа становится 2700 ₽, показано «Скидка 300 ₽»

Сценарий 2. Промокод истёк (негативный)
  Дано: промокод SALE10 действовал до 01.11
  Когда: покупатель вводит его 05.11
  Тогда: показано «Срок действия промокода истёк», сумма не меняется

Сценарий 3. Не выполнено условие минимальной суммы (негативный)
  Дано: промокод BIG500 действует при заказе от 5000 ₽, в корзине — на 3000 ₽
  Когда: покупатель вводит BIG500
  Тогда: показано «Промокод действует для заказов от 5000 ₽»

Сценарий 4. Несуществующий промокод (негативный)
  Когда: покупатель вводит QWERTY
  Тогда: показано «Промокод не найден»

Всегда добавляйте негативные сценарии: неверные данные, истёкшие сроки, отсутствие прав, недоступность внешней системы, граничные значения.

Кроме GWT, критерии приёмки пишут списком правил (rule-oriented): «скидка не суммируется с другими акциями», «промокод можно применить один раз на заказ».

Definition of Ready и Definition of Done

  • DoR — история готова к взятию в спринт: понятна ценность, есть критерии приёмки, есть макеты, зависимости сняты, команда её оценила.
  • DoD — история считается сделанной: код прошёл ревью, тесты зелёные, критерии приёмки выполнены, документация обновлена, фича выложена на нужный стенд.

Use case

Use case — подробное описание взаимодействия актора с системой для достижения цели. Шаблон (по Коберну, упрощённо):

ПолеПример: «Оформить заказ»
АкторПокупатель
ЦельОформить и оплатить заказ
ПредусловияПокупатель авторизован, корзина не пуста
Основной сценарий1. Покупатель открывает корзину. 2. Система показывает товары и сумму. 3. Покупатель выбирает доставку. 4. Система рассчитывает стоимость доставки. 5. Покупатель выбирает способ оплаты и подтверждает. 6. Система создаёт заказ и перенаправляет на оплату. 7. Платёжная система подтверждает оплату. 8. Система меняет статус на «Оплачен» и отправляет письмо.
Альтернативные сценарии4а. Адрес вне зоны доставки: система предлагает самовывоз. 7а. Оплата отклонена: заказ остаётся в статусе «Ожидает оплаты», покупатель может повторить попытку.
ПостусловияЗаказ создан и оплачен, товары зарезервированы

User story или use case?

  • User story — Agile, короткие итерации, команда рядом и детали обсуждаются устно.
  • Use case — сложные сценарии с множеством ветвлений, интеграции, распределённые команды, подрядчики, договорная разработка.
  • На практике их часто совмещают: история в бэклоге со ссылкой на use case или спецификацию.

Вопросы для самопроверки

Что не так с историей «Как пользователь, я хочу кнопку экспорта»?

Роль не конкретная, вместо потребности назван элемент интерфейса, нет ценности («чтобы…»). Лучше так: «Как бухгалтер, я хочу выгрузить список оплат за месяц в Excel, чтобы сверить их с банковской выпиской».

Чем критерии приёмки отличаются от DoD?

Критерии приёмки уникальны для каждой истории и описывают её поведение. DoD — общий для команды чек-лист качества, который применяется ко всем историям.

Как описать НФТ через user story?

Можно отдельной историей-ограничением («Как владелец магазина, я хочу, чтобы каталог открывался быстрее 1 с, чтобы не терять покупателей»). Но чаще НФТ записывают в DoD или как критерии приёмки к функциональным историям.

Конспекты статей по теме

Подробные конспекты полезных статей. В конце каждого есть ссылка на оригинал и автора.