Жизненный цикл тестирования (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 |
| Нет регрессии | Старый код ломается | Автоматизируй регрессию |
| Игнорируют окружение | Тесты зависят от среды | Изолируй тестовое окружение |
Практика
- Напиши 5 тест-кейсов для формы логина
- Составь тест-план для TODO-приложения
- Определи entry/exit criteria для своего проекта
- Используй boundary value analysis для поля ввода числа
- Создай отчёт о тестировании по шаблону
Связанные темы
- QA термины — базовая терминология
- Модели разработки — SDLC модели
- Agile и Scrum — тестирование в Agile
- Code Review — проверка кода