Как вы использовали Docker в контексте QA и тестирования?

«Как вы использовали Docker в контексте QA и тестирования?» — вопрос из категории CI/CD и DevOps, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Применял Docker для создания изолированных, воспроизводимых и консистентных тестовых окружений. Это решало проблему "у меня работает" и ускоряло настройку инфраструктуры для тестов.

Основные сценарии использования:

1. Локальное тестовое окружение "в один клик": Использовал docker-compose.yml для развертывания всего стека приложения (frontend, backend, БД, кэш, message broker) на локальной машине или CI-сервере.

# docker-compose.test.yml
version: '3.8'
services:
  postgres_test:
    image: postgres:15
    environment:
      POSTGRES_DB: test_db
      POSTGRES_PASSWORD: test_pass
    ports:
      - "5433:5432"

  app_test:
    build:
      context: .
      dockerfile: Dockerfile.test
    depends_on:
      - postgres_test
    environment:
      DB_HOST: postgres_test

2. Изоляция тестовых зависимостей:

  • Запуск автотестов в чистых контейнерах, что гарантирует отсутствие side-effects от предыдущих прогонов.
  • Тестирование с разными версиями БД или сторонних сервисов.

3. Интеграция с CI/CD (Jenkins, GitLab CI):

  • Запуск пайплайна в Docker-контейнере с предустановленными инструментами (Python, Node.js, браузеры для Selenium).
  • Сборка и пушинг Docker-образов с тестовыми утилитами в registry команды.

4. Написание Dockerfile для тестов:

# Dockerfile для запуска Python-тестов
FROM python:3.11-slim
WORKDIR /app

# Копируем зависимости и устанавливаем их
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Копируем код приложения и тесты
COPY src/ ./src/
COPY tests/ ./tests/

# Команда по умолчанию — запуск тестов
CMD ["pytest", "tests/", "-v", "--tb=short"]

5. Mock-сервисы и тестирование интеграций:

  • Использование готовых образов (например, wiremock/wiremock) для заглушки внешних API.
  • Запуск специализированных БД (например, redis) для тестирования кэширования.

Результат: Значительное ускорение onboarding-а новых членов команды, полная воспроизводимость окружений и упрощение отладки проблем, связанных с различиями в средах.