Работали ли вы с Docker на Linux для задач тестирования?

«Работали ли вы с Docker на Linux для задач тестирования?» — вопрос из категории CI/CD и DevOps, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные сценарии применения в QA/автоматизации:

  1. Запуск автотестов в контейнерах: Создание Docker-образа со всеми зависимостями (Python, браузер, драйверы) для стабильного запуска тестовых suites.

    # Dockerfile для запуска Python + Selenium тестов
    FROM python:3.11-slim
    WORKDIR /app
    # Установка зависимостей для Chrome и Selenium
    RUN apt-get update && apt-get install -y wget gnupg 
        && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - 
        && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list 
        && apt-get update && apt-get install -y google-chrome-stable 
        && rm -rf /var/lib/apt/lists/*
    # Копирование и установка Python-зависимостей
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    # Команда для запуска тестов
    CMD ["pytest", "-v", "--tb=short", "tests/"]
  2. Развертывание тестовых стендов: Использование docker-compose.yml для одновременного запуска приложения, базы данных, кэша и других сервисов, необходимых для интеграционного или end-to-end тестирования.

    version: '3.8'
    services:
      db:
        image: postgres:15
        environment:
          POSTGRES_PASSWORD: testpass
      app:
        build: ./app
        depends_on:
          - db
        environment:
          DATABASE_URL: postgresql://postgres:testpass@db:5432/app_test
      tests:
        build: ./tests
        depends_on:
          - app
        command: pytest
  3. Изоляция зависимостей: Каждый проект или набор тестов работает в своем контейнере со своими версиями библиотек, что исключает конфликты.

  4. Интеграция с CI/CD: Запуск Docker-контейнеров с тестами на этапе сборки в Jenkins, GitLab CI или GitHub Actions. Это позволяет быстро получать feedback о качестве кода.

Часто используемые команды: docker build, docker run, docker-compose up, docker logs (для анализа падений тестов), docker exec (для отладки внутри контейнера).