Какие виды тестирования вы применяли в рамках задачи (Task)?

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

Ответ

При работе над задачей (Task) применяются различные виды тестирования, чтобы обеспечить качество на разных уровнях.

Типичный цикл для задачи:

  1. Дымовое тестирование (Smoke Testing):

    • Цель: Быстрая проверка базовой работоспособности основного функционала после сборки или развертывания.
    • Пример: Проверить, что главная страница открывается, аутентификация работает, ключевое API возвращает данные.
      # Пример smoke-теста для API задачи
      def test_smoke_task_api():
      response = requests.get(f"{BASE_URL}/api/tasks")
      assert response.status_code == 200, "API недоступен"
      tasks = response.json()
      assert isinstance(tasks, list), "Ответ должен быть списком"
  2. Функциональное тестирование (Functional Testing):

    • Цель: Детальная проверка того, что реализованная функция (например, создание задачи, назначение исполнителя) работает в точном соответствии с требованиями (user story, спецификация). Проверяются позитивные и негативные сценарии.
  3. Интеграционное тестирование (Integration Testing):

    • Цель: Убедиться, что новый или измененный модуль корректно взаимодействует с другими частями системы (например, сервис создания задачи корректно сохраняет данные в БД и отправляет событие в брокер сообщений).
  4. Регрессионное тестирование (Regression Testing):

    • Цель: Убедиться, что внесенные изменения не сломали существующий, ранее работавший функционал. Часто выполняется путем прогона набора автоматизированных тестов (unit, API).
  5. Приемочное тестирование (Acceptance Testing):

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

Дополнительно, в зависимости от контекста задачи, могут применяться: нагрузочное тестирование (если задача влияет на производительность), тестирование удобства использования (UX) для изменений в интерфейсе.