Перейти к содержимому
Бизнес-анализ
Требования

User Stories: как писать, чтобы разработчики не переспрашивали

Практическое руководство по написанию User Stories: формат, критерии приёмки, INVEST-принцип, типичные ошибки и шаблоны для бизнес-аналитика.

User Story — короткое описание функциональности с точки зрения пользователя. Формат простой, но написать историю так, чтобы разработчик не пришёл с десятью уточняющими вопросами — отдельный навык. Разберём, как писать User Stories, которые работают: от формулировки до критериев приёмки.

Формат User Story

Классический шаблон:

Как [роль],
я хочу [действие],
чтобы [ценность/цель].

Пример:

Как менеджер по продажам,
я хочу фильтровать сделки по стадии воронки,
чтобы видеть только те, которые требуют моего внимания сегодня.

Почему три части, а не одна

ЧастьЧто даётКому нужна
РольКонтекст: кто используетUX-дизайнеру, разработчику
ДействиеЧто именно реализоватьРазработчику
ЦенностьЗачем это нужноProduct Owner, для приоритизации

Без «ценности» история превращается в техническое задание. Без «роли» — непонятно, чей это интерфейс.

Критерии приёмки (Acceptance Criteria)

User Story без критериев приёмки — это пожелание. Критерии превращают её в контракт.

Формат Given-When-Then

Дано: менеджер находится на странице «Сделки»
Когда: он выбирает фильтр «Переговоры»
Тогда: отображаются только сделки со стадией «Переговоры»
  И: количество отображённых сделок показано в заголовке
  И: фильтр сохраняется при переходе на другую страницу и обратно

Формат чек-листа

Для простых историй подходит список:

✅ Фильтр содержит все стадии воронки из настроек
✅ Можно выбрать несколько стадий одновременно
✅ Кнопка «Сбросить» очищает все фильтры
✅ При отсутствии сделок — сообщение «Нет сделок на выбранных стадиях»
✅ Фильтр работает без перезагрузки страницы

Сколько критериев — достаточно?

  • 3–7 критериев — оптимально
  • 1–2 — скорее всего, история недоопределена
  • 10+ — скорее всего, историю нужно разбить

Принцип INVEST

Хорошая User Story соответствует шести критериям:

I — Independent (независимая)

Историю можно реализовать, протестировать и выпустить отдельно от других.

❌ «Как пользователь, я хочу оформить заказ» — зависит от корзины, каталога, оплаты.

✅ «Как пользователь, я хочу выбрать способ доставки при оформлении заказа» — конкретная, изолированная задача.

N — Negotiable (обсуждаемая)

История — не контракт, а начало разговора. Детали уточняются при планировании.

E — Estimable (оцениваемая)

Команда может оценить трудоёмкость. Если не может — история слишком большая или неопределённая.

S — Small (маленькая)

Реализуется за один спринт (обычно 1–5 дней работы разработчика).

T — Testable (тестируемая)

Можно написать тест, который проверит: история реализована или нет.

V — Valuable (ценная)

Приносит ценность пользователю или бизнесу. «Рефакторинг базы данных» — не User Story.

Эпики, истории и подзадачи

Эпик (Epic)
└── User Story
    └── Подзадача (Task)
УровеньРазмерПример
ЭпикНедели–месяцы«Личный кабинет клиента»
User StoryДни«Как клиент, я хочу видеть историю заказов»
ПодзадачаЧасы«Создать API-эндпоинт /orders»

Бизнес-аналитик пишет User Stories. Подзадачи — ответственность разработчиков. Эпики — совместная работа с Product Owner.

Разбиение больших историй

Большая история (Epic) бесполезна для планирования. Вот способы разбиения:

По шагам процесса

Эпик: «Оформление заказа»
→ Выбор товаров из каталога
→ Добавление в корзину
→ Выбор способа доставки
→ Выбор способа оплаты
→ Подтверждение заказа
→ Уведомление об успешном оформлении

По ролям

Эпик: «Управление заказами»
→ Как клиент, я хочу отменить заказ
→ Как менеджер, я хочу изменить статус заказа
→ Как логист, я хочу назначить курьера на заказ

По бизнес-правилам

Эпик: «Скидки»
→ Скидка по промокоду
→ Скидка за объём заказа
→ Персональная скидка по программе лояльности

По данным

Эпик: «Профиль клиента»
→ Просмотр основных данных (ФИО, email, телефон)
→ Редактирование контактных данных
→ Загрузка аватара
→ Удаление аккаунта

Типичные ошибки

Ошибка 1: технические истории

❌ «Как разработчик, я хочу настроить Docker-контейнер для микросервиса заказов»

Это задача, а не User Story. User Story описывает ценность для конечного пользователя.

✅ «Как покупатель, я хочу получать подтверждение заказа в течение 3 секунд» — и уже разработчик решает, нужен ли Docker.

Ошибка 2: слишком общие истории

❌ «Как пользователь, я хочу удобный интерфейс»

«Удобный» — не измеримо, не тестируемо. Нарушает T в INVEST.

✅ «Как пользователь, я хочу завершить оформление заказа не более чем за 3 шага»

Ошибка 3: решение вместо проблемы

❌ «Как менеджер, я хочу кнопку "Экспорт в Excel" на странице отчётов»

Кнопка — это решение. Какую проблему она решает?

✅ «Как менеджер, я хочу получить данные по продажам за месяц в формате, пригодном для анализа в Excel, чтобы подготовить отчёт для директора»

Может оказаться, что лучше автоматический отчёт на email, а не кнопка.

Ошибка 4: пропущенные негативные сценарии

Как клиент, я хочу оплатить заказ банковской картой.

Критерии приёмки:
✅ Оплата проходит, заказ подтверждён

А что если:

  • Карта отклонена?
  • Таймаут при обращении к платёжной системе?
  • Двойное списание?
  • Сумма изменилась между добавлением в корзину и оплатой?

Негативные сценарии — то, что отличает проработанную историю от наброска.

Ошибка 5: нет связи с бизнес-процессом

User Stories не живут в вакууме. Каждая история — часть процесса. Если вы не знаете, в каком процессе живёт история — начните с описания бизнес-процесса, а не с User Stories.

User Stories vs другие форматы

Сравнение с форматами из статьи BRD vs SRS vs User Stories:

ПараметрUser StoryUse CaseТребование в SRS
Объём1–3 предложения + AC1–3 страницы1 предложение
ДетализацияСредняяВысокаяВысокая
ФормализмНизкийСреднийВысокий
Где применятьAgile-проектыСложные сценарииWaterfall, госзаказ
Кто читаетВся командаАналитик, разработчикРазработчик

User Stories хороши в Agile-проектах. Для Waterfall или проектов с жёсткими требованиями к документации используйте Use Cases или SRS.

Шаблон карточки User Story

ID: US-042
Эпик: Управление заказами
Приоритет: High

Как менеджер по продажам,
я хочу видеть уведомление при поступлении нового заказа,
чтобы обработать его в течение 15 минут (SLA).

Критерии приёмки:
✅ Уведомление появляется в течение 10 секунд после создания заказа
✅ Уведомление содержит: номер заказа, сумму, имя клиента
✅ Клик по уведомлению открывает карточку заказа
✅ Уведомление исчезает через 30 секунд или по клику
✅ Если менеджер оффлайн — уведомление ждёт его при входе
✅ Звуковой сигнал можно отключить в настройках

Примечания:
- Проверить: одно уведомление всем менеджерам или только ответственному?
- Интеграция с Telegram-ботом — отдельная история (US-043)

Итог

User Story — не формальность, а инструмент коммуникации. Хорошая история — та, по которой разработчик может начать работу, тестировщик — написать тесты, а Product Owner — принять результат. Используйте INVEST как чек-лист, критерии приёмки как контракт, и не забывайте про негативные сценарии.

Нужна помощь с декомпозицией требований? Напишите — помогу превратить бизнес-задачу в набор User Stories, готовых к разработке.