← Назад к вопросам

Включает ли критерии приемки Definition of Done?

2.0 Middle🔥 181 комментариев
#Методологии разработки

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Включают ли критерии приёмки Definition of Done

Это важный и частый вопрос. Ответ: отчасти, но это разные вещи с пересечением.

Определения

Acceptance Criteria (AC): Условия, которые user story должна выполнить, чтобы считаться готовой функционально.

Definition of Done (DoD): Чек-лист всех качественных требований (тесты, документация, review), которые должны быть выполнены для любой работы.

Различие

AC → Функциональность (WHAT) DoD → Качество (HOW)

Пример: User Story "Фильтрация по цене"

AC (Функциональность):

  • Given: На странице товаров
  • When: Устанавливаю фильтр от 100 до 500
  • Then: Появляются только товары в диапазоне
  • And: Фильтр работает за < 1 сек

Отвечает на вопрос: "Это выполняет требование?"

DoD (Качество):

  • Code written and reviewed (code review passed)
  • Unit tests written (coverage > 80%)
  • Integration tests passed
  • Manual testing done
  • No console errors
  • Works on mobile and desktop
  • Documentation updated
  • Security review done (if needed)
  • Performance ok (< 1 sec)

Отвечает на вопрос: "Это качественно сделано?"

Таблица сравнения

АспектACDoD
ЧтоТребованиеКачество
УровеньФункциональностьПроцесс
СпецифичноДля каждой storyОдно для всех
Кто пишетPO / BATeam
КогдаПеред спринтомПостоянно
ПроверяетQA, клиентРазработчик, team
Если не выполненоStory не readyStory не done

Пересечения

Где они пересекаются:

  1. Performance требование может быть и в AC и в DoD
AC: "Загрузка < 2 сек"
DoD: "Performance tested, нет regression"
  1. Security может быть в обоих
AC: "Пароль зашифрован"
DoD: "Security review пройден"
  1. Testing
AC: "Юзер может искать" (функциональное тестирование)
DoD: "Unit tests > 80%" (автоматизированное тестирование)

Практический пример

Story: "Как клиент, я могу сохранить товар в избранное"

AC (Функциональность - что должно работать):

Given: Я на странице товара
When: Я кликаю кнопку "Add to Favorites"
Then: Товар добавляется в избранное
And: Иконка кнопки меняется на заполненную
And: В личном кабинете раздел "Favorites" обновляется
And: Если товар уже в избранном, кнопка удаляет его

Вопрос QA: "Это соответствует AC?"

DoD (Качество - как должно быть):

☐ Code:
  - Code written
  - Code reviewed (2 approvals)
  - No linting errors
  - No code duplication

☐ Testing:
  - Unit tests written (API endpoints)
  - Integration tests (DB interactions)
  - Manual testing done
  - Edge cases tested (already favorited, network error)
  - Browser compatibility tested
  - Mobile responsive tested

☐ Documentation:
  - API docs updated
  - Code comments for complex logic
  - Test coverage >= 85%

☐ Performance:
  - Add to favorites < 500ms
  - No N+1 queries
  - Database indexes optimized

☐ Security:
  - User auth checked
  - User can't add others favorites
  - Input validation

☐ Deployment:
  - Migrations created
  - DB schema changed properly
  - No data loss
  - Backward compatible

Вопрос Team: "Это quality code?"

Включает ли DoD AC?

Ответ: Нет, но AC должны быть выполнены перед DoD.

Процесс:

1. Разработчик реализует feature
2. Проверяет, что выполнены AC (функциональность)
   ✓ Если не выполнены → Back to Dev
   ✓ Если выполнены → идёт дальше
3. Проверяет, что выполнены DoD (качество)
   ✓ Unit tests ✓ Code review ✓ Performance
   ✓ Если не выполнены → Back to Dev
   ✓ Если выполнены → Story DONE
4. QA тестирует (проверяет ещё раз AC и качество)
5. Done!

Диаграмма:

┌─────────────────────────────────────────────┐
│ User Story / Task                           │
├─────────────────────────────────────────────┤
│ ┌───────────────────────────────────────┐   │
│ │ Acceptance Criteria (что должно      │   │
│ │ работать функционально)              │   │
│ │                                       │   │
│ │ Given / When / Then                  │   │
│ └───────────────────────────────────────┘   │
│                    ↓                         │
│ ┌───────────────────────────────────────┐   │
│ │ Definition of Done (как качественно) │   │
│ │                                       │   │
│ │ Code + Tests + Review + Docs + Perf  │   │
│ └───────────────────────────────────────┘   │
└─────────────────────────────────────────────┘

Когда AC входит в DoD

В некоторых случаях AC пересекаются с DoD:

1. Performance AC

АС: "API ответит за < 200ms"
Это также требование для DoD (testing performance)

2. Security AC

АС: "Данные шифруются"
Это также требование для DoD (security review)

3. Compatibility AC

АС: "Работает на мобильной версии"
Это также требование для DoD (testing compatibility)

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

Ошибка 1: Путаница между AC и DoD

❌ "AC это то же, что DoD"
✅ AC = функциональность, DoD = качество

Ошибка 2: AC забывают про DoD

❌ "AC выполнены, пускаем в продакшен" (без тестов!)
✅ AC выполнены → DoD выполнены → в продакшен

Ошибка 3: DoD требует выполнять AC дважды

❌ DoD = "Проверить AC" (дублирование работы)
✅ DoD = "Тесты, документация, review"

Ошибка 4: DoD слишком легкий

❌ DoD = только "Code written"
✅ DoD = Code + Tests + Review + Docs + Performance

Правильный процесс

Story Writing:

1. BA пишет User Story
2. PO и BA определяют Acceptance Criteria
3. Team определяет Definition of Done

Development:

1. Dev пишет код
2. Dev проверяет AC (выполнены ли требования?)
3. Dev проверяет DoD (тесты, документация, review)
4. QA проверяет оба
5. Story DONE

Вывод

AC и DoD НЕ одно и то же:

  • AC = Функциональные требования (WHAT)
  • DoD = Требования к качеству (HOW)

AC включены в процесс DoD:

  • First: AC должны быть выполнены
  • Then: DoD требования (тесты, review, docs)

Оба нужны:

  • Без AC не знаешь, что делать
  • Без DoD получишь плохое качество

Порядок: АС первые (функциональность) → DoD (качество) → DONE