Parallele Testausführung in TestNG

Bei automatisierten Tests wollen wir oft die Testausführungszeit reduzieren, um so schnell wie möglich Testergebnisse zu erhalten. Wenn wir Selenium-Tests mit dem testNG-Paket ausführen, werden die Tests standardmäßig seriell ausgeführt. Aber testNG bietet inhärente Unterstützung für die parallele Ausführung von Tests. Mit Hilfe dieses Tutorials werden wir in der Lage sein, eine parallele Testausführung in Selenium oder einem anderen Java-fähigen Testautomatisierungswerkzeug durchzuführen.
Bevor wir mit der parallelen Ausführung beginnen, lassen Sie uns kurz die Datei testNG.xml betrachten (diejenigen, die mit der Datei testng.xml vertraut sind, können diesen Abschnitt überspringen und zum nächsten Abschnitt – „Parallele Testausführung“ – gehen).
Die Datei testng.xml erleichtert die Ausführung von Tests und die Gruppierung mehrerer verschiedener Tests aus denselben oder unterschiedlichen Klassen. Diese XML-Datei hat verschiedene Tags für Suite, Tests, Klassen und/oder Pakete, wobei der Root-Tag Suite ist.
Beispieldatei testNG.xml :
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="ITtesterTestSuite" verbose="1" >
<test name="parallelExecutionTests" >
<classes>
<class name="testsInParallel" />
<class name="testsInParallel" />
</classes>
</test>
</suite>
Wenn Sie mit der rechten Maustaste auf die Datei testng.xml klicken und sie als TestNG-Set ausführen, findet testNG die Tests mit der Annotation @Test in der Klasse testsInParallel.java und beginnt mit der Ausführung der Tests.
Parallele Tests durchführen
Um die Tests parallel laufen zu lassen, fügen Sie einfach diese beiden Schlüssel-Wert-Paare in die Suite ein:
- parallel=“{methods/tests/classes}“
- thread-count=“{Anzahl der Threads, die gleichzeitig laufen sollen}“.
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="ITtesterTestSuite" verbose="1" parallel="methods" thread-count="5">
<test name="parallelExecutionTestsA" >
<classes>
<class name="testsInParallelA1" />
<class name="testsInParallelA2" />
</classes>
</test>
<test name="parallelExecutionTestsB" >
<classes>
<class name="testsInParallelB1" />
<class name="testsInParallelB2" />
</classes>
</test>
</suite>
Sehen wir uns den Zweck der drei Optionen an, die als Wert für den Parameter „parallel“ festgelegt werden können –
methods – der Wert der Methode für das Attribut parallel lässt alle Tests unabhängig voneinander auf separaten Threads laufen (maximal verfügbare Threads). Im obigen Beispiel werden alle Testmethoden, die unter allen vier Klassen aufgeführt sind, parallel in maximal 5 Threads ausgeführt.
tests – der Testwert führt die im Test-Flag aufgelisteten Methoden im selben Thread aus. Im obigen Beispiel werden alle Testmethoden mit der Bezeichnung „parallelExecutionTestsA“ in demselben Thread ausgeführt, und alle Testmethoden mit der Bezeichnung „parallelExecutionTestsB“ werden in demselben Thread ausgeführt. Es gibt also zwei Threads, von denen jeder die Testmethoden parallel, aber unabhängig voneinander innerhalb der parallelExecutionTestsA und parallelExecutionTestsB Tests ausführt.
class – der Wert von class löst alle in der Klasse aufgeführten Testmethoden im selben Thread aus, wobei jede Methode der Klasse in einem anderen Thread ausgelöst wird. Es gäbe also vier Threads, die Tests in vier Klassen ausführen – testsInParallelA1,testsInParallelA2,testsInParallelB1,testsInParallelB2.