Handbuch

4
Aufnahme und Wiedergabe

Wenn das SUT erst einmal unter QF-Test läuft, ist der nächste Schritt, Testsequenzen aufzunehmen und wieder abzuspielen.

4.1
Aufnahme von Testsequenzen

Um eine Sequenz von Events im SUT aufnehmen zu können, muss das SUT aus QF-Test heraus gestartet worden sein (vgl.Kapitel 40) und die Verbindung zum SUT muss bestehen. Letzteres ist an Hand des Aufnahmeknopfs zu erkennen, der rot dargestellt wird, wenn er aktivierbar ist.

Gesperrter Aufnahmeknopf Aktivierbarer Aufnahmeknopf
Abbildung 4.1:  Gesperrter und aktivierbarer Aufnahmeknopf

Um eine Sequenz aufzunehmen, starten Sie die Aufnahme einfach mittels des Aufnahmeknopfs Aufnahme oder »Aufnahme«-»Start«. Wechseln Sie dann zum SUT und führen Sie einige Kommandos aus. Schalten Sie dann zurück zu QF-Test und beenden Sie die Aufnahme mit dem Stopknopf Stop oder »Aufnahme«-»Stop«. Die aufgezeichneten Events werden in die Testsuite eingefügt, entweder direkt an der Einfügemarkierung, oder als neue 'Sequenz' unterhalb des 'Extrasequenzen' Knotens, je nach Einstellung der Option Aufnahme bei aktueller Selektion einfügen. Sie können die Aufnahme mit »Aufnahme«-»Pause« oder dem Pausenknopf Stop unterbrechen, wenn Sie einige Schritte im SUT ausführen wollen, die nicht aufgezeichnet werden sollen.

Der Aufnahmemodus kann auch direkt im SUT über den Hotkey für Aufnahme gestartet und gestoppt werden. Standardmäßig ist diese Taste [F11].

Alle 'Komponenten', auf die sich die aufgezeichneten Events beziehen, werden automatisch unterhalb des 'Fenster und Komponenten' Knotens in die Testsuite integriert, falls sie dort noch nicht vorhanden sind.

Es gibt viele Optionen, die die Aufnahme von Events und die Verwaltung von GUI Komponenten beeinflussen. Diese werden ausführlich in Abschnitt 35.2 des Referenzteils erläutert. Wenn Sie sich mit QF-Test vertraut gemacht haben, sollten Sie sich die Zeit nehmen und sich zumindest einen Überblick über diese Optionen verschaffen.

Es folgen einige allgemeine Tipps zum Aufnehmen:

  • Nehmen Sie nur kurze Sequenzen am Stück auf.
  • Sehen Sie sich jede neu aufgenommene Sequenz an, versuchen Sie zu verstehen, was Sie erhalten haben und ob es Ihren Aktionen im SUT entspricht.
  • Bearbeiten Sie die Sequenz, um überflüssige Events zu entfernen, insbesondere solche, die von den Wechseln zwischen dem SUT und QF-Test stammen. QF-Test hat ausgezeichnete Filter für solche Events. Dennoch können einzelne Events übrigbleiben, die von Hand entfernt werden müssen.
  • Schließlich sollten Sie ausprobieren, ob die neue Sequenz korrekt abgespielt wird. Anschließend können Sie diese weiterbearbeiten und zu größeren Tests zusammensetzen.

MacFür SUTs, die auf Mac OS X laufen, wird die Benutzung der Bildschirm-Menüleiste unterdrückt und die normale Menüleiste aktiviert, äquivalent wie auf anderen Plattformen. Grund dafür ist, dass QF-Test die Bildschirm-Menüleiste nicht vollständig ansprechen kann, was sauberes Aufnehmen/Wiedergeben von Menüaktionen verhindert. Falls das typische Mac Verhalten der Bildschirm-Menüleiste aus irgendwelchen Gründen erforderlich sein sollte, kann es durch das Hinzufügen der Zeile qfs.apple.noScreenMenuBar=false in der Datei qfconnect.properties, die sich im Wurzelverzeichnis von QF-Test befindet, erzwungen werden. Nach einem Neustart zeigt das SUT dann das für den Mac übliche Verhalten.

4.2
Abspielen von Tests

Um einen oder mehrere Test abzuspielen, markieren Sie den oder die entsprechenden Knoten und drücken Sie [Return] oder den Start Knopf Start oder wählen Sie »Wiedergabe«-»Start«. QF-Test hebt Knoten, die gerade ausgeführt werden, durch einen kleinen Pfeil hervor. Außerdem werden Meldungen über den Fortschritt des Tests in der Statuszeile ausgegeben. Beides kann die Geschwindigkeit der Testausführung leicht verringern und ist über die Optionen Aktive Schritte markieren und Aktive Schritte in der Statuszeile anzeigen abschaltbar.

Nach dem Ende des Tests wird das Ergebnis in der Statuszeile angezeigt. Im Idealfall steht dort "Wiedergabe beendet - keine Fehler". Andernfalls wird die Zahl der Warnungen, Fehler und Exceptions angezeigt. Im Fehlerfall wird zusätzlich ein entsprechender Meldungsdialog geöffnet.

Auch das Abspielen von Tests wird von zahlreichen Optionen gesteuert. Einige dienen lediglich zur Anpassung an persönliche Vorlieben, während andere starken Einfluss auf den Ausgang von Tests haben. Bitte lesen Sie Abschnitt 35.3, um sich mit diesen Optionen vertraut zu machen.

Um einen Testlauf vorzeitig Abzubrechen, drücken Sie den Stop Button Stop oder wählen Sie »Wiedergabe«-»Stop«. Sie können den Test auch mittels des Pause Buttons Pause oder »Wiedergabe«-»Pause« vorübergehend unterbrechen, wodurch auch der Debugger aktiviert wird (vgl. Problemanalyse und Debugging). Zum Fortsetzen drücken Sie erneut den Pause Button.

Wenn ein Test in vollem Tempo abläuft, kann es schwierig werden ihn anzuhalten, insbesondere wenn der Mauszeiger über den Bildschirm mitbewegt wird oder die Fenster des SUT ständig nach vorne gebracht werden. Mit Hilfe der (Keine) Panik Taste (Standard ist [Alt-F12]) können Sie die Kontrolle wiedererlangen. Alle laufenden Tests werden sofort unterbrochen. Zum Fortsetzen drücken Sie die selbe Kombination ein weiteres mal.

Beim Zusammenstellen einer Testsuite müssen immer wieder Teile von Tests ausgeführt werden, um das SUT in den richtigen Zustand für die nächste Aufnahme zu bringen. Dabei können andere Teile eher hinderlich sein. Ebenso gibt es oft langwierige Sequenzen, die beim Ausprobieren eher im Weg sind. Mittels »Bearbeiten«-»Ein-/Ausschalten« können Sie solche Knoten deaktivieren und später für den eigentlichen Testlauf wieder einschalten.

Den aktuellen Fehlerstatus während des Ablaufs eines Tests wie auch das abschließende Resultat zeigt QF-Test in der Statusleiste am unteren Rand des Hauptfensters an. Letztere kann über das Menü »Ansicht«-»Statuszeile anzeigen« ein- bzw. ausgeblendet werden. Bei der Wiedergabe von 'Testfallsatz' oder 'Testfall' Knoten, deren Bedeutung in Abschnitt 9.2 erklärt wird, enthält die Statuszeile auch relevante Ergebniswerte aus folgender Liste:

Zählersymbol Beschreibung
Anzahl der Testfälle insgesamt. Diese Zählerwert beginnt mit einem '>' Zeichen im Fall von übersprungenen Testfallsätzen.
Anzahl Testfälle mit Exceptions.
Anzahl Testfälle mit Fehlern.
Anzahl Testfälle mit erwarteten Fehlern. 'Fehlschlagen erwartet wenn...' markiert einen Testfall als erwartet fehlerhaft.
Anzahl erfolgreicher Testfälle.
Anzahl übersprungene Testfälle. Ein Testfall wird übersprungen, wenn seine (optionale) 'Bedingung' fehlschlägt. Diese Zählerwert beginnt mit einem '>' Zeichen im Fall von übersprungenen Testfallsätzen.
Anzahl übersprungene Testfallsätze. Ein Testfallsatz wird übersprungen, wenn seine (optionale) 'Bedingung' fehlschlägt.
Anzahl nicht implementierter Testfälle. Ein Testfall gilt als nicht implementiert, wenn er keine Knoten enthält, die während des Testlaufs aufgeführt wurden.
Anzahl ausgeführter Testfälle.
Prozent Testfälle erfolgreich.
Tabelle 4.1:  Testresultate in der Statusleiste

Die finalen Zählerstände finden sich auch im Report wieder, der für jeden Testlauf generiert werden kann. Reports sind Thema von Kapitel 18.

HinweisDie Zählerwerte von oben stehen auch als Variablen während dem Testlauf zur Verfügung. Ein TestRunListener kann hilfreich sein, um die Zählerwerte während des Testlaufs auszuwerten und entsprechende Aktionen anzustoßen.

4.3
Aufnehmen von Checks

Auch wenn es ganz unterhaltsam sein kann, Sequenzen aufzuzeichnen und dem Spiel der Fenster des SUT beim Wiederabspielen zuzusehen, geht es doch eigentlich darum herauszufinden, ob sich das SUT dabei auch korrekt verhält. Diese Aufgabe übernehmen Checks. Der 'Check Text' Knoten zum Beispiel, liest den Text aus einer Komponente aus und vergleicht ihn mit einem vorgegebenen Wert. Stimmen diese nicht überein, wird ein Fehler signalisiert.

Eine Aufstellung aller möglichen Checks und ihrer Funktionsweisen findet sich im Referenzteil. Die Palette reicht vom einfachen Text-Check bis zum mächtigen 'Check Abbild' mit Suchalgorithmen bis hin zur Möglichkeit eigene Check-Typen zu implementieren. Im Weiteren werden wir uns darauf konzentrieren, wie man Checks am einfachsten erstellt, nämlich indem man sie aufnimmt.

Während der Aufnahme befindet sich das SUT im Aufnahmemodus, in dem alle Events gesammelt und an QF-Test geschickt werden. Über den Check Button Check oder mittels »Aufnahme«-»Check« schalten Sie das SUT in den Checkmodus, zu erkennen am geänderten Mauszeiger. In diesem Modus werden Events nicht weiter aufgezeichnet. Stattdessen wird die Komponente unter dem Mauszeiger hervorgehoben. Wenn Sie auf eine Komponente klicken, wird ein Check für diese aufgezeichnet. Der aktuelle Wert der Komponente wird dabei als Maßgabe verwendet. Um zurück in den Aufnahmemodus zu gelangen, verwenden Sie ebenfalls den Check Button oder den Menüeintrag.

Es gibt verschiedene Arten von Checks, die man für eine Komponente vornehmen kann. Welche davon in Frage kommen, hängt von der jeweiligen Komponente ab. So stellen manche Komponenten keinen Text dar, so dass z.B. ein 'Check Text' Knoten für einen Scrollbar keinen Sinn ergibt. Wenn Sie im Checkmodus mit der rechten Maustaste auf eine Komponente klicken, erhalten Sie ein Menü mit allen für diese Komponente zur Verfügung stehenden Arten von Checks. In diesem können Sie den gewünschten Check auswählen. Ein Klick mit der linken Maustaste zeichnet dagegen direkt den ersten Check aus dieser Liste auf.

Wenn Sie die [Shift] oder [Strg] Taste gedrückt halten, während Sie mit der rechten Maustaste klicken, bleibt das Auswahlmenü für die Checks auch nach einer Selektion offen. Dadurch können Sie sehr einfach mehrere verschiedene Checks für die selbe Komponente aufnehmen.

Checks und Events lassen sich sehr gut mischen und Sie werden bald einen Aufnahmestil a'la klick, klick, tipp, check, klick, klick, check... entwickeln. Dabei ständig zwischen dem SUT und QF-Test hin- und herzuschalten um den Checkmodus zu (de)aktivieren, ist mehr als mühsam. Stattdessen können Sie mittels einer Tastenkombination direkt im SUT zwischen Aufnahmemodus und Checkmodus hin- und herzuschalten. Standardmäßig ist diese Taste [F12]. Ist diese Taste anderweitig belegt, oder lässt Ihr Windowmanager diese gar nicht erst bis zur Applikation durch, können Sie über die Option Hotkey für Checks eine beliebige andere Tastenkombination dafür wählen. Um eine Sequenz mit eingestreuten Checks aufzunehmen, müssen Sie nun nur noch die Aufnahme starten, zum SUT wechseln und die Sequenz aufnehmen. Wann immer Sie einen Check einbauen wollen, drücken Sie [F12] (oder was immer Sie konfiguriert haben) und nehmen Sie den Check (oder die Checks) auf. Schalten Sie dann mit [F12] wieder zurück, um mit der Aufnahme fortzufahren. Auf diese Weise können Sie komplett im SUT arbeiten und müssen lediglich zu QF-Test zurückschalten, um die Aufnahme zu beenden.

Achtung: Lassen Sie sich durch diese Annehmlichkeiten nicht dazu verführen, allzu lange Sequenzen aufzunehmen. Wenn sich am SUT etwas ändert, das dazu führt dass eine solche Sequenz nicht mehr durchläuft, kann es sehr mühsam werden, herauszufinden was schiefgegangen ist und die Sequenz entsprechend anzupassen.

4.4
Komponenten aufnehmen

Wie bereits erwähnt wird Komponenteninformation automatisch mitgespeichert wenn Events oder Checks aufgenommen werden. Trotzdem gibt es Situationen in denen die Aufnahme von Komponenten alleine hilfreich ist.

Um den Modus zum Komponentenaufnehmen zu starten, braucht nur der Komponentenaufnahme-Knopf Record         components gedrückt oder »Aufnahme«-»Komponenten aufnehmen« gewählt werden. Bei dem anschließenden Wechsel zum Fenster des SUT zeigt sich dort ein besonderes Verhalten, in welchem die Komponente unter dem Mauszeiger hervorgehoben wird.

Ein Klick mit der linken Maustaste auf eine Komponente zeichnet diese auf, während bei einem Klick mit der rechten Maustaste ein Menü mit weiteren Möglichkeiten geöffnet wird, z.B. um eine Komponente mit seinen Kinder oder auch alle Komponenten eines Fensters aufzunehmen. In dieser Weise können mehrere Komponenten erfasst werden. Als nächstes wechselt man zurück zu QF-Test und deaktiviert den Komponentenaufnahme-Knopf oder den »Aufnahme«-»Komponenten aufnehmen« Menüeintrag. Nun werden die gespeicherten Komponenteninformationen in Form von 'Komponente' Knoten unter dem 'Fenster und Komponenten' Knoten abgelegt.

Die Aufnahme von Komponenten kann alternativ mit einer konfigurierbaren Tastenkombination gesteuert werden. Durch Drücken von [Shift-F11] (Standardeinstellung) im Fenster des SUTs wird die Komponentenaufnahme aktiviert. Weitere Informationen finden Sie in der Dokumentation zur Option Hotkey für Komponenten.

Hinweis Nur jeweils eine Testsuite kann die aufgezeichneten Komponenten in Empfang nehmen. Haben Sie mehrere Testsuiten in individuellen Fenster geöffnet, wenn also die Workbench-Ansicht deaktiviert ist, so erhält die Suite die Komponenten, in der die Komponentenaufnahme (mittels Knopf oder Menü) gestoppt wird oder - falls [Shift-F11] verwendet wurde, die Suite, die über den Menüeintrag »Aufnahme«-»Suite ist Empfänger für Aufnahmen« festgelegt werden kann.

Das Feature der Komponentenaufnahme kann auch dazu verwendet werden, schnell eine Komponente aufzufinden, egal ob sie schon aufgezeichnet wurde oder nicht. Beim Anlegen von Event- oder Checkknoten von Hand oder beim Ändern der Zielkomponente, muss diese im Attribut 'QF-Test ID der Komponente' angegeben werden. Wird eine Komponente aufgezeichnet, steht ihre 'QF-Test ID' anschließend im Clipboard und kann mittels [Strg-V] direkt in das Feld für die 'QF-Test ID der Komponente' eingefügt werden. Außerdem können Sie mittels [Strg-Umschalt-Backspace] oder über den Menüeintrag »Bearbeiten«-»Nächsten Knoten anwählen« oder den entsprechenden Button in der Werkzeugleiste direkt zum aufgenommenen 'Komponente' Knoten springen.

Das Popup-Menü, das erscheint, wenn man mit der rechten Maustaste auf eine Komponente klickt, enthält auch einen Eintrag »Methoden anzeigen«, der es erlaubt, eine Art von Komponenten-Untersuchung durchzuführen (siehe Abschnitt 5.5).

Komponenten spielen in der Struktur einer Testsuite eine zentrale Rolle, auf die in Kapitel 5 näher eingegangen wird.

Web4.5
HTTP Requests aufnehmen (GET/POST)

Um einen vom SUT gesendeten (GET/POST) Request aufnehmen zu können, muss das SUT aus QF-Test heraus gestartet worden sein (vgl.Kapitel 40) und die Verbindung zum SUT muss bestehen.

Während der Aufnahme befindet sich das SUT im Aufnahmemodus, in dem alle Events gesammelt und an QF-Test geschickt werden. Über den HTTP-Request Button HTTP Requests aufnehmen oder mittels »Aufnahme«-»HTTP Requests aufnehmen« schalten Sie das SUT in den Request Aufnahme Modus. In diesem speziellen Aufnahme-Modus werden im Gegensatz zum bereits beschriebenen Aufnehmen von Testsequenzen alle vom Webbrowser gesendeten GET bzw. POST Request als spezielle Knoten gespeichert. Um zurück in den Aufnahmemodus zu gelangen, verwenden Sie ebenfalls den HTTP-Request Button oder den Menüeintrag.

Im Abschnitt Web Optionen wird beschrieben wie der Typ des aufgenommenen Requests beeinflusst werden kann. Standardmäßig wird ein 'Browser HTTP Request' erzeugt. Dieser eignet sich zum Automatisieren größerer Formulareingaben, da keine separaten Eingabeknoten verwendet werden müssen. Die Formulardaten werden direkt im Browser abgesendet und der erhaltene Response dargestellt. An dieser Stelle kann der Testablauf direkt im Browser weitergeführt werden. Der 'Server HTTP Request' wird hingegen direkt durch QF-Test abgesendet. Der Response steht nur in QF-Test zur Verfügung und beeinflusst den Browser nicht.

Die Attribute eines entsprechend aufgezeichneten HTTP-Request Knotens oder auch die Parametrisierung von Requests sind ausführlich im Abschnitt HTTP Requests des Referenzteils erläutert.