QA термины

Зачем нужно

Знание QA-терминологии необходимо каждому разработчику. Ты будешь писать тесты, работать с тестировщиками, разбирать баг-репорты и участвовать в обсуждении качества продукта. Без общего языка — хаос.

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

  • Code review — обсуждение качества кода
  • Sprint planning — оценка задач с учётом тестирования
  • Bug tracking — создание и приоритизация багов
  • Собеседования — вопросы по основам QA
  • RS School — cross-check и автоматические проверки

Quality Assurance vs Quality Control

Quality Assurance (QA)          Quality Control (QC)
─────────────────────           ────────────────────
Процесс-ориентирован            Продукт-ориентирован
Предотвращает дефекты           Находит дефекты
ДО и ВО ВРЕМЯ разработки        ПОСЛЕ разработки
Проактивный                     Реактивный

Пример:                         Пример:
- Code review                   - Тестирование
- Стандарты кодирования         - Инспекция
- CI/CD                         - Ревью результатов

Testing — виды тестирования

По уровню

        ┌──────────────┐
        │   E2E Tests  │  ← мало, дорого, медленно
        ├──────────────┤
        │ Integration  │  ← среднее количество
        │    Tests     │
        ├──────────────┤
        │  Unit Tests  │  ← много, дёшево, быстро
        └──────────────┘
        Пирамида тестирования
Тип Что тестирует Инструменты
Unit Отдельные функции/модули Jest, Vitest
Integration Взаимодействие модулей Jest, Testing Library
E2E (End-to-End) Полный сценарий пользователя Cypress, Playwright

По подходу

Тип Описание
Функциональное Проверяет ЧТО делает система
Нефункциональное Проверяет КАК работает (производительность, безопасность)
Ручное Тестировщик проверяет вручную
Автоматизированное Скрипты проверяют автоматически
Регрессионное Проверка, что новый код не сломал старое
Smoke Быстрая проверка базового функционала
Sanity Проверка конкретного исправления

Verification vs Validation

Verification Validation
Вопрос Правильно ли мы делаем продукт? Делаем ли мы правильный продукт?
Фокус Соответствие спецификации Соответствие ожиданиям пользователя
Метод Ревью, инспекция, статический анализ Тестирование, демо, UAT
Когда Во время разработки После разработки
Спецификация: "Кнопка должна быть синей"
Verification: Кнопка синяя? → Да ✓
Validation: Пользователю удобно? Он находит кнопку? → Тестируем

Bug Lifecycle — жизненный цикл бага

┌──────┐   ┌────────┐   ┌──────────┐   ┌───────┐   ┌────────┐
│ New  │──▶│ Open   │──▶│ In Work  │──▶│ Fixed │──▶│Verified│──▶ Closed
└──────┘   └────────┘   └──────────┘   └───────┘   └────────┘
               │                            │           │
               ▼                            ▼           ▼
           Rejected                     Reopened    Reopened
           (не баг)                  (не исправлен)
Статус Описание
New Баг только что создан
Open Баг подтверждён, ждёт назначения
In Progress Разработчик работает над исправлением
Fixed Разработчик исправил
Verified QA подтвердил исправление
Closed Баг закрыт
Reopened Баг не исправлен или вернулся
Rejected Это не баг (by design, не воспроизводится)

Severity vs Priority

Severity (серьёзность) — техническое влияние

Уровень Описание Пример
Blocker Система не работает Приложение не запускается
Critical Основная функция сломана Невозможно оплатить заказ
Major Функция работает неправильно Неверный расчёт суммы
Minor Косметический дефект Неправильный отступ
Trivial Незначительный Опечатка в тексте

Priority (приоритет) — бизнес-важность

Уровень Описание Пример
P1 (Critical) Исправить немедленно Лежит production
P2 (High) Исправить в этом спринте Основная фича сломана
P3 (Medium) Исправить в ближайших спринтах Мелкий функционал
P4 (Low) Когда будет время Косметика

Важно: Severity и Priority не всегда совпадают!

Опечатка в логотипе компании на главной:
  Severity: Minor (косметика)
  Priority: P1 (бизнес требует немедленного исправления)

Баг в неиспользуемой админ-функции:
  Severity: Critical (данные теряются)
  Priority: P4 (функцией никто не пользуется)

Баг-репорт — структура

## Заголовок
Кнопка "Купить" не работает на мобильных устройствах

## Окружение
- Browser: Chrome 120, iOS Safari 17
- OS: iOS 17.2, Android 14
- Размер экрана: < 768px

## Шаги воспроизведения
1. Открыть страницу товара на мобильном
2. Прокрутить до описания
3. Нажать кнопку "Купить"

## Ожидаемый результат
Товар добавлен в корзину

## Фактический результат
Ничего не происходит, клик не регистрируется

## Severity: Major
## Priority: P2

## Скриншот / Видео
[прикрепить]

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

Ошибка Проблема Решение
Путают QA и QC Разные подходы QA = процесс, QC = проверка продукта
Путают Severity и Priority Разная шкала Severity = техническая, Priority = бизнес
Нет шагов воспроизведения Баг не воспроизводим Всегда описывай точные шаги
Пропускают регресс Старый код ломается Автоматизируй регрессионные тесты
Только happy path Баги в edge cases Тестируй граничные случаи

Практика

  1. Напиши баг-репорт для найденного бага на любом сайте
  2. Определи Severity и Priority для 5 разных багов
  3. Составь чек-лист для тестирования формы регистрации
  4. Определи, какие тесты: unit, integration или E2E
  5. Проведи smoke-тестирование учебного проекта

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

Ресурсы