Какие основные уровни тестирования ПО вы знаете?

«Какие основные уровни тестирования ПО вы знаете?» — вопрос из категории Основы тестирования, который задают на 36% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Уровни тестирования определяют что и когда тестировать в процессе разработки ПО. Основные уровни, расположенные по принципу «снизу вверх»:

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

    • Цель: Проверить корректность работы наименьших неделимых единиц кода (функций, методов, классов) в изоляции от других частей системы.
    • Кто выполняет: Разработчики.
    • Пример (Python, pytest):

      # Тестируемая функция
      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
  2. Интеграционное тестирование (Integration Testing)

    • Цель: Проверить взаимодействие и корректность обмена данными между несколькими модулями, компонентами или внешними системами (API, базы данных, микросервисы).
    • Пример: Тестирование работы контроллера веб-приложения с сервисным слоем и базой данных.
  3. Системное тестирование (System / End-to-End Testing)

    • Цель: Проверить целостную систему на соответствие функциональным и нефункциональным требованиям. Тестируется готовый продукт в среде, максимально приближенной к боевой.
    • Пример: Автоматизированные UI-тесты, которые имитируют действия пользователя в браузере или мобильном приложении.
  4. Приемочное тестирование (Acceptance / UAT Testing)

    • Цель: Убедиться, что система готова к выпуску и удовлетворяет бизнес-требованиям и потребностям конечного пользователя или заказчика.
    • Кто выполняет: Заказчик, продукт-менеджер или тестировщики на основе пользовательских сценариев.

Дополнительные, сквозные типы тестирования, которые могут выполняться на разных уровнях:

  • Регрессионное тестирование — проверка после изменений.
  • Дымовое тестирование (Smoke Testing) — поверхностная проверка стабильности ключевых функций перед запуском более глубокого тестирования.