← Назад к вопросам

Пользовался ли Allure

2.2 Middle🔥 162 комментариев
#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Да, пользовался Allure в рамках автоматизации тестирования

Я активно использовал Allure Framework на нескольких проектах, как в связке с TestNG/JUnit для Java, так и с pytest для Python. Это один из моих основных инструментов для построения прозрачной и информативной отчетности в проектах по автоматизации.

Ключевые причины использования и преимущества

Allure я ценю за комплексный подход к визуализации результатов:

  • Наглядная структура отчетов: Древовидное представление по наборам (suites), классам и методам. Это сразу дает картину охвата тестирования.
  • Детализация каждого теста: Для каждого теста видно:
    *   Шаги выполнения (steps) с таймингами.
    *   Аргументы параметризованных тестов.
    *   Прикрепленные артефакты: **скриншоты**, логи, данные запросов/ответов (крайне важно для UI и API тестов).
    *   Ссылки на дефекты в баг-трекинговой системе (например, Jira).
  • Графики и диаграммы: Понятные графики по статистике (прошел/упал/пропущен), длительности выполнения, перегреву (flakiness) тестов. Это незаменимо для анализа стабильности пака и поиска узких мест.
  • Интеграция с CI/CD: Отчет генерируется после каждого запуска в Jenkins, GitLab CI, TeamCity и может быть сохранен как артефакт сборки. Часто мы настраивали отдельный сервер Allure для хранения истории запусков.
  • Поддержка экосистемы: Официальная поддержка множества языков (Java, Python, JavaScript, C#, Ruby, PHP и др.) и фреймворков.

Пример практического использования с Java + TestNG

Рассмотрим типичный пример использования в UI-тесте на Selenium WebDriver с генерацией скриншота при падении.

1. Настройка проекта (Maven): В pom.xml добавляются зависимости и плагин для сборки отчета.

<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>2.27.0</version>
</dependency>

<plugin>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-maven</artifactId>
    <version>2.12.0</version>
    <configuration>
        <reportVersion>2.27.0</reportVersion>
    </configuration>
</plugin>

2. Пример тестового класса: Здесь используются аннотации Allure для описания и структурирования, а также методы-слушатели (listeners) для перехвата падений.

import io.qameta.allure.*;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import java.io.ByteArrayInputStream;

import static io.qameta.allure.Allure.step;
import static io.qameta.allure.Allure.attachment;

@Epic("Авторизация пользователя")
@Feature("Позитивные сценарии входа")
@Listeners({io.qameta.allure.testng.AllureTestNg.class})
public class LoginTest {

    private WebDriver driver;

    @BeforeMethod
    public void setUp() {
        driver = WebDriverFactory.getDriver();
    }

    @Test
    @Story("Успешный вход с валидными данными")
    @Description("Проверка, что зарегистрированный пользователь может войти в систему.")
    @Severity(SeverityLevel.BLOCKER)
    @Link(name = "JIRA-123", url = "https://jira.example.com/browse/JIRA-123")
    public void testSuccessfulLogin() {
        step("Открыть страницу логина", () -> {
            driver.get("https://example.com/login");
        });

        step("Ввести валидные учетные данные", () -> {
            // Селекторы и взаимодействия с элементами
            driver.findElement(By.id("username")).sendKeys("testuser");
            driver.findElement(By.id("password")).sendKeys("Pass123");
        });

        step("Нажать кнопку 'Войти'", () -> {
            driver.findElement(By.xpath("//button[@type='submit']")).click();
        });

        step("Проверить успешную авторизацию", () -> {
            // Проверка перехода на личный кабинет
            Assert.assertTrue(driver.getCurrentUrl().contains("/dashboard"),
                    "Пользователь не был перенаправлен в личный кабинет");
        });

        // Пример прикрепления данных
        attachment("Текущий URL", "text/plain", driver.getCurrentUrl());
    }

    @AfterMethod
    public void tearDown(ITestResult result) {
        // Делаем скриншот, если тест упал, и прикрепляем к отчету Allure
        if (result.getStatus() == ITestResult.FAILURE) {
            Allure.addAttachment("Скриншот на момент падения", "image/png",
                    new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES)),
                    "png");
        }
        if (driver != null) {
            driver.quit();
        }
    }
}

3. Генерация отчета: После запуска тестов (например, через mvn clean test), отчет генерируется командой:

mvn allure:serve

Эта команда создаст локальный сервер с интерактивным HTML-отчетом, который сразу откроется в браузере.

Роль в процессе тестирования

Allure был не просто "красивой оберткой", а полноценным инструментом анализа:

  • Для разработчика и автотестировщика — быстрая локализация причины падения теста через шаги, логи и скриншоты.
  • Для менеджера проекта и заказчика — прозрачная и доступная статистика о качестве продукта и стабильности автотестов.
  • Для команды в целом — единый источник правды о результатах тестирования, интегрированный в процесс CI/CD.

Таким образом, опыт использования Allure позволил мне вывести коммуникацию по результатам автоматизированного тестирования на качественно новый уровень, сделав отчеты интерактивными, информативными и полезными для всех участников процесса разработки.

Пользовался ли Allure | PrepBro