Виды тестирования: что проверяют и кто

Слово «тестирование» объединяет разные проверки, и просьба «проверьте всё» ничего не уточняет. Здесь разберём уровни и виды тестирования, что каждый проверяет, кто обычно этим занимается и как они выстраиваются в один релиз.


Тестирование нужно, чтобы убедиться, что система делает то, что записано в требованиях, и не ломает то, что работало раньше. Когда проверок несколько, важно понимать, какая из них отвечает на какой вопрос. Иначе одни ошибки ищут трижды, а другие не ищет никто.

Место проверки в жизненном цикле разработки описано в статье 01-06. Здесь смотрим на сами проверки.

Кейс: «проверьте всё» перед релизом

В «Узелке» готовится релиз отмены заказа с причиной. Владелец просит тестировщика: «Проверь всё». Тестировщик уточняет: что считать «всем»? Правило отмены в коде? Работу кнопки с сервером? Что оформление заказа не пострадало? Что магазин выдержит распродажу? Это разные вопросы, и на каждый отвечает своя проверка. (Состав релиза условный: мы взяли его для иллюстрации.)

Рисунок 1. «Проверь всё» и четыре вопроса

Если заранее назвать проверки и тех, кто их проводит, «всё» превращается в короткий список, по которому видно, что проверено, а что нет.

Уровень и вид: два разных вопроса

Обычно различают уровни и виды тестирования.

Уровень тестирования - это группа проверок, которые организуют и ведут вместе, привязанная к этапу разработки: от отдельных компонентов до всей системы. Уровень отвечает на вопрос «в каком масштабе проверяем».

Вид тестирования - это группа проверок, связанная с определённым качеством системы: что она делает, как быстро работает, выдерживает ли нагрузку. Вид отвечает на вопрос «что именно проверяем». Один и тот же вид может встречаться на разных уровнях.

Четыре уровня

Уровни обычно описывают так.

  • Модульное (компонентное) тестирование проверяет самые мелкие части программы: функции и методы. Его обычно пишут сами разработчики рядом с кодом.
  • Интеграционное тестирование проверяет, что объединённые части одной системы обмениваются данными без сбоев на стыках.
  • Системное тестирование проверяет, что система целиком соответствует заданным требованиям.
  • Приёмочное тестирование подтверждает, что система отвечает потребностям бизнеса и готова к запуску. Это проверка требований с точки зрения пользователя и заказчика.

Модульное и системное тестирование мы здесь не разбираем подробно. Нам важнее приёмочное и интеграционное: критерии приёмки описаны в статье 02-09, а от стыков между системами зависит проектирование интеграций.

Рисунок 2. Уровни тестирования

Виды проверок

Виды дополняют уровни. Для работы с требованиями чаще всего встречаются три.

  • Функциональное тестирование проверяет, что функция работает так, как записано в требованиях.
  • Регрессионное тестирование повторно проверяет то, что уже работало, чтобы убедиться, что изменение ничего не сломало. При изменении компонента или системы тестирование должно включать и проверку исправления, и регрессионную проверку.
  • Нагрузочное тестирование проверяет поведение системы при ожидаемой нагрузке. Подробнее нагрузку и производительность разбирает статья 02-13.

В нашем релизе функциональная проверка подтверждает, что отмена до передачи курьеру проходит, а после передачи показывает отказ. Регрессионная проверяет, что после правки оформление и оплата заказа по-прежнему работают.

Рисунок 3. Функциональное, регрессионное и нагрузочное тестирование

Кто проводит проверки

Однозначно можно назвать двух исполнителей: модульные тесты обычно пишут разработчики, а приёмочное тестирование относится к пользователям и бизнесу. Для остальных проверок исполнитель зависит от команды. Где-то интеграционные тесты пишут разработчики, где-то тестировщики. Поэтому исполнителя полезно назвать заранее, в плане проверок.

Рисунок 4. Кто проводит проверки

Наше участие в этих проверках сводится к понятным вещам: мы формулируем критерии приёмки, отвечаем на вопросы о том, что имелось в виду в требовании, и сверяем, что проверки покрывают требования (как именно, разберём в статье 02-25).

Один релиз по порядку

В типовом порядке проверки идут от малого к целому: сначала модульное, затем интеграционное, системное, регрессионное и в конце приёмочное. Если на любом шаге нашли дефект, работа возвращается на доработку, и проверки повторяют. Порядок в разных командах отличается, но принцип тот же: чем дороже ошибка, тем раньше её стоит поймать.

Рисунок 5. Путь релиза через пять проверок с возвратом на доработку

Где это встречается в работе

  • Планирование релиза: какие проверки входят в состав работ.
  • Обсуждение сроков с командой: тестирование тоже входит в оценку (статья 02-23).
  • Приёмка релиза вместе с владельцем продукта (статья 02-09).
  • Разбор дефекта: на каком уровне его должны были поймать.
  • Подготовка тест-кейсов по требованиям (статья 02-25).

Итог

Уровень отвечает на вопрос «в каком масштабе проверяем», вид отвечает на вопрос «что именно проверяем». Четыре уровня идут от модульного к приёмочному, а виды вроде функционального, регрессионного и нагрузочного пересекаются с ними. Исполнителя проверки лучше назвать заранее: однозначно можно назвать только разработчиков для модульных тестов и бизнес для приёмки.

Что дальше

Дальше разберём, как из требований выводить тест-кейсы и как проходит приёмка (статья 02-25), а затем соберём чек-лист постановки задачи разработке (статья 02-26).

Проверка знаний

5 вопросов