qvib.pro
EN

User Story (INVEST + Given/When/Then)

Шаблон и пример хорошей пользовательской истории с критериями приёмки.

бесплатно любой

Назначение

User Story описывает требование глазами пользователя через ценность, а не через техническое задание. Цель — не «зафиксировать ТЗ», а начать разговор о ценности и договориться о критериях приёмки. Хорошая история проходит INVEST и снабжена критериями в Given/When/Then.

Подробный шаблон

# История: <короткое имя>

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

## Критерии приёмки (Given/When/Then)
Scenario: <happy path>
  Given <предусловие>
  When <действие>
  Then <наблюдаемый результат>

Scenario: <край / ошибка>
  Given <предусловие>
  When <действие>
  Then <как система реагирует>

## Заметки
Зависимости, дизайн-макет, открытые вопросы, не-цели.
## Оценка: <story points>

Пример 1 — happy + край

# История: Автонарезка видео в Shorts

> Как контент-мейкер,
> я хочу авто-нарезку длинного видео на Shorts,
> чтобы публиковать чаще, не тратя время на ручной монтаж.

## Критерии приёмки
Scenario: Видео успешно нарезано
  Given загружено видео длительностью 10+ минут
  When я нажимаю «Нарезать»
  Then я получаю ≥3 вертикальных клипа 9:16
  And каждый клип ≤60 секунд и содержит русские субтитры

Scenario: Видео слишком короткое
  Given загружено видео длительностью 30 секунд
  When я нажимаю «Нарезать»
  Then показывается сообщение «нужно видео от 1 минуты»
  And кнопка нарезки остаётся неактивной

Пример 2 — другой домен

# История: Сохранение карточки в избранное

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

## Критерии приёмки
Scenario: Добавление в избранное
  Given я открыл карточку инструмента
  When я нажимаю на иконку «звезда»
  Then карточка появляется в разделе «Избранное»
  And звезда становится заполненной

Scenario: Избранное переживает перезагрузку
  Given у меня есть карточка в избранном
  When я перезагружаю страницу
  Then карточка остаётся в «Избранном»

INVEST (критерий хорошей истории)

  • Independent — независима (можно сделать отдельно).
  • Negotiable — обсуждаема (не жёсткое ТЗ).
  • Valuable — ценна для пользователя/бизнеса.
  • Estimable — оцениваема (понятен объём).
  • Small — мала (влезает в спринт).
  • Testable — проверяема (есть критерии).

Чек-лист качества

  • Формула «Как… хочу… чтобы…» с реальной ценностью (не «чтобы была кнопка»).
  • Роль — конкретный пользователь, а не «система».
  • Критерии в Given/When/Then, результат наблюдаем.
  • Покрыт хотя бы один край/ошибка, не только happy path.
  • Проходит INVEST (особенно Small и Testable).

Частые ошибки

  • «Ценность» = повтор действия («чтобы нажать кнопку»). → Настоящая польза: зачем это пользователю.
  • История-гигант. → Не влезает в спринт → дроби (нарушен Small).
  • Нет критериев приёмки. → Непроверяемо → сдача превратится в спор.
  • Техзадача под видом истории («создать таблицу в БД»). → Это Task, а не User Story (нет пользовательской ценности).
  • Только happy path. → Добавь край/ошибку — там прячутся баги.

Read in English →