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

Ответ

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

  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) — поверхностная проверка стабильности ключевых функций перед запуском более глубокого тестирования.

Ответ 18+ 🔞

А, ну вот, классика, блядь! Уровни тестирования, ёпта. Это ж как слоёный пирог, только вместо теста и варенья — сплошные баги и нервные срывы. Слушай, разжую, как есть, чтобы ты, сука, не путался.

Представь, ты строишь дом, ага? Так вот:

1. Модульное тестирование (Unit Testing) Это когда ты, мудак, каждый кирпичик в отдельности обнюхиваешь и стучишь по нему. «А ты, сука, держать будешь? А не треснешь?». Код разбиваешь на самые мелкие функции и проверяешь их в полной изоляции, чтобы они друг другу не мешали. Делают это обычно сами разработчики, пока не охуели окончательно.

# Вот смотри, функция, которая скидку считает. Проще некуда.
def calculate_discount(price, discount_percent):
    return price * (1 - discount_percent / 100)

# А это тест на неё. Проверяем, не обосрётся ли она на ровном месте.
def test_calculate_discount():
    assert calculate_discount(1000, 10) == 900  # Тысяча минус 10% = 900? Ок.
    assert calculate_discount(0, 50) == 0       # Ноль с любой скидкой — ноль. Логично, пиздец.

Вот если этот тест падает — всё, чувак, у тебя кирпич кривой, иди переделывай. Основа основ, ебать.

2. Интеграционное тестирование (Integration Testing) А вот тут начинается веселье, блядь! Ты эти проверенные кирпичи начинаешь скреплять раствором. Смотришь, а не протекает ли на стыке? Один модуль данные другому передаёт, а тот их, сука, в формат неправильный преобразует и всё к херам ломает. Тестируешь связки: приложение с базой данных, один микросервис с другим, API всякие. Волнение ебать, потому что каждый думал, что его кусок идеален, а вместе они творят какую-то дичь.

3. Системное тестирование (System / End-to-End Testing) Дом построили, крышу накрыли. Теперь надо зайти внутрь, блядь, и проверить: двери открываются? Краны не текут? Розетки бьют током? Тестируем всю систему целиком, как будто мы реальные юзеры-распиздяи. Запускаем автотесты, которые в браузере тыкают кнопки, заполняют формы. Если тут всё ок — можно уже выдыхать, но не до конца.

4. Приемочное тестирование (Acceptance / UAT Testing) А это, сука, финальный акт! Приезжает заказчик — этакий царь-батюшка — или его представитель. Он смотрит на дом и говорит: «А я, блядь, хотел не розовые обои, а персиковые! И туалет не там!». Тестирование не на «работает ли», а на «удовлетворяет ли мои хотелки». Если он подписывается — ура, можно пить. Если нет — всем пизда, переделывать.

А ещё есть, блядь, такие штуки, которые как призраки — могут в любом слое всплыть:

  • Регрессионное тестирование — это когда ты починил унитаз, а после этого, сука, свет на кухне перестал работать. Проверяешь, не сломал ли ты чего старого, пока новое делал.
  • Дымовое тестирование (Smoke Testing) — быстрая проверка «а не горит ли оно?». Запустили билд, нажали на пять главных кнопок. Если не вылетело с ошибкой — можно запускать более долгие и нудные тесты. Если горит — всё, пиздец, даже не начинай.

Вот и вся иерархия, ёпта. Снизу вверх, от кирпича до дворца с приведениями в виде багов. Понял теперь, да?