Баланс между
качеством и дедлайном

Классификация видов тестирования

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

швейцарский баг

В этой статье - систематизация того, что часто путают: по каким критериям делятся виды тестирования и как они соотносятся друг с другом.

По степени знания системы

1. Тестирование «чёрного ящика» (Black-box testing)

Ты не знаешь, как работает система внутри. Тебя интересует только вход → выход. Подал данные - смотришь, что получилось.

Применяется: UI-тесты, API-тесты, приёмочное тестирование.
Пример: отправляешь форму и проверяешь, пришёл ли email.

2. Тестирование «белого ящика» (White-box testing)

Ты знаешь код и логику. Проверяешь конкретные ветки условий, циклы, покрытие кода и внутренние функции.

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

3. Тестирование «серого ящика» (Gray-box testing)

Ты частично знаешь внутреннюю структуру. Комбинируешь внешний и внутренний подходы. Отличный компромисс.

Применяется: интеграционное тестирование, API-тесты с пониманием бизнес-логики.
Пример: знаешь, как устроен бэкенд, и проверяешь API с учётом этого.

По уровню тестирования

1. Модульное (юнит) тестирование

Тестируем отдельную функцию или модуль. Быстро, точно, автоматически.

Кто пишет: чаще всего разработчики.
Инструменты: JUnit, pytest, Go test и др.

2. Интеграционное тестирование

Проверяем, как модули работают вместе. Ошибки часто всплывают именно на стыке.

Пример: проверка взаимодействия API и базы данных.

3. Системное тестирование

Тест всей системы как единого целого. Проверка требований, логики, поведения.

Пример: запуск автотестов на собранной версии приложения.

4. Приёмочное тестирование (Acceptance testing)

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

Может выполняться вручную или автоматически. Часто на проде или около.

По цели тестирования

1. Функциональное тестирование

Проверяем, что продукт делает то, что должен.

Пример: проверка входа по email и паролю.

2. Нефункциональное тестирование

Проверяем качество того, как работает система: скорость, надёжность, удобство, безопасность.

Ключевые виды:

  • Нагрузочное тестирование (Load testing) - как система ведёт себя под нагрузкой
  • Стресс-тестирование (Stress testing) - а если нагрузить по максимуму?
  • Тестирование безопасности (Security testing) - а если попытаться взломать?
  • Тестирование удобства (Usability testing) - а удобно ли этим вообще пользоваться?

По степени автоматизации

1. Ручное тестирование

Проверка вручную: клики, вводы, визуальный контроль.

Плюсы: гибкость, интуитивность, быстрая проверка UI.
Минусы: не воспроизводимо, дорого, медленно.

2. Автоматизированное тестирование

Скрипты и тест-фреймворки сами проверяют приложение.

Плюсы: скорость, повторяемость, покрытие.
Минусы: высокая стоимость внедрения, необходимость поддержки.

По времени выполнения в процессе разработки

  • Smoke testing - «дышит ли система вообще?»
  • Sanity testing - быстрый чек критичного функционала
  • Регрессионное тестирование - не сломалось ли что-то старое после изменений?
  • Переходное тестирование (Migration testing) - проверка после миграции данных или обновлений
  • Тестирование на соответствие (Compliance testing) - соответствует ли продукт стандартам и регламентам

Таблица для запоминания

| Критерий          | Примеры видов                               |
|-------------------|---------------------------------------------|
| Знание системы    | Чёрный, белый, серый ящик                   |
| Уровень           | Юнит, интеграционное, системное             |
| Цель              | Функциональное, нефункциональное            |
| Автоматизация     | Ручное, автоматизированное                  |
| Этап разработки   | Smoke, регресс, приёмка и т.д.              |