Жизненный цикл тестирования (STLC)

Зачем нужно

STLC (Software Testing Life Cycle) — это последовательность фаз тестирования. Как SDLC описывает жизненный цикл разработки, так STLC описывает жизненный цикл тестирования. Понимание STLC помогает разработчику планировать тесты и общаться с QA-командой на одном языке.

Где используется

  • Планирование проекта — оценка времени на тестирование
  • Спринт-планирование — задачи QA в спринте
  • Создание тест-планов — структурированный подход
  • Собеседования — частый вопрос на позиции QA и разработчика

Фазы STLC

┌────────────┐   ┌────────────┐   ┌────────────┐
│ Requirement│──▶│   Test     │──▶│   Test     │
│  Analysis  │   │  Planning  │   │   Design   │
└────────────┘   └────────────┘   └────────────┘
                                        │
┌────────────┐   ┌────────────┐         ▼
│   Test     │◀──│Environment │◀──┌────────────┐
│ Execution  │   │   Setup    │   │   Test     │
└────────────┘   └────────────┘   │Development │
      │                           └────────────┘
      ▼
┌────────────┐
│   Test     │
│  Closure   │
└────────────┘

Фаза 1: Requirement Analysis

Цель: понять ЧТО тестировать.

Вход Выход
Требования, спецификация Список тестируемых требований
User stories Матрица трассировки (RTM)
Acceptance criteria Вопросы к аналитикам/заказчику
## User Story
Как пользователь, я хочу зарегистрироваться через email,
чтобы получить доступ к сервису.

## Acceptance Criteria
-  Email обязательное поле
-  Пароль минимум 8 символов
-  Подтверждение пароля совпадает
-  При успехе — редирект на dashboard
-  При ошибке — сообщение об ошибке

## Вопросы
- Есть ли ограничение на домены email?
- Нужна ли верификация email?
- Какие символы допустимы в пароле?

Entry Criteria (условия входа)

  • Требования утверждены
  • Acceptance criteria определены
  • Есть доступ к системе/документации

Фаза 2: Test Planning

Цель: определить КАК тестировать.

Вход Выход
Требования Тест-план
Оценка рисков Оценка трудозатрат
Ресурсы Стратегия тестирования
## Тест-план: Модуль регистрации

### Scope (что тестируем)
- Форма регистрации
- Валидация полей
- Интеграция с API
- UI на мобильных устройствах

### Out of scope (что НЕ тестируем)
- Email-рассылка (отдельный модуль)
- Платёжная система

### Стратегия
- Unit-тесты: валидация форм (Vitest)
- Integration: API-вызовы (MSW + Testing Library)
- E2E: полный сценарий регистрации (Playwright)

### Окружение
- Browsers: Chrome, Firefox, Safari
- Devices: Desktop, Mobile (iOS, Android)
- API: staging-сервер

### Риски
- API может быть нестабильным → используем моки
- Сроки сжатые → приоритизируем критичные кейсы

Фаза 3: Test Design

Цель: создать тест-кейсы и тест-данные.

## Test Case: TC-REG-001

**Название:** Успешная регистрация с валидными данными
**Приоритет:** High
**Предусловие:** Пользователь не авторизован

| Шаг | Действие | Ожидаемый результат |
|-----|----------|---------------------|
| 1 | Открыть /register | Форма регистрации отображается |
| 2 | Ввести email: test@mail.com | Поле заполнено |
| 3 | Ввести пароль: Test1234! | Поле заполнено, пароль скрыт |
| 4 | Повторить пароль: Test1234! | Поле заполнено |
| 5 | Нажать "Зарегистрироваться" | Редирект на /dashboard |
## Test Case: TC-REG-002

**Название:** Ошибка при невалидном email
**Приоритет:** High

| Шаг | Действие | Ожидаемый результат |
|-----|----------|---------------------|
| 1 | Открыть /register | Форма отображается |
| 2 | Ввести email: "not-an-email" | Поле заполнено |
| 3 | Нажать "Зарегистрироваться" | Сообщение "Введите корректный email" |

Техники тест-дизайна

Equivalence Partitioning (классы эквивалентности):
  Поле "Возраст" (1-120):
  - Валидный класс: 1-120 → тест: 50
  - Невалидный: < 1 → тест: 0, -5
  - Невалидный: > 120 → тест: 121, 999

Boundary Value Analysis (граничные значения):
  Поле "Возраст" (1-120):
  - Тесты: 0, 1, 2, 119, 120, 121

Фаза 4: Environment Setup

Цель: подготовить окружение для тестирования.

# Установка тестовых инструментов
npm install --save-dev vitest @testing-library/react playwright

# Настройка тестовой БД
docker compose -f docker-compose.test.yml up -d

# Seed тестовых данных
npm run db:seed:test

Entry Criteria

  • Тестовое окружение развёрнуто
  • Тестовые данные загружены
  • Доступ к API настроен
  • Инструменты тестирования установлены

Фаза 5: Test Execution

Цель: выполнить тесты и зафиксировать результаты.

# Запуск unit-тестов
npm run test

# Запуск E2E тестов
npx playwright test

# Запуск с отчётом
npx playwright test --reporter=html
## Результаты тестирования

| Test Case | Статус | Комментарий |
|-----------|--------|-------------|
| TC-REG-001 | PASS | — |
| TC-REG-002 | PASS | — |
| TC-REG-003 | FAIL | Bug #142: пароль < 8 символов принимается |
| TC-REG-004 | BLOCKED | API staging недоступен |
| TC-REG-005 | PASS | — |

Пройдено: 3/5 (60%)
Упавших: 1
Заблокированных: 1

Фаза 6: Test Closure

Цель: подвести итоги и сформировать отчёт.

## Отчёт о тестировании: Модуль регистрации

### Метрики
- Всего тест-кейсов: 25
- Пройдено: 22 (88%)
- Упавших: 2 (8%)
- Заблокированных: 1 (4%)

### Найденные баги
- #142 Critical: валидация пароля не работает
- #143 Minor: tooltip обрезается на мобильном

### Покрытие требований
- Функциональные: 95%
- Нефункциональные: 70%

### Рекомендация
Не готово к релизу. Блокер: баг #142.

Exit Criteria (условия выхода)

  • Все критичные тест-кейсы пройдены
  • Нет открытых Blocker/Critical багов
  • Покрытие требований > 90%
  • Отчёт о тестировании сформирован

Entry/Exit Criteria — сводка

Фаза Entry Criteria Exit Criteria
Analysis Требования утверждены Список тестируемых требований
Planning Требования проанализированы Тест-план утверждён
Design Тест-план готов Тест-кейсы написаны
Setup Тест-кейсы готовы Окружение настроено
Execution Окружение готово Тесты выполнены, баги заведены
Closure Тесты выполнены Отчёт сформирован

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

Ошибка Проблема Решение
Тестирование без плана Хаотичное покрытие Составь хотя бы чек-лист
Нет entry/exit criteria Непонятно когда начинать/заканчивать Определи критерии заранее
Только happy path Пропуск негативных сценариев Используй boundary values
Нет регрессии Старый код ломается Автоматизируй регрессию
Игнорируют окружение Тесты зависят от среды Изолируй тестовое окружение

Практика

  1. Напиши 5 тест-кейсов для формы логина
  2. Составь тест-план для TODO-приложения
  3. Определи entry/exit criteria для своего проекта
  4. Используй boundary value analysis для поля ввода числа
  5. Создай отчёт о тестировании по шаблону

Связанные темы

Ресурсы