Программу можно проверять на разном масштабе: отдельную маленькую деталь, связку деталей, весь продукт целиком или продукт глазами заказчика. Эти масштабы называют уровнями тестирования. Их четыре, и они идут от самого мелкого к самому крупному.
Понимать уровни важно, чтобы знать, за что отвечаете именно вы. Часть уровней — это работа разработчиков, часть — ваша. Разберём каждый на примере интернет-магазина.
Модульное тестирование (unit)
Самый мелкий уровень. Проверяется одна маленькая деталь программы в изоляции — например, функция, которая считает скидку. Ей дают разные входные данные и смотрят, правильный ли результат: скидка 10% от 1000 — это 100, а от нуля — ноль.
Кто делает: почти всегда разработчики, кодом (это автоматизированные тесты). Ручной тестировщик модульные тесты обычно не пишет, но полезно знать, что они есть: если они хорошие, до вас доедет меньше глупых багов в расчётах.
Аналогия: перед сборкой машины проверяют каждую деталь отдельно — болт, свечу, тормозной диск.
Интеграционное тестирование (integration)
Уровень выше. Проверяется, что детали правильно работают вместе. Отдельно «корзина» работает и отдельно «оплата» работает — но передаёт ли корзина в оплату верную сумму? Именно на стыках чаще всего и ломается: каждый кусок сам по себе хорош, а вместе — нет.
Кто делает: и разработчики (кодом), и тестировщики (руками, особенно когда система общается с внешними сервисами — платёжкой, почтой). Стыки между частями — классическое место багов, о котором стоит помнить всегда.
Аналогия: собрали двигатель из проверенных деталей — и смотрят, заводится ли он в сборе.
Системное тестирование (system)
Проверяется весь продукт целиком, как его увидит пользователь. Тестировщик проходит полные сценарии от начала до конца: зашёл на сайт, нашёл товар, положил в корзину, оформил заказ, оплатил, получил письмо. Всё вместе, в собранном виде.
Кто делает: это основная работа ручного тестировщика. Здесь проверяют не только что «работает», но и нефункциональные вещи — удобно ли, быстро ли, безопасно ли.
Аналогия: собранную машину выгоняют на трек и проверяют, едет ли она, тормозит ли, светят ли фары.
Приёмочное тестирование (acceptance, UAT)
Финальная проверка: устраивает ли продукт заказчика или пользователя. Вопрос здесь не «нет ли багов», а «то ли это, что было нужно, можно ли выпускать». Часто эту проверку проводит сам заказчик или выделенные пользователи — отсюда название UAT (User Acceptance Testing, приёмочное тестирование пользователем).
Кто делает: заказчик, бизнес, иногда — выделенные пользователи. Тестировщик помогает: готовит сценарии, сопровождает, фиксирует замечания.
Аналогия: покупатель садится в машину, проезжает круг и решает — берёт или нет.
Пирамида: чего должно быть больше
Есть образ — пирамида тестирования. В основании много быстрых и дешёвых модульных тестов, выше — поменьше интеграционных, на самом верху — совсем немного медленных системных проверок через интерфейс.
Смысл для новичка: не всё нужно проверять на самом верхнем уровне через клики мышкой. Если расчёт скидки надёжно покрыт модульными тестами, вам не нужно вручную перебирать все её варианты — достаточно проверить, что она в целом на месте. Это помогает не тратить силы там, где уже есть более дешёвая проверка.
Где это применяется
Уровни помогают понять, где искать баг и чья это зона. Если сумма в корзине неверная — это, скорее всего, модульная логика расчёта. Если корзина верная, а в оплату уходит другая сумма — это стык, интеграция. Если по отдельности всё хорошо, а сквозной сценарий разваливается — системный уровень. Умея это различать, вы точнее описываете баг и быстрее находите виноватую часть.
Где спотыкаются начинающие:
- Всё проверяют только через интерфейс, кликами, даже то, что дешевле проверить запросом к API или в базе.
- Забывают про стыки. Каждый кусок работает, а вместе — нет; интеграционные баги самые коварные.
- Путают системное и приёмочное. Первое — «работает ли без багов», второе — «то ли это вообще, что нужно бизнесу».
Что учить дальше. Разберитесь с видами тестирования — что именно проверяют (функции, скорость, удобство, безопасность), и с чёрным и белым ящиком — с каким знанием о внутренностях вы подходите к проверке.