Thay vì phụ thuộc vào giao diện báo cáo mặc định của TestNG hoặc các bản nâng cấp cũ như ReportNG, việc áp dụng Allure 2 cung cấp một hệ thống logging trực quan, chuyên nghiệp và dễ dàng tùy chỉnh. Công cụ này hỗ trợ hiển thị chi tiết timeline kiểm thử, phân tích lỗi theo component, và tích hợp sẵn attachment. Dưới đây là quy trình thiết lập môi trường và khai thác các tính năng nâng cao.
1. Cấu hình Maven và Dependencies
Để kích hoạt trình lắng nghe của Allure cho TestNG, cần khai báo thư viện chính và AspectJ Weaver trong pom.xml. Đồng thời, cấu hình maven-surefire-plugin để truyền tham số JVM Agent đúng vị trí.
<properties>
<aspectj.version>1.9.19</aspectj.version>
<allure.version>2.21.0</allure.version>
</properties>
<dependencies>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>${allure.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M8</version>
<configuration>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
-Dfile.encoding=UTF-8
</argLine>
<testFailureIgnore>true</testFailureIgnore>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suite_config.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
2. Tích hợp lên Jenkins
Để tự động hóa việc sinh báo cáo trong pipeline CI/CD, cần thực hiện ba bước cấu hình cơ bản trên Jenkins:
- Truy cập Plugin Management, tìm kiếm và cài đặt plugin
Allure. Khởi động lại instance sau khi hoàn tất. - Tải bộ công cụ dòng lệnh (CLI) chính thức từ kho lưu trữ GitHub của Allure Framework. Giải nén thư mục vào vị trí cố định trên server Jenkins (ví dụ:
/opt/allure-cli). - Di chuyển đến Global Tool Configuration, thêm mới công cụ
Allure Commandline, trỏ đến đường dẫn thư mục vừa giải nén và lưu cấu hình.
Sau khi thiết lập xong, mọi lần chạy pipeline sẽ tự động thu thập dữ liệu kiểm thử và render ra dashboard Allure.
3. Tự động hóa chụp ảnh màn hình khi gặp lỗi
Để gắn hình ảnh trực tiếp vào báo cáo khi test case thất bại, cần xây dựng một lớp lắng nghe sự kiện kế thừa TestListenerAdapter. Lớp này sẽ bắt sự kiện onTestFailure và sử dụng annotation @Attachment của Allure để nhúng dữ liệu nhị phân.
import io.qameta.allure.Attachment;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
public class FailureCaptureHandler extends TestListenerAdapter {
private final WebDriver driverInstance;
public FailureCaptureHandler(WebDriver activeDriver) {
this.driverInstance = activeDriver;
}
@Override
public void onTestFailure(ITestResult testContext) {
logFailureState();
}
@Attachment(value = "State Capture on Failure", type = "image/png")
public byte[] logFailureState() {
return ((TakesScreenshot) driverInstance).getScreenshotAs(OutputType.BYTES);
}
}
Tiếp theo, khai báo listener này trong file testng.xml hoặc dùng annotation @Listeners trên lớp test chính. Khi có exception xảy ra, ảnh chụp sẽ tự động nhúng vào phần attachment của test case tương ứng.
4. Hiển thị mô tả chi tiết cho Test Case
Việc bổ sung ngữ cảnh cho từng phương thức kiểm thử giúp báo cáo dễ theo dõi và đối chiếu với tài liệu yêu cầu nghiệp vụ. Chỉ cần gán giá trị cho tham số description trong annotation @Test.
import org.testng.annotations.Test;
public class AuthenticationFlow {
@Test(description = "Xác thực quy trình đăng nhập với mật khẩu hợp lệ và kiểm tra chuyển hướng trang")
public void verifyValidLoginFlow() {
// Thực thi các bước kiểm thử
}
@Test(description = "Kiểm tra cơ chế khóa tài khoản sau 5 lần nhập sai mật khẩu")
public void verifyAccountLockoutMechanism() {
// Thực thi các bước kiểm thử
}
}
Thông tin mô tả sẽ hiển thị trực tiếp trên giao diện dashboard, hỗ trợ đối chiếu nhanh và giảm thiểu thời gian phân tích nguyên nhân lỗi.