Работали ли вы с Maven?

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

Ответ

Да, Maven — это основной инструмент для сборки и управления зависимостями в моих Java-проектах по автоматизации тестирования.

Как я его применяю в QA:

  1. Управление зависимостями для тестов: В pom.xml я объявляю все необходимые библиотеки: TestNG/JUnit, Selenium, RestAssured, Allure для отчётов, логирования.
  2. Запуск тестовых сценариев: Использую команды:
    • mvn clean test — для запуска всех тестов.
    • mvn test -Dtest=LoginTest — для запуска конкретного тестового класса.
    • mvn test -Dgroups="smoke" — для запуска тестов по группам.
  3. Интеграция с CI/CD: Настраиваю M-фазу verify в пайплайнах Jenkins/GitLab CI для автоматического запуска тестов после сборки.
  4. Генерация отчётов: Настраиваю плагины (например, maven-surefire-plugin и allure-maven) для создания детальных отчётов о выполнении тестов.

Пример фрагмента pom.xml для проекта автотестов:

<dependencies>
    <!-- Фреймворк для тестирования -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.8.0</version>
        <scope>test</scope>
    </dependency>
    <!-- Веб-автоматизация -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.15.0</version>
    </dependency>
    <!-- API-тестирование -->
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>5.3.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.1.2</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>testng.xml</suiteXmlFile> <!-- Конфигурация тестов -->
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>

Также настраивал профили (<profiles>) для разделения конфигураций под разные окружения (dev, staging, prod).