Ответ
Пирамида тестирования — это концептуальная модель, которая визуализирует оптимальное распределение усилий по автоматизации тестирования в проекте. Её цель — создать устойчивую, быструю и экономически эффективную стратегию автоматизации.
Уровни пирамиды (снизу вверх):
-
Unit-тесты (основание, больше всего):
- Что тестируют: Отдельные функции, методы или классы в изоляции (с использованием моков/стабов).
- Цель: Проверить корректность логики самого маленького компонента.
- Свойства: Быстрые, дешёвые, стабильные, легко локализуют ошибки.
# Пример unit-теста для функции def calculate_discount(price, discount_percent): return price * (1 - discount_percent / 100)
def test_calculate_discount(): assert calculate_discount(1000, 10) == 900 assert calculate_discount(0, 50) == 0
-
Интеграционные тесты (середина, среднее количество):
- Что тестируют: Взаимодействие нескольких модулей, сервисов или с внешними зависимостями (БД, API).
- Цель: Убедиться, что компоненты правильно обмениваются данными и работают вместе.
- Свойства: Медленнее unit-тестов, сложнее в поддержке.
-
UI/E2E-тесты (верхушка, меньше всего):
- Что тестируют: Полный пользовательский сценарий через графический интерфейс (браузер, мобильное приложение).
- Цель: Проверить систему с точки зрения конечного пользователя.
- Свойства: Самые медленные, хрупкие (ломаются при изменении UI), дорогие в поддержке.
Почему эта структура эффективна?
- Раннее обнаружение багов: Ошибки находятся на уровне unit-тестов, где их исправление дешевле.
- Скорость: Большая часть тестов (unit) выполняется за секунды.
- Стабильность: UI-тесты, подверженные флакiness, минимизированы.
- Рентабельность: Снижаются затраты на поддержку автоматизации.