2017-03-21 3 views
1

Ich führe meine Selenium WebDriver Tests mit Junit über Jenkins durch, die Testausführung selbst läuft auf Sauce Labs. Meine Tests laufen auf unserer Unternehmenswebsite, die in vielen Ländern vorhanden ist, also habe ich Ausführungsprofile für Maven erstellt, um die Tests entweder auf allen Domains oder nur auf einer bestimmten Domain durchzuführen. Mein POM für todsichere und Profile sieht wie folgt aus:Jenkins zeigt nicht alle ausgeführten Tests/Testergebnisse in Build Übersicht

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
     <parallel>all</parallel> 
     <threadCount>10</threadCount> 
     <groups>${testcase.groups}</groups> 
    </configuration> 
</plugin> 

<profile> 
    <id>all</id> 
    <properties> 
     <testcase.groups>categories.AllDomains</testcase.groups> 
    </properties> 
</profile> 

<profile> 
    <id>germany</id> 
    <properties> 
     <testcase.groups>categories.Germany</testcase.groups> 
    </properties> 
</profile> 

<profile> 
    <id>poland</id> 
    <properties> 
     <testcase.groups>categories.Poland</testcase.groups> 
    </properties> 
</profile> 

Alle Tests sind korrekt mit den erforderlichen @ Kategorie Kategorien markiert. Wenn ich eine einzelne Domäne auswähle und die Tests durchführe, werden alle Tests ausgeführt und Total Tests/Failed Tests werden in Jenkins korrekt angezeigt.

Aber wenn ich die Tests auf allen Gebieten durchführe, zeigt Jenkins mir jedes Mal unterschiedliche Mengen von Gesamttests/Fehlgeschlagenen Tests. Daher ist das Feedback, das ich von jedem Build erhalte, anders und völlig unrealistisch, da auch die Fehlgeschlagenen Tests im Vergleich zur Ausführung in Sauce Labs nicht korrekt sind (Sauce Labs hat auch eine konstante Anzahl von Gesamttests/Fehlgeschlagenen Tests).

Das Bild aus dem Link zeigt meine Jenkins Test Graph, die markierten Abschnitte haben alle die gleiche Ausführung Konfiguration auf allen Domänen laufen, aber haben völlig unterschiedliche Anzahl der ausgeführten Tests.

Dank Sauce Labs, weiß ich, dass alle meine durch das Profil angegebenen Tests laufen, wie Sie in der Image die Anzahl der Gesamttests konsistent sehen können.

Inzwischen habe ich alle meine Code und Jenkins Konfigurationen 10 Mal überprüft und kann keinen Grund finden, warum das passiert. Warum zeigt Jenkins nicht das tatsächliche Ergebnis? Wenn ich in die Ausführungsdaten gehe und jede Klasse überprüfe, kann ich sehen, dass zufällige Tests pro Domäne hinzugefügt und entfernt werden (aber immer noch in Sauce Labs ausgeführt werden), kein Muster, keine Wiederholung!

PS: die Config für Profile und Domain Ausführung in einer Zeit lang nicht geändert hat, den Autor dieses Problem aus dem Nichts (kein Updates zu Selenium Code, Jenkins Plugins, Jenkins selbst)

Antwort

0

Nach einigen weiteren Tests fand ich Es ist ein Problem mit der parallelen Testausführung in Surefire. Es scheint zu laufen mit parallel=all gestartet, um Bericht XMLs abgeschnitten und Jenkins erhielt nicht die gesamte Rückmeldung für alle durchgeführten Tests.

Da ich parallel=all verwendet, um die gesamte Testlaufzeit zu verringern, schaute ich in forkCount, um meine Zeit niedrig zu halten, ohne parallel=all.

So sieht mein neues todsicheres config in meinem POM wie dies jetzt:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${surefire-version}</version> 
    <configuration> 
     <parallel>methods</parallel> 
     <threadCount>10</threadCount> 
     <forkCount>2</forkCount> 
     <reuseForks>true</reuseForks> 
     <parallelTestsTimeoutInSeconds>300</parallelTestsTimeoutInSeconds> 
     <groups>${testcase.groups}</groups> 
    </configuration> 
</plugin> 

Test-Ausführungszeit noch sehr gering ist, aber alle Berichte sind vollständig und Jenkins das richtige Ergebnis zeigt!