Test Otomasyon Raporlama | Allure Test Report

Ahmet Demirel
AhmetDemirel-blog
Published in
4 min readMar 9, 2019

--

Testlerimizi yazdık ve koştuk peki raporlamayı nasıl yapacağız? Bu sorunun cevabını aradığımızda karşımıza Allure Framework çıkıyor.

Allure framework, test adımları, parametreler, ekran görüntüleri, logları ekleyebilmenize olanak sağlayan çoklu dil desteği olan açık kaynak bir raporlama aracıdır. Allure ile yazdığınız testlerin sonuçlarını daha anlaşılır olarak raporlayabilirsiniz. Çalıştığınız projenin alt yapısının ne olduğu önemli değildir.Çoklu dil desteği olduğu için ir çok farklı projede kullanılabilir. Allure kurulumu ve kullanımını nasıl yapacağımıza geçelim.

Öncelikle bilgisayarımıza Allure yüklemeliyiz. Terminalden yada manuel olarak iki farklı şekilde yükleme yapabiliriz. Ben Homebrew yardımı ile terminal üzerinden yapacağım ama dökümandan yardım alarak manuel yükleme de yapabilirsiniz.

brew install allure

Yükleme işlemi tamamlandıktan sonra yüklemenin başarılı olduğunu teyit etmek için $ allure --version komutunu kullanabilirsiniz.

İkinci adım olarak maven pom.xml dosyasına gerekli kütüphaneleri eklemeliyiz(Junit5, Selenium, Allure). Bu konuda allure dökümanından yardım alabilirsiniz ve kendi projenize göre düzenleyebilirsiniz. Junit5 için gerekli olan kütüphaneleri şu şekilde yapabilirsiniz.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>allur.test.report</groupId>
<artifactId>allure-test-report</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<selenium.version>3.14.0</selenium.version>
<junit.jupiter.version>5.3.1</junit.jupiter.version>
<junit.vintage.version>5.3.1</junit.vintage.version>
<junit.platform.version>1.3.1</junit.platform.version>
<allure-maven.version>2.8</allure-maven.version>
<allure-junit5.version>2.7.0</allure-junit5.version>
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
<maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
<aspectj.version>1.9.1</aspectj.version>

<encoding>UTF-8</encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.encoding>UTF-8</project.encoding>
<project.build.sourceEncoding>${project.encoding}</project.build.sourceEncoding>
<project.reporting.outputEncoding>${project.encoding}</project.reporting.outputEncoding>

<java.version>1.8</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
</properties>

<dependencies>
<!--Selenium Dependency-->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
<!--JUNIT 5 Dependencies-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-engine</artifactId>
<version>${junit.platform.version}</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.3.1</version>
</dependency>
<!--Allure Reporting Dependencies-->
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit5</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>io.qameta.allure.junit5.AllureJunit5</value>
</property>
</properties>
<includes>
<include>**/*Test*.java</include>
</includes>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<systemProperties>
<property>
<name>allure.results.directory</name>
<value>${project.basedir}/allure-results</value>
</property>
<property>
<name>junit.jupiter.extensions.autodetection.enabled</name>
<value>true</value>
</property>
</systemProperties>
<reportFormat>plain</reportFormat>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>${allure-maven.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

pom.xml dosyası için gerekli değişiklikler yapıldıktan sonra proje dosyamızın içerisine allure raporu için gerekli sonuçların kaydedileceği dosyası oluşturmamız gerekli. Proje dosyası altına “ allure-results” isimli dosyayı oluşturuyoruz.

Bu adımları da bitirdikten sonra sırada projemize Allure annotationları eklemeye geldi. Detaylı Annotation bilgisine dökümandan ulaşabilirsiniz. Ben buraya kendi projemde kullandıklarımı ekliyorum.

import io.qameta.allure.*;
import org.junit.jupiter.api.Test;
import pages.BasePage;
import pages.HomePage;
import pages.LoginPage;


@Epic("Login Tests Epic")
@Feature("Login Features")
public class LoginPageTest extends BaseTest {

LoginPage loginPage = new LoginPage(driver);


@Test
@Description("Login with valid email and password")
@Severity(SeverityLevel.CRITICAL)
@Story("User login the page with email and password.")
public void loginHomePage(){

new HomePage(driver)
.goToHomePage()
.hoverLoginButton()
.goToLoginPage()
.fillMailPasswordAndClickLoginButton("ahmet@ahmet.com","ahmet123");
}

@Test
@Description("Login with valid email and wrong password")
@Severity(SeverityLevel.NORMAL)
@Story("User login the page with email and password.")
public void loginWithWrongPass(){

new HomePage(driver)
.goToHomePage()
.hoverLoginButton()
.goToLoginPage()
.fillMailPasswordAndClickLoginButton("ahmet@ahmet.com","ahmet");
loginPage
.wrongPasswordMessage("E-posta adresiniz ya da şifreniz yanlış.");
}

@Test
@Description("Get fail message")
@Severity(SeverityLevel.TRIVIAL)
@Story("User login the page with email and wrong password.")
public void failTest(){

new HomePage(driver)
.goToHomePage()
.hoverLoginButton()
.goToLoginPage()
.fillMailPasswordAndClickLoginButton("ahmet@ahmet123.com","ahmet");
loginPage
.assertFail();
}
}

Annotationları yazdıktan sonra testlerimizi çalıştırıp sonuçları görelim. Testleri koştuktan sonra sıra Allure raporu oluşturmaya geldi. Kullandığımız bir terminalde proje dosyamıza gidiyoruz “allure serve allure-results” yazıyoruz ve allure bizim için test raporunu oluşturup bize rapora erişim sağlayabileceğimiz bir ip adresi veriyor.

Tüm işlemleri yaptık raporu oluşturduk peki raporlar nasıl gözüküyor.

Allure anasayfasında bize genel bir tanıtım sunuyor. Testlerimizin kaçının pass olduğunu kaçının fail olduğunu görebiliyoruz. Solda bulunan menü ile daha detaylı bilgileri için farklı sayfalara gidebiliyoruz.

Allure kullanımı için hazırladığım test projesini github hesabımdan ulaşabilirsiniz.

İşte bu şekilde testlerimizin raporlarını allure yardımı ile oluşturabiliyoruz. Projemizin incelenmesi ve yorumlanması tüm takım üyeleri için daha kolay bir hale dönüşmüş oluyor.

--

--