Что такое пирамида тестирования и какие уровни тестов существуют
Что проверяют
Понимаете ли вы, почему тестов разного уровня должно быть разное количество. Заодно смотрят, сталкивались ли вы с последствиями перевёрнутой пирамиды.
Как отвечать
Пирамида это про пропорции: чем выше уровень, тем тесты дороже, медленнее и хрупче, поэтому их должно быть меньше.
Основание это модульные тесты. Отдельная функция или класс, без базы и сети. Их много, они выполняются за миллисекунды, точно указывают место поломки.
Середина это интеграционные. Стык компонентов: код и база, сервис и очередь, роут и его зависимости. Их меньше, они медленнее, но ловят то, что не видно на модульном уровне: неверный запрос, ошибку сериализации, отсутствующий индекс.
Вершина это сквозные. Сценарий целиком через интерфейс. Их единицы, они самые медленные и чаще всего мигают.
Перевёрнутая пирамида (много сквозных, мало модульных) даёт прогон на часы и постоянные ложные падения, после которых тестам перестают верить. Это главный практический аргумент.
Стоит упомянуть и соседние модели: «трофей» смещает вес к интеграционным тестам, потому что они ближе к реальному поведению, а «соты» для микросервисов делают акцент на контрактных тестах.
Где спотыкаются
Называют уровни, но не могут объяснить, почему пропорции именно такие.
Считают, что сквозные тесты надёжнее, раз проверяют всё сразу. Они проверяют всё сразу и падают от чего угодно, включая моргнувшую сеть.
Забывают про стоимость поддержки: тест, который чинят каждую неделю, обходится дороже пойманных им дефектов.