20
Integration mit Build-Tools

Automatisierte GUI-Tests sind nur ein Schritt im Erstellungsprozess eines Software-Entwicklungsprojektes. Die grundlegende Anforderung, den Ablauf aller erforderlichen Schritte (Kompilierung, Testen, Erzeugung von Dokumentation, Auslieferung) zu automatisieren, hat zu einer Vielzahl von Build-Tools (z.B. make, ant, maven) und so genannten Continuous-Integration-Tools geführt (z.B. Jenkins/Hudson, Cruise Control, Continuum).

Generell sollte die Integration mit solchen Werkzeugen durch Verwendung der Kommandozeilen-Schnittstelle von QF-Test, die in Kapitel 16 und Kapitel 32 ausführlich dokumentiert ist, ohne Schwierigkeiten möglich sein.

Die folgenden Abschnitte enthalten Beispiele für Integrationen mit einigen der oben genannten Tools.

20.1
Ant

Wer Apache Ant (http://ant.apache.org) als Buildsystem einsetzt, kann die Testausführung mit QF-Test in die Builddatei integrieren:

<project name="QF-Test" default="runtest">

    <property name="qftest" location="c:\Program Files\qfs\qftest\qftest-3.4.7\bin\qftest.exe" />
    <property name="logdir" value="c:\mylogs" />
      
    <target name="runtest" description="Run a test in batchmode">
        <echo message="Running ${suite} ..." />
        <exec executable="${qftest}" failonerror="false" resultproperty="returncode">
            <arg value="-batch" />
            <arg value="-compact" />
            <arg value="-runlog" />
            <arg value="${logdir}\+b" />
            <arg value="${suite}" />
        </exec>
        <condition property="result" value="Test terminated successfully.">
            <equals arg1="${returncode}" arg2="0" />
        </condition>
        <condition property="result" value="Test terminated with warnings.">
            <equals arg1="${returncode}" arg2="1" />
        </condition>
        <condition property="result" value="Test terminated with errors.">
           <equals arg1="${returncode}" arg2="2" />
        </condition>
        <condition property="result" value="Test terminated with exceptions.">
            <equals arg1="${returncode}" arg2="3" />
        </condition>
        <echo message="${result}" />
    </target>
      
</project>
        
Beispiel 20.1:  Ant Builddatei build.xml zur Ausführung einer Testsuite

Im obigen Beispiel wird davon ausgegangen, dass die auszuführende Testsuite beim Aufruf von ant als Property definiert wird: ant -Dsuite="c:\Program Files\qfs\qftest\qftest-3.4.7\demo\carconfig\carconfig_en.qft".

20.2
Maven

Wer Apache Maven (http://maven.apache.org) als Buildsystem einsetzt, kann die Testausführung mit QF-Test in die Builddatei integrieren. Dies geschieht mittels Verwendung des antrun Plugins von Maven. Eine Beispiel pom.xml Datei, bei der die Tests in der test Phase des Builds ausgeführt werden, könnte wie folgt aussehen:

<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <artifactId>testant</artifactId>
    <packaging>jar</packaging>
    <name>testant</name>
    <groupId>de.qfs</groupId>
    <version>1</version>

    <properties>
        <qf.exe>"C:\Program Files\qfs\qftest\qftest-3.4.7\bin\qftest.exe</qf.exe>
        <qf.reportfolder>qftest</qf.reportfolder>
        <qf.log>logFile.qrz</qf.log>
        <qf.suite>"c:\path\to\testsuite.qft"</qf.suite>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <configuration>
                            <tasks>
                                <exec executable="${qf.exe}">
                                    <arg value="-batch"/>
                                    <arg value="-report"/>
                                    <arg value="${qf.reportfolder}"/>
                                    <arg value="-runlog"/>
                                    <arg value="${qf.log}"/>
                                    <arg value="${qf.suite}"/>
                                </exec>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
        
Beispiel 20.2:  Maven Builddatei pom.xml zur Testausführung

In Ihrem Projekt könnte es notwendig werden, die Tests nicht in der test Phase auszuführen. Hierfür sollten Sie das Plugin wie in der Mavendokumentation beschrieben konfigurieren.

3.3+20.3
Jenkins/Hudson

Bei Jenkins/Hudson (http://jenkins-ci.org bzw. http://hudson-ci.org) handelt es sich um Continuous-Integration-Build-Tools. Sie sind somit dazu gedacht, die Ausführung des Build-Prozesses eines Software-Projektes zu steuern und zu überwachen sowie die Ergebnisse zu verwalten. Ein wichtiger Schritt in diesem Build-Prozess sind automatisierte Tests, u.a. auch GUI-Tests mit QF-Test.

Eine Verwendung von QF-Test in Kombination mit Jenkins/Hudson kann folgende Vorteile bringen:

Da Jenkins und Hudson eine gemeinsame Vergangenheit teilen, wird in den folgenden Kapiteln Hudson als Repräsentant verwendet.

20.3.1
Hudson installieren und starten

Generell finden Sie den aktuellsten Informationsstand zu Download, Installation und Start von Hudson auf http://hudson-ci.org.

Die Installation von Hudson beschränkt sich auf das Herunterladen des war Archivs von http://hudson-ci.org/latest/hudson.war und das Starten z.B. mittels java -jar hudson.war.

Eine andere Möglichkeit ohne Installation ist der direkte Start von Hudson mittels Java Webstart über https://hudson.dev.java.net/hudson.jnlp.

Sobald Hudson erfolgreich läuft, kann mittels eines Browsers über die URL http://localhost:8080 auf die Weboberfläche zugegriffen werden, welche sich wie folgt darstellt:

Hudson Start Screen
Abbildung 20.1:  Hudson nach dem Start
20.3.2
Anlegen eines neuen Jobs für QF-Test

Zum Anlegen eines neuen Jobs folgt man einfach dem entsprechenden Link in Hudson (siehe Bild oben) und wählt das "Free Style"-Softwareprojekt, was zu einem Formular führt, das die Optionen für Build-Ausführung und Protokollierung bietet. Alle Optionen sind einzeln dokumentiert (Knöpfe mit "?" rechts neben jeder Option), so dass das Ausfüllen sehr einfach erfolgen kann.

Auf folgende Besonderheiten im Zusammenhang mit QF-Test sei hingewiesen:

20.3.3
QF-Test Demo-Projekt installieren

HinweisDie Installation des HTML Publisher Plugins, wie oben beschrieben, wird empfohlen bevor das Demo-Projekt eingebunden wird.

Nach dem erfolgreichen Start von Hudson sollte es in Ihrem Benutzerverzeichnis (z.B. C:/Dokumente und Einstellungen/Ihr Benutzername) ein Verzeichnis .hudson (Punkt vor hudson beachten) geben, in welchem sich die von Hudson abgelegten Dateien befinden. Unter anderem gibt es dort einen Ordner mit dem Namen jobs, in dem standardmäßig für jedes Hudson Projekt Konfigurationsdateien und Daten der jeweiligen Buildverläufe gespeichert werden.

Um das mitgelieferte Beispielprojekt für Hudson einzubinden, muss einfach das Zip Archiv QF-Test_Demo_Job.zip, welches sich im Ordner qftest-3.4.7/ext/hudson in Ihrer QF-Test Installation befindet, in Ihr .hudson/jobs Verzeichnis extrahiert werden. Damit das eingebundene Projekt in Hudson sichtbar wird, muss Hudson neu gestartet werden oder Sie nutzen »Hudson«-»Hudson verwalten«-»Konfiguration von Festplatte neu laden«.

Nach Auswählen des nun verfügbaren QF-Test Demo-Jobs sollte sich eine Darstellung äquivalent der folgenden ergeben:

Hudson Job
Abbildung 20.2:  QF-Test Demo-Job in Hudson

Die grafische Darstellung des Testergenistrends sowie die Zusammenfassung des letzten Testergebnisses basieren auf den generierten JUnit Reports.

Durch das HTML Publisher Plugin sind auch direkt die HTML Reports in der Ansicht verfügbar. Sie können sich nun die einzelnen Builds anschauen oder selbst einen solchen mittels »Jetzt bauen« starten.

Unter »Konfiguration« können Sie die Optionen des Builds einsehen und ggf. anpassen. Die Konfiguration kann gut als Basis für Ihre eigene Projekte dienen.

HinweisDie Batch Datei runtest.bat und das Shell-Skript runtest.sh, die im qftest_demo Verzeichnis liegen, enthalten eine Behandlung der Rückgabewerte von QF-Test, um das Ergebnis der Testläufe mit korrektem Status in Hudson anzuzeigen.
3.4.2+Die Verwendung des Kommandozeilenarguments -exitcodeignoreexception erlaubt nur direkt das Ignorieren von Exceptions, Fehler und Warnungen für den Rückgabewert.

Für eine Fehlersuche ist die Konsolenausgabe in den Build-Details ein guter Startpunkt.

HinweisUnter Linux müssen Sie den "Windows Batch Datei ausführen" durch einen "Shell ausführen" Build-Schritt mit folgendem Inhalt ersetzen:

cd "$WORKSPACE/qftest_demo"
./runtest.sh
          
Beispiel 20.3:  Hudson "Shell ausführen" Build-Schritt für den QF-Test Demo-Job unter Linux