qf-test - das handbuch · 2020. 12. 11. · vorwort wie unser firmenname unschwer erkennen lässt,...
TRANSCRIPT
-
QF-Test - Das Handbuch
Version 5.3.0
Quality First Software GmbH1
Copyright c© 1999-2021 Quality First Software GmbH
20. Mai 2021
1http://www.qfs.de
-
Vorwort
Wie unser Firmenname unschwer erkennen lässt, hat sich die Quality First SoftwareGmbH dem Thema Qualität in der Softwareentwicklung verschrieben. Unser Beitraghierzu ist das Programm QF-Test, dessen Handbuch Sie gerade lesen.
Mit Hilfe von QF-Test können Funktionalitätstests von Java Programmen oder Websei-ten automatisiert werden, sofern diese eine grafische Benutzeroberfläche aufweisen.Die undankbare Aufgabe des Testens fällt je nach Größe und Struktur einer Firma undihrer Projekte mal einem eigenen Team zur Qualitätssicherung zu, mal wird sie von denEntwicklern nebenbei erledigt und manchmal fällt sie ganz unter den Tisch, dann testeteben der Kunde. Anwender von QF-Test sind daher sowohl Entwickler als auch Tester,die zum Teil sehr unterschiedliche Vorkenntnisse im Bezug auf Java oder Web GUIsmitbringen.
Das VideoVideo
’Überblick’https://www.qfs.de/de/yt/ueberblick-42.html
bietet eine allgemeine Übersicht über QF-Test.
Im Video
’Technische Einführung’https://www.qfs.de/de/yt/technische-einfuehrung-42.html
erhalten Sie einen technischen Einblick in QF-Test.
Wir versuchen in diesem Handbuch sowohl Entwicklern als auch Testern gerecht zuwerden und die erforderlichen Grundlagen über den Aufbau einer grafischen Benut-zeroberfläche und die Handhabung von Ereignissen unter Java zu vermitteln. Solltendabei Fragen offen bleiben, wenden Sie sich als Tester am besten an Ihre Entwickler,die Ihnen sicherlich weiterhelfen können. Die Entwickler unter Ihnen werden wir hoffent-lich nicht zu sehr langweilen. Sie können die entsprechenden Stellen gegebenenfallseinfach überspringen.
Ursprünglich unterstützte QF-Test nur Java Swing GUIs, mit Version 2.0 kam Eclip-se/SWT hinzu mit Version 3.0 die Unterstützung von Webtesten. Teile von QF-Test unddieses Handbuch wurden entsprechend geprägt, so dass die Dinge aus Sicht des Te-
-
ii
stens von Swing GUIs erklärt sind. In den meisten Fällen sind die Konzepte universellfür alle GUIs anwendbar. Wo sie sich unterscheiden werden mit speziellen Hinweisendie Eigenheiten von SWT oder Web GUIs erklärt.
Und noch ein Wort zur Sprache: Deutsche Bücher zu Computerthemen leiden fast im-mer unter dem Problem, dass viele Begriffe aus dem Englischen kommen. Diese ha-ben im technischen Zusammenhang oft eine spezielle Bedeutung, die von der normal-sprachlichen abweicht. Die Übersetzung solcher Begriffe ist schwierig, führt zu eigenar-tigen Wortkonstruktionen und verschleiert schlimmstenfalls die eigentliche Bedeutung.Belässt man sie dagegen in ihrer englischen Form, ergibt sich ein etwas holpriger Satz-bau. Wir werden in diesem Handbuch beide Wege gehen und von Fall zu Fall entschei-den.
Hinweise zur Benutzung dieses Handbuchs
Dieses Handbuch wird in HTML und PDF Versionen ausgeliefert. Die HTML Versionist zur besseren Navigation in kleinere Dateien aufgeteilt. Dank vieler Querverweise istdie HTML Version besser zum Lesen am Rechner geeignet, während die PDF Versionhohe Druckqualität liefert. Zum Suchen im Text ist die PDF Version vorzuziehen, da dieAufteilung der HTML Dateien eine Suche durch das gesamte Handbuch verhindert.
Die PDF Version des Handbuchs befindet sich unterqftest-5.3.0/doc/manual_de.pdf, die Einstiegsseite der HTML Version unterqftest-5.3.0/doc/manual/de/manual.html.
Ein Webbrowser für die HTML Version kann direkt aus QF-Test heraus gestartetwerden. Der Menüeintrag Hilfe→Handbuch... führt Sie zur Einstiegsseite,Hilfe→Neuigkeiten... zur Dokumentation der Änderungen seit der letzten Version.
Kontextsensitive Hilfe wird ebenfalls auf diesem Weg geboten. Klicken Sie dazu mit derrechten Maustaste auf einen beliebigen Baumknoten, ein Attribut oder eine Option undwählen Sie Was ist das? im Popupmenü. Das alles funktioniert nur, wenn der Browserdes Systems für QF-Test zugänglich ist.
Das Handbuch besteht aus drei Teilen, die aus technischen Gründen in einem Doku-ment zusammengefasst sind (einfachere Querverweise und Indexgenerierung). Mögli-cherweise werden diese in späteren Versionen getrennt. Bei diesen Teilen handelt essich um:
Anwenderhandbuch(2)
Dieser Teil erklärt, wie QF-Test installiert und gestartet wird und wie dieBenutzeroberfläche zu bedienen ist. Er zeigt, wie Tests erstellt und aufgebautwerden und widmet sich dann fortgeschrittenen Themen. Um doppelteErklärungen zu vermeiden bezieht sich das Anwenderhandbuch an vielen Stellen
-
iii
auf den Referenzteil, der den jeweiligen Punkt ausführlich erläutert. Es wirddringend empfohlen, diesen Verweisen zu folgen.
Referenzteil(373)
Dies ist eine vollständige Referenz, die sämtliche einstellbaren Optionen, alleBestandteile einer Testsuite und vieles weitere abdeckt. Wenn Sie spezielleInformation zu einem Thema suchen, ist dies der richtige Ort zum Nachschlagen.Die kontextsensitive Hilfe führt ebenfalls zum Referenzteil.
Technische Referenz(761)
Die Technische Referenz enthält Hintergrundinformationen über dieFunktionsweise von QF-Test sowie eine umfassende API Referenz der SkriptSchnittstelle. Für Einsteiger ist dieser Teil weniger geeignet, für fortgeschritteneund technisch interessierte Anwender dagegen eine wertvolle Informationsquelle.
Ein ”learning-by-doing” Tutorial ist ebenfalls in HTML und PDF Versionen verfügbar.Die HTML Version, die auch direkt mittels Hilfe→Tutorial (HTML)... aufgerufen werdenkann, befindet sich unter qftest-5.3.0/doc/tutorial/de/tutorial.html. DiePDF Version in qftest-5.3.0/doc/tutorial_de.pdf ist über den MenüeintragHilfe→Tutorial (PDF)... ebenfalls direkt zugänglich.
Das Handbuch folgt folgenden Konventionen:
• Menü→Untermenü stellt ein Menü oder einen Menüeintrag dar.
•�� ��Modifier-Taste steht für einen Tastendruck. Mögliche Modifier sind �� ��Shift (Hoch-stellen),
�� ��Strg , �� ��Alt oder eine Kombination daraus.• Der Schrifttyp Courier wird für Datei- und Verzeichnisnamen, Programmein- und
-ausgaben verwendet.
• Um die Vorzüge von Querverweisen wenigstens ansatzweise zu Papier zu brin-gen, werden Verweise(ii) in der PDF Version unterstrichen und geben die Seiten-zahl des Ziels klein und in Klammern an.
-
iv
Inhaltsverzeichnis
I Anwenderhandbuch 1
1 Installation und Start 2
1.1 Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Hard- und Software . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Unterstützte Technologien . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Windows Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Installation mit dem Windows Setup-ProgrammQF-Test-5.3.0.exe . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Auspacken des selbstextrahierenden ArchivsQF-Test-5.3.0-sfx.exe . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Abschluss der Installation und Java Konfiguration . . . . . . . . . 7
1.3 Linux/Unix Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 macOS Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Lizenzdatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6 Konfigurationsdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7 Aufruf von QF-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.8 Firewall Sicherheitswarnung . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 Bedienung von QF-Test 14
2.1 Die Testsuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Bearbeiten einer Testsuite . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Navigation im Baum . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2 Einfügemarkierung . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3 Knoten verschieben . . . . . . . . . . . . . . . . . . . . . . . . . 18
-
INHALTSVERZEICHNIS v
2.2.4 Knoten konvertieren . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.5 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.6 Packen und Entpacken . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.7 Sortieren von Knoten . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Erweiterte Bearbeitungsmöglichkeiten . . . . . . . . . . . . . . . . . . . . 22
2.3.1 Suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2 Ersetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.3 Kompliziertere Such- und Ersetzungsvorgänge . . . . . . . . . . 29
2.3.4 Mehrere Ansichten . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.5 Toolbar-Buttons ausblenden . . . . . . . . . . . . . . . . . . . . . 29
3 Schnellstart Ihrer Anwendung 30
3.1 Erzeugung der Startsequenz - Schnellstart-Assistent . . . . . . . . . . . 31
3.2 Ausführen der Startsequenz . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Wenn sich der Client nicht verbindet ... . . . . . . . . . . . . . . . . . . . 34
3.4 Programmausgaben und das Clients Menü . . . . . . . . . . . . . . . . . 35
3.5 Indirektes Starten eines zweiten SUT als Kindprozess eines bereits ver-bundenen SUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Aufnahme und Wiedergabe 37
4.1 Aufnahme von Testsequenzen . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Abspielen von Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3 Aufnehmen von Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4 Komponenten aufnehmen . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.5 HTTP Requests aufnehmen (GET/POST) . . . . . . . . . . . . . . . . . 43
5 Komponenten 44
5.1 Hierarchie der Komponenten eines GUI . . . . . . . . . . . . . . . . . . . 45
5.2 Komponenten in QF-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.3 QF-Test IDs von Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.4 Klassen von Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4.1 Generische Klassen . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4.2 Klassenaufbau in Webanwendungen . . . . . . . . . . . . . . . . 51
-
INHALTSVERZEICHNIS vi
5.4.3 Einstellungen zur Aufnahme von Klassen . . . . . . . . . . . . . 52
5.5 Untersuchung von Komponenten . . . . . . . . . . . . . . . . . . . . . . 52
5.6 Warum Namen so wichtig sind . . . . . . . . . . . . . . . . . . . . . . . . 53
5.7 Erwägungen zur Vergabe von Namen . . . . . . . . . . . . . . . . . . . . 54
5.8 Komponenten aktualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.9 Lösung von Problemen bei der Wiedererkennung . . . . . . . . . . . . . 58
5.10 Zugriff auf unsichtbare Felder einer Webseite . . . . . . . . . . . . . . . 61
6 Unterelemente komplexer GUI Komponenten 62
6.1 Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2 Die QF-Test ID eines Elements . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3 Besondere QF-Test ID-Syntax für direkten Zugriff auf Elemente . . . . . . 64
6.3.1 Zugriff auf einfache Unterelemente . . . . . . . . . . . . . . . . . 64
6.3.2 Mehrstufige Unterelemente und deren Adressierung . . . . . . . 65
6.4 Element-Aufnahme für Web-Tabellen aktivieren . . . . . . . . . . . . . . 68
7 Variablen 69
7.1 Ermittlung des Wertes einer Variablen . . . . . . . . . . . . . . . . . . . . 69
7.2 Definition von Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.3 Variablen Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.4 Daten aus der GUI auslesen . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.5 Externe Daten und spezielle Gruppen . . . . . . . . . . . . . . . . . . . . 74
7.6 Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.7 Immediate und Lazy Binding . . . . . . . . . . . . . . . . . . . . . . . . . 80
8 Problemanalyse und Debugging 82
8.1 Das Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.1.1 Fehlerzustände . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.1.2 Navigation im Protokoll . . . . . . . . . . . . . . . . . . . . . . . . 85
8.1.3 Werte von fehlgeschlagenen Checks als gültig akzeptieren . . . 86
8.1.4 Geteilte Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.1.5 Protokoll Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.1.6 Eine Testsuite aus dem Protokoll erstellen . . . . . . . . . . . . . 89
-
INHALTSVERZEICHNIS vii
8.1.7 Protokolle zusammenführen . . . . . . . . . . . . . . . . . . . . . 90
8.2 Der Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.2.1 Aktivieren des Debuggers . . . . . . . . . . . . . . . . . . . . . . 91
8.2.2 Das Debuggerfenster . . . . . . . . . . . . . . . . . . . . . . . . 92
8.2.3 Debugger Kommandos . . . . . . . . . . . . . . . . . . . . . . . 92
8.2.4 Breakpoints setzen und löschen . . . . . . . . . . . . . . . . . . 94
9 Aufbau und Organisation einer Testsuite 95
9.1 Struktur der Testsuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.2 Testfallsatz und Testfall Knoten . . . . . . . . . . . . . . . . . . . . . . . . 97
9.2.1 Verwaltung von Tests mit Hilfe von Testfallsatz und Testfall Knoten 97
9.2.2 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
9.2.3 Variablen und besondere Attribute . . . . . . . . . . . . . . . . . 98
9.3 Sequenz und Testschritt Knoten . . . . . . . . . . . . . . . . . . . . . . . . 99
9.4 Vorbereitung und Aufräumen Knoten . . . . . . . . . . . . . . . . . . . . . 99
9.5 Prozeduren und Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.5.1 Lokale Prozeduren und Packages . . . . . . . . . . . . . . . . . . . 103
9.5.2 Relative Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.5.3 Einfügen von Prozeduraufruf Knoten . . . . . . . . . . . . . . . . . 104
9.5.4 Parametrisieren von Knoten . . . . . . . . . . . . . . . . . . . . . 104
9.5.5 Konvertieren von Sequenzen und Testschritte in Prozeduren . . . . . 104
9.6 Abhängigkeit Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.6.1 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.6.2 Verwendung von Abhängigkeiten . . . . . . . . . . . . . . . . . . . 106
9.6.3 Abhängigkeiten - Ausführung und Stapel von Abhängigkeiten . . . 107
9.6.4 Charakteristische Variablen . . . . . . . . . . . . . . . . . . . . . . 111
9.6.5 Aufräumen erzwingen . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.6.6 Abhängigkeiten abbauen . . . . . . . . . . . . . . . . . . . . . . . 114
9.6.7 Eskalation von Fehlern . . . . . . . . . . . . . . . . . . . . . . . . 114
9.6.8 Fehlerbehandlung und Reaktion auf unerwartetes Verhalten . . 117
9.6.9 Namensräume für Abhängigkeiten . . . . . . . . . . . . . . . . . 118
9.7 Dokumentieren von Testsuiten . . . . . . . . . . . . . . . . . . . . . . . . 121
-
INHALTSVERZEICHNIS viii
10 Projekte 123
11 Standardbibliothek 126
12 Skripting 129
12.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
12.2 Der Runcontext rc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
12.2.1 Meldungen ausgeben . . . . . . . . . . . . . . . . . . . . . . . . 132
12.2.2 Checks durchführen . . . . . . . . . . . . . . . . . . . . . . . . . 133
12.2.3 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
12.2.4 Zugriff auf die GUI Komponenten des SUT . . . . . . . . . . . . 137
12.2.5 Aufruf von Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . 138
12.2.6 Setzen von Optionen . . . . . . . . . . . . . . . . . . . . . . . . . 139
12.2.7 Komponenten bei Bedarf setzen . . . . . . . . . . . . . . . . . . 139
12.3 Jython Skripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
12.3.1 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
12.3.2 Post-mortem Fehleranalyse von Jython Skripten . . . . . . . . . 142
12.3.3 Boolean Typ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
12.3.4 Jython Strings und Zeichenkodierung . . . . . . . . . . . . . . . 142
12.3.5 Den Namen einer Java Klasse ermitteln . . . . . . . . . . . . . . 145
12.3.6 Ein komplexes Beispiel . . . . . . . . . . . . . . . . . . . . . . . 146
12.4 Groovy Skripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
12.4.1 Groovy Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
12.5 JavaScript Skripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
12.5.1 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
12.5.2 Ausgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
12.5.3 Ausführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
13 Unit Tests 156
13.1 Java-Klassen als Quelle für Unit Tests . . . . . . . . . . . . . . . . . . . . 156
13.2 Grundlagen der Test-Skripte . . . . . . . . . . . . . . . . . . . . . . . . . 158
13.2.1 Groovy Unit Tests . . . . . . . . . . . . . . . . . . . . . . . . . . 159
13.2.2 Jython Unit Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
-
INHALTSVERZEICHNIS ix
13.2.3 JavaScript Unit Test . . . . . . . . . . . . . . . . . . . . . . . . . 160
13.3 Injections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
13.3.1 Komponenten in den Unit Tests verwenden . . . . . . . . . . . . 161
13.3.2 WebDriver-Injections . . . . . . . . . . . . . . . . . . . . . . . . . 163
13.4 Unit Tests im Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
14 Testen von Webseiten 166
14.1 Unterstützte Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
14.2 Allgemeine Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . 167
14.3 Die Verbindung zum Browser . . . . . . . . . . . . . . . . . . . . . . . . . 167
14.4 Erkennung von Web-Komponenten und Toolkits . . . . . . . . . . . . . . 168
14.5 Cross-Browser Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
14.6 Testen von mobilen Webseiten . . . . . . . . . . . . . . . . . . . . . . . . 171
14.7 Web-Testen im Headless-Modus . . . . . . . . . . . . . . . . . . . . . . . 172
14.8 Einbindung vorhandener Selenium Web-Tests . . . . . . . . . . . . . . . 172
14.9 Auswahl der Browser Installation . . . . . . . . . . . . . . . . . . . . . . . 173
15 Testen nativer Windows Anwendungen 174
15.1 Einstieg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
15.2 Technischer Hintergrund . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
15.3 Start/Anbindung einer Applikation . . . . . . . . . . . . . . . . . . . . . . 176
15.4 Aufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
15.5 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
15.6 Wiedergabe und Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
15.7 Skripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
15.8 Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
15.8.1 Windows Skalierung . . . . . . . . . . . . . . . . . . . . . . . . . 182
15.8.2 Sichtbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
15.8.3 Verbinden zu einem Fenster einer bestimmten Klasse . . . . . . 183
15.8.4 Begrenzung der Anzahl von Kind-Elementen . . . . . . . . . . . 183
15.9 (Aktuelle) Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . 183
15.10 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
-
INHALTSVERZEICHNIS x
16 Testen von PDF Dokumenten 185
16.1 PDF Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
16.1.1 PDF Client starten . . . . . . . . . . . . . . . . . . . . . . . . . . 185
16.1.2 Das Fenster des PDF Client . . . . . . . . . . . . . . . . . . . . . 186
16.2 PDF Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
16.2.1 PDF Dokument öffnen . . . . . . . . . . . . . . . . . . . . . . . . 188
16.2.2 Seite wechseln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
16.3 Checks für PDF-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 189
16.3.1 Check Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
16.3.2 Check Abbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
16.3.3 ’Check Font’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
16.3.4 ’Check Font Größe’ . . . . . . . . . . . . . . . . . . . . . . . . . . 194
16.4 PDF Komponententypen . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
16.5 PDF Komponentenerkennung . . . . . . . . . . . . . . . . . . . . . . . . 195
17 Testen von Java Desktopanwendungen im Browser mit Webswing oderJPro 197
17.1 Technische Konzepte von JiB für Webswing und JPro . . . . . . . . . . . 198
18 Testen von Electron Anwendungen 200
18.1 Electron Client starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
18.1.1 Electron Einstellungen im Schnellstart-Assistenten . . . . . . . . 201
18.2 Electron spezifische Funktionalität in QF-Test . . . . . . . . . . . . . . . 201
18.2.1 Native Menüs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
18.2.2 Native Dialoge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
18.3 Technische Anmerkung zum Testen von Electron-Anwendungen . . . . . 202
19 Testen von Webdiensten 205
19.1 REST Webservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
19.1.1 Der HTTP Standard und Webdienste . . . . . . . . . . . . . . . . 205
19.1.2 HTTP Anfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
19.1.3 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
-
INHALTSVERZEICHNIS xi
20 Datengetriebenes Testen 208
20.1 Beispiele für Datentreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
20.2 Anwendung von Datentreibern . . . . . . . . . . . . . . . . . . . . . . . . . 213
20.3 Beispiele für Datentreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
20.4 Fortgeschrittene Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . 214
21 Reports und Testdokumentation 217
21.1 Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
21.1.1 Reportkonzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
21.1.2 Inhalt von Reports . . . . . . . . . . . . . . . . . . . . . . . . . . 220
21.1.3 Reports erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
21.1.4 Individualisierung von Reports . . . . . . . . . . . . . . . . . . . 222
21.2 Testdoc Dokumentation für Testfallsätze und Testfälle . . . . . . . . . . . . 223
21.3 Pkgdoc Dokumentation für Packages, Prozeduren und Abhängigkeiten . . . 224
22 Testausführung 227
22.1 Testausführung im Batchmodus . . . . . . . . . . . . . . . . . . . . . . . 227
22.1.1 Verwenden der Kommandozeile . . . . . . . . . . . . . . . . . . . 228
22.1.2 Windows Befehlsskript . . . . . . . . . . . . . . . . . . . . . . . . 230
22.1.3 Groovy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
22.2 Testausführung im Daemonmodus . . . . . . . . . . . . . . . . . . . . . . 233
22.2.1 Starten des Daemons . . . . . . . . . . . . . . . . . . . . . . . . 233
22.2.2 Steuern des Daemons über die QF-Test Kommandozeile . . . . 234
22.2.3 Steuern des Daemons über die Daemon API . . . . . . . . . . . 235
22.3 Erneute Ausführung von Knoten (Rerun) . . . . . . . . . . . . . . . . . . 239
22.3.1 Erneute Ausführung aus dem Protokoll . . . . . . . . . . . . . . . 239
22.3.2 Fehlerhafte Knoten sofort wiederholen . . . . . . . . . . . . . . . 242
23 Verteilte Entwicklung von Tests 245
23.1 Der Aufruf einer Prozedur in einer anderen Testsuite . . . . . . . . . . . . 246
23.2 Die Verwaltung von Komponenten . . . . . . . . . . . . . . . . . . . . . . . 247
23.3 Verschmelzen von Testsuiten . . . . . . . . . . . . . . . . . . . . . . . . . 248
23.3.1 Importieren von Komponenten . . . . . . . . . . . . . . . . . . . 248
-
INHALTSVERZEICHNIS xii
23.3.2 Importieren von Prozeduren und Testfällen . . . . . . . . . . . . 249
23.4 Verteilte Entwicklung von Tests . . . . . . . . . . . . . . . . . . . . . . . . 249
23.5 Statische Validierung von Testsuiten . . . . . . . . . . . . . . . . . . . . . 251
23.5.1 Ungültige Referenzen vermeiden . . . . . . . . . . . . . . . . . . 251
23.5.2 Ungenutzte Prozeduren finden . . . . . . . . . . . . . . . . . . . 254
24 Automatisierte Erstellung von Basisprozeduren 255
24.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
24.2 Die Verwendung vom Procedure Builder . . . . . . . . . . . . . . . . . . 256
24.3 Konfiguration des Procedure Builder . . . . . . . . . . . . . . . . . . . . . 257
24.3.1 Die Procedure Builder Definitionsdatei . . . . . . . . . . . . . . . 258
25 Anbindung an Testmanagementtools 260
25.1 HP ALM - Quality Center . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
25.1.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
25.1.2 Schritt für Schritt Anleitung . . . . . . . . . . . . . . . . . . . . . 262
25.1.3 Fehlersuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
25.2 Imbus TestBench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
25.2.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
25.2.2 Generieren von QF-Test Vorlage-Testsuiten aus den Interaktionen274
25.2.3 Importieren der Resultate . . . . . . . . . . . . . . . . . . . . . . 274
25.3 QMetry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
25.3.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
25.3.2 Demokonfiguration Beispiel . . . . . . . . . . . . . . . . . . . . . 277
25.4 Klaros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
25.4.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
25.4.2 Importieren von QF-Test Ergebnissen in Klaros . . . . . . . . . . 278
25.5 TestLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
25.5.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
25.5.2 Generieren von QF-Test Vorlagen-Testsuiten aus den Testfällen . 280
25.5.3 Ausführung der Testfälle . . . . . . . . . . . . . . . . . . . . . . . 281
25.5.4 Importieren der QF-Test Resultate nach TestLink . . . . . . . . . 282
-
INHALTSVERZEICHNIS xiii
26 Integration mit Entwickler-Tools 284
26.1 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
26.1.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
26.1.2 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
26.2 Ant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
26.3 Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
26.4 Jenkins/Hudson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
26.4.1 Jenkins installieren und starten . . . . . . . . . . . . . . . . . . . 292
26.4.2 Voraussetzungen für GUI-Tests . . . . . . . . . . . . . . . . . . . 293
26.4.3 Installation des QF-Test Plugins . . . . . . . . . . . . . . . . . . . 293
27 Schlüsselwortgetriebenes bzw. Keyword-Driven Testing mit QF-Test 295
27.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
27.2 Einfaches Keyword-Driven Testing mit QF-Test . . . . . . . . . . . . . . . 298
27.2.1 Fachliche Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . 298
27.2.2 Atomare Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . 302
27.3 Keyword-Driven Testing mit dynamischen/generischen Komponenten . . 303
27.4 Behavior-Driven Testing (BDT) . . . . . . . . . . . . . . . . . . . . . . . . 307
27.4.1 Behavior-Driven Testing (BDT) mit technischer Beschreibung . . 307
27.4.2 Behavior-Driven Testing (BDT) mit fachlicher Beschreibung . . . 310
27.5 Szenariodateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
27.6 Eigene Testbeschreibungen . . . . . . . . . . . . . . . . . . . . . . . . . 314
27.7 Anpassung an Ihre Software . . . . . . . . . . . . . . . . . . . . . . . . . 315
28 Durchführung von Lasttests mit QF-Test 317
28.1 Hintergrund und Vergleich mit anderen Techniken . . . . . . . . . . . . . 317
28.2 Lasttests mit QF-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
28.2.1 Bereitstellung der Testsysteme . . . . . . . . . . . . . . . . . . . 323
28.2.2 Konzeption des Testlaufes . . . . . . . . . . . . . . . . . . . . . . 323
28.2.3 Vorbereiten der Testsysteme für den Testlauf . . . . . . . . . . . 324
28.2.4 Testausführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
28.2.5 Testauswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
-
INHALTSVERZEICHNIS xiv
28.3 Spezielles zur Testausführung . . . . . . . . . . . . . . . . . . . . . . . . 326
28.3.1 Synchronisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
28.3.2 Messen von End-to-End Zeiten . . . . . . . . . . . . . . . . . . . 327
28.4 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
28.5 Web-Lasttests ohne sichtbare Browser-Fenster . . . . . . . . . . . . . . 329
29 Ausführung manueller Tests mit QF-Test 330
29.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
29.2 Schritt-für-Schritt Anleitung . . . . . . . . . . . . . . . . . . . . . . . . . . 331
29.3 Aufbau der Excel Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
29.4 Die Ausführungstestsuite . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
29.5 Die möglichen Zustände . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
II Best Practices 335
30 Einführung 336
31 Wie beginnt man in einem Testprojekt? 337
31.1 Infrastruktur und Testumgebung . . . . . . . . . . . . . . . . . . . . . . . 337
31.2 Speicherorte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
31.2.1 Netzwerkinstallation . . . . . . . . . . . . . . . . . . . . . . . . . 340
31.3 Wiedererkennung von Komponenten . . . . . . . . . . . . . . . . . . . . 341
32 Organisation von Testsuiten 343
32.1 Organisation von Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
32.2 Modularisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
32.3 Parametrisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
32.4 Arbeiten in mehreren Testsuiten . . . . . . . . . . . . . . . . . . . . . . . 345
32.5 Rollen und Zuständigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . 347
32.6 Komponenten in unterschiedlichen Ebenen verwalten . . . . . . . . . . . 349
32.7 Umgekehrte Includes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
33 Effiziente Arbeitstechniken 350
-
INHALTSVERZEICHNIS xv
33.1 Arbeiten mit QF-Test Projekten . . . . . . . . . . . . . . . . . . . . . . . . 350
33.2 Erstellung von Testsuiten . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
33.3 Die Standardbibliothek qfs.qft . . . . . . . . . . . . . . . . . . . . . . . . 351
33.4 Ablage von Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . 351
33.5 Erweitern von Testsuiten . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
33.6 Arbeiten mit dem Skripteditor . . . . . . . . . . . . . . . . . . . . . . . . . 353
34 Wie erreicht man eine robuste Komponentenerkennung? 354
34.1 Benutzen der Standardeinstellungen . . . . . . . . . . . . . . . . . . . . 354
34.2 Die ’Name übertrifft alles’ Einstellung benutzen . . . . . . . . . . . . . . 356
34.3 Verwendung von regulären Ausdrücken oder Arbeiten mit dynamischenFenstertiteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
34.4 Beeinflussen von Namen mittels NameResolver . . . . . . . . . . . . . . 360
34.5 Klassen von Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . 361
34.5.1 Umgehen von Klassenänderungen durch ’Nur Systemklassenaufzeichnen’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
34.6 Nicht notwendige Aufzeichnungen ersparen oder generische Kompo-nenten einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
34.7 Optionen zur Laufzeit verändern . . . . . . . . . . . . . . . . . . . . . . 364
35 Aufsetzen von Testsystemen 365
35.1 Einrichten von Prozessen und Services via Aufgabenplaner . . . . . . . 365
35.2 Fernzugriff auf Windowsrechner . . . . . . . . . . . . . . . . . . . . . . . 366
35.3 Automatische Anmeldung auf Windowsrechnern . . . . . . . . . . . . . . 367
35.4 Testausführung unter Unix . . . . . . . . . . . . . . . . . . . . . . . . . . 368
36 Testausführung 369
36.1 Abhängigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
36.2 Wartezeiten und Verzögerungen . . . . . . . . . . . . . . . . . . . . . . . 370
36.3 Was soll man tun, wenn das Protokoll einen Fehler enthält? . . . . . . . 370
-
INHALTSVERZEICHNIS xvi
III Referenzteil 372
37 Einstellungen 373
37.1 Allgemeine Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
37.1.1 Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
37.1.2 Editieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
37.1.3 Lesezeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
37.1.4 Externe Programme . . . . . . . . . . . . . . . . . . . . . . . . . 383
37.1.5 Sicherungskopien . . . . . . . . . . . . . . . . . . . . . . . . . . 386
37.1.6 Bibliothekspfad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
37.1.7 Lizenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
37.1.8 Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
37.2 Aufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
37.2.1 Folgende Events aufnehmen . . . . . . . . . . . . . . . . . . . . 393
37.2.2 Eventsequenzen packen . . . . . . . . . . . . . . . . . . . . . . . 395
37.2.3 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
37.2.4 Unterelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
37.2.5 Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
37.3 Wiedergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
37.3.1 Client Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
37.3.2 Terminal Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . 414
37.3.3 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
37.3.4 Wiedererkennung . . . . . . . . . . . . . . . . . . . . . . . . . . 422
37.3.5 Verzögerungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
37.3.6 Automatische Timeouts . . . . . . . . . . . . . . . . . . . . . . . 429
37.3.7 Rückwärtskompatibilität . . . . . . . . . . . . . . . . . . . . . . . 433
37.4 Web Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
37.4.1 HTTP Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
37.4.2 Rückwärtskompatibilität . . . . . . . . . . . . . . . . . . . . . . . 440
37.5 SWT Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
37.6 Debugger Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
37.7 Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
-
INHALTSVERZEICHNIS xvii
37.7.1 Allgemeine Protokoll Optionen . . . . . . . . . . . . . . . . . . . 444
37.7.2 Optionen für den Inhalt von Protokollen . . . . . . . . . . . . . . 449
37.7.3 Optionen für Verweise zwischen Verzeichnissen mit Testsuiten . 454
37.8 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
37.9 Nur zur Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
38 Bestandteile einer Testsuite 457
38.1 Die Testsuite und ihre Struktur . . . . . . . . . . . . . . . . . . . . . . . . 457
38.1.1 Testsuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
38.2 Test und Sequenz Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . 460
38.2.1 Testfall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
38.2.2 Testfallsatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
38.2.3 Testaufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
38.2.4 Sequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
38.2.5 Testschritt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
38.2.6 Sequenz mit Zeitlimit . . . . . . . . . . . . . . . . . . . . . . . . . 486
38.2.7 Extrasequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
38.3 Abhängigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
38.3.1 Abhängigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
38.3.2 Bezug auf Abhängigkeit . . . . . . . . . . . . . . . . . . . . . . . . 495
38.3.3 Vorbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
38.3.4 Aufräumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
38.3.5 Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
38.4 Datentreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
38.4.1 Datentreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
38.4.2 Datentabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
38.4.3 Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
38.4.4 Excel Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
38.4.5 CSV Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
38.4.6 Datenschleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
38.5 Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
38.5.1 Prozedur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
-
INHALTSVERZEICHNIS xviii
38.5.2 Prozeduraufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
38.5.3 Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
38.5.4 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
38.5.5 Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
38.6 Ablaufsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
38.6.1 Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
38.6.2 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
38.6.3 Break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
38.6.4 If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
38.6.5 Elseif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
38.6.6 Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
38.6.7 Try . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
38.6.8 Catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
38.6.9 Finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
38.6.10 Throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
38.6.11 Rethrow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
38.6.12 Server Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
38.6.13 SUT Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
38.7 Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
38.7.1 Java SUT Client starten . . . . . . . . . . . . . . . . . . . . . . . . 580
38.7.2 SUT Client starten . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
38.7.3 Programm starten . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
38.7.4 Web-Engine starten . . . . . . . . . . . . . . . . . . . . . . . . . . 590
38.7.5 Browser-Fenster öffnen . . . . . . . . . . . . . . . . . . . . . . . . 595
38.7.6 Shellkommando ausführen . . . . . . . . . . . . . . . . . . . . . . . 597
38.7.7 PDF Client starten . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
38.7.8 Windows Anwendung starten . . . . . . . . . . . . . . . . . . . . . 602
38.7.9 Windows Anwendung verbinden . . . . . . . . . . . . . . . . . . . . 606
38.7.10 Warten auf Client . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
38.7.11 Programm beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
38.7.12 Warten auf Programmende . . . . . . . . . . . . . . . . . . . . . . . 613
-
INHALTSVERZEICHNIS xix
38.8 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
38.8.1 Mausevent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
38.8.2 Tastaturevent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
38.8.3 Texteingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
38.8.4 Fensterevent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
38.8.5 Komponentenevent . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
38.8.6 Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
38.8.7 Dateiauswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
38.9 Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
38.9.1 Check Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
38.9.2 Check Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
38.9.3 Check Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
38.9.4 Check selektierbare Elemente . . . . . . . . . . . . . . . . . . . . . 659
38.9.5 Check Abbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
38.9.6 Check Geometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
38.10 Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
38.10.1 Text auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
38.10.2 Index auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
38.10.3 Geometrie auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
38.11 Verschiedenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
38.11.1 Kommentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
38.11.2 Variable setzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
38.11.3 Warten auf Komponente . . . . . . . . . . . . . . . . . . . . . . . . 690
38.11.4 Warten auf Laden des Dokuments . . . . . . . . . . . . . . . . . . . 694
38.11.5 Warten auf Ende des Downloads . . . . . . . . . . . . . . . . . . . . 698
38.11.6 Ressourcen laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
38.11.7 Properties laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
38.11.8 Unit Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
38.12 HTTP Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
38.12.1 Server HTTP Request . . . . . . . . . . . . . . . . . . . . . . . . . 714
38.12.2 Browser HTTP Request . . . . . . . . . . . . . . . . . . . . . . . . 719
-
INHALTSVERZEICHNIS xx
38.13 Fenster, Komponenten und Elemente . . . . . . . . . . . . . . . . . . . . 722
38.13.1 Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
38.13.2 Webseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
38.13.3 Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
38.13.4 Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
38.13.5 Fenstergruppe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
38.13.6 Komponentengruppe . . . . . . . . . . . . . . . . . . . . . . . . . . 743
38.13.7 Fenster und Komponenten . . . . . . . . . . . . . . . . . . . . . . . 745
38.14 Historische Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
38.14.1 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
39 Exceptions 752
IV Technische Referenz 760
40 Kommandozeilenargumente und Rückgabewerte 761
40.1 Aufrufsyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
40.2 Kommandozeilenargumente . . . . . . . . . . . . . . . . . . . . . . . . . 766
40.2.1 Argumente für das Startskript . . . . . . . . . . . . . . . . . . . . 766
40.2.2 Argumente für die Java VM . . . . . . . . . . . . . . . . . . . . . 767
40.2.3 Argumente für QF-Test . . . . . . . . . . . . . . . . . . . . . . . . 767
40.2.4 Platzhalter im Dateinamen für Protokoll und Report . . . . . . . . 783
40.3 Rückgabewerte von QF-Test . . . . . . . . . . . . . . . . . . . . . . . . . 784
41 GUI Engines 786
42 Starten einer Applikation aus QF-Test 788
42.1 Verschiedene Methoden zum Starten des SUT . . . . . . . . . . . . . . . 788
42.1.1 Starten des SUT aus einem Skript oder ausführbaren Programm 789
42.1.2 Starten des SUT mittels Java WebStart . . . . . . . . . . . . . . 790
42.1.3 Starten des SUT als Applet in einem Web Browser . . . . . . . . 791
42.1.4 Starten des SUT mittels java -jar . . . . . . . . 794
-
INHALTSVERZEICHNIS xxi
42.1.5 Starten des SUT mittels java -classpath . . . . . . . . . . . . . . . . . . . . . . . . . . 796
42.1.6 Starten einer Webanwendung im Browser . . . . . . . . . . . . 797
42.1.7 Öffnen eines PDF Dokuments . . . . . . . . . . . . . . . . . . . . 799
43 JRE und SWT Instrumentierung 801
43.1 Deinstrumentieren eines JRE . . . . . . . . . . . . . . . . . . . . . . . . 801
43.2 SWT Instrumentierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
43.2.1 Vorbereitung einer manuellen SWT Instrumentierung . . . . . . . 803
43.2.2 Manuelle SWT Instrumentierung für Eclipse basierte Anwendun-gen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
43.2.3 Manuelle Instrumentierung für eigenständige SWT Anwendungen 804
44 Technische Details zu verschiedenen Themen 805
44.1 Drag&Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
44.2 Wiedererkennung von Komponenten . . . . . . . . . . . . . . . . . . . . 806
44.3 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
44.4 Reguläre Ausdrücke - Regexps . . . . . . . . . . . . . . . . . . . . . . . 809
44.5 Zeilenumbrüche in Unix und Windows . . . . . . . . . . . . . . . . . . . . 811
44.6 Schützen von Sonderzeichen (quoting) . . . . . . . . . . . . . . . . . . . 811
44.7 Auflösen von Include Dateien . . . . . . . . . . . . . . . . . . . . . . . . 812
45 Skripting (Jython, Groovy und JavaScript) 815
45.1 Pfad für das Laden der Module . . . . . . . . . . . . . . . . . . . . . . . 815
45.2 Das Plugin Verzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
45.3 Initialisierung (Jython) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
45.4 Die Namespace Umgebung für Skript Knoten (Jython) . . . . . . . . . . 817
45.5 Das API des Runcontexts . . . . . . . . . . . . . . . . . . . . . . . . . . 817
45.6 Das qf Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
45.7 Image API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
45.7.1 Die ImageWrapper Klasse . . . . . . . . . . . . . . . . . . . . . 841
45.8 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
45.9 Debuggen von Skripten (Jython) . . . . . . . . . . . . . . . . . . . . . . . 844
-
INHALTSVERZEICHNIS xxii
46 Web 845
46.1 Verbesserte Komponentenerkennung mittels CustomWebResolver . . 845
46.1.1 Generelle Konfigurationsmöglichkeiten . . . . . . . . . . . . . . . 846
46.1.2 Untersuchung einer Webseite . . . . . . . . . . . . . . . . . . . . 849
46.1.3 Die Prozedur installCustomWebResolver . . . . . . . . . . 851
46.1.4 installCustomWebResolver - Erweiterung einesWebframework-Resolvers . . . . . . . . . . . . . . . . . . . . . . 861
46.1.5 installCustomWebResolver - Tabelle und TreeTable . . . . . 862
46.1.6 installCustomWebResolver - Baum und TreeTable . . . . . 864
46.1.7 installCustomWebResolver - Liste . . . . . . . . . . . . . . 866
46.1.8 installCustomWebResolver - Combobox . . . . . . . . . . . 868
46.1.9 installCustomWebResolver - TabPanel und Accordion . . . 870
46.1.10 Beispiel für den WebCarConfigurator . . . . . . . . . . . . . . . . 872
46.2 Besondere Unterstützung für verschiedene Webframeworks . . . . . . . 885
46.2.1 Konzepte für Webframework-Resolver . . . . . . . . . . . . . . . 887
46.2.2 Eindeutige Bezeichner setzen . . . . . . . . . . . . . . . . . . . . 888
46.3 Browser Verbindungsmodus . . . . . . . . . . . . . . . . . . . . . . . . . 891
46.3.1 QF-Driver Verbindungsmodus . . . . . . . . . . . . . . . . . . . . 892
46.3.2 CDP-Driver Verbindungsmodus . . . . . . . . . . . . . . . . . . . 893
46.3.3 WebDriver Verbindungsmodus . . . . . . . . . . . . . . . . . . . 893
46.3.4 Bekannte Einschränkungen des WebDriver Modus . . . . . . . . 893
46.4 Microsoft Edge (bis Version 44) - Besonderheiten . . . . . . . . . . . . . 894
46.5 Safari - Besonderheiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
47 Steuern und Testen von nativen Windows Anwendungen - ohne Verwen-dung der QF-Test win Engine 896
47.1 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
47.1.1 Start der Anwendung . . . . . . . . . . . . . . . . . . . . . . . . 899
47.1.2 Auflistung aller GUI-Elemente eines Fensters . . . . . . . . . . . 899
47.1.3 Informationen zu einzelnen GUI-Elementen . . . . . . . . . . . . 899
47.1.4 Zugriff auf GUI Elemente . . . . . . . . . . . . . . . . . . . . . . 900
47.1.5 Ausführen von Aktionen auf GUI-Elementen . . . . . . . . . . . . 901
-
INHALTSVERZEICHNIS xxiii
47.2 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
47.2.1 Start der Anwendung . . . . . . . . . . . . . . . . . . . . . . . . 903
47.2.2 Übersicht über die GUI-Elemente der Anwendung . . . . . . . . 904
48 Steuern und Testen von nativen MacOS-Anwendungen 907
48.1 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
48.1.1 Start der Anwendung . . . . . . . . . . . . . . . . . . . . . . . . 908
48.1.2 Auflistung aller GUI-Elemente eines Fensters . . . . . . . . . . . 909
48.1.3 Informationen zu einzelnen GUI-Elementen . . . . . . . . . . . . 909
48.1.4 Zugriff auf GUI Elemente . . . . . . . . . . . . . . . . . . . . . . 910
48.1.5 Ausführen von Aktionen auf GUI-Elementen . . . . . . . . . . . . 911
49 APIs für Erweiterungen 914
49.1 Das resolvers Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
49.1.1 Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
49.1.2 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
49.1.3 addResolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
49.1.4 removeResolver . . . . . . . . . . . . . . . . . . . . . . . . . . 921
49.1.5 listNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
49.1.6 Das NameResolver Interface . . . . . . . . . . . . . . . . . . . 922
49.1.7 Das ClassNameResolver Interface . . . . . . . . . . . . . . . 924
49.1.8 Das GenericClassNameResolver Interface . . . . . . . . . . 926
49.1.9 Das FeatureResolver Interface . . . . . . . . . . . . . . . . . 926
49.1.10 Das ExtraFeatureResolver Interface . . . . . . . . . . . . . 927
49.1.11 Das ItemNameResolver Interface . . . . . . . . . . . . . . . . 932
49.1.12 Das ItemValueResolver Interface . . . . . . . . . . . . . . . 933
49.1.13 Das TreeTableResolver Interface . . . . . . . . . . . . . . . . 934
49.1.14 Das InterestingParentResolver Interface . . . . . . . . . 936
49.1.15 Das TooltipResolver Interface . . . . . . . . . . . . . . . . . 937
49.1.16 Das IdResolver Interface . . . . . . . . . . . . . . . . . . . . . 937
49.1.17 Das EnabledResolver Interface . . . . . . . . . . . . . . . . . 939
49.1.18 Das VisibilityResolver Interface . . . . . . . . . . . . . . 940
-
INHALTSVERZEICHNIS xxiv
49.1.19 Das MainTextResolver Interface . . . . . . . . . . . . . . . . 941
49.1.20 Der BusyPaneResolver Interfaces . . . . . . . . . . . . . . . . 942
49.1.21 Der GlassPaneResolver Interfaces . . . . . . . . . . . . . . . 942
49.1.22 Das EventSynchronizer Interface . . . . . . . . . . . . . . . 943
49.1.23 Das BusyApplicationDetector Interface . . . . . . . . . . . 944
49.1.24Matcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944
49.1.25 Externe Implementierung . . . . . . . . . . . . . . . . . . . . . . 946
49.2 Das webResolvers-Modul . . . . . . . . . . . . . . . . . . . . . . . . . 946
49.2.1 Allgemeine Informationen . . . . . . . . . . . . . . . . . . . . . . 947
49.2.2 addResolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
49.2.3 removeResolver . . . . . . . . . . . . . . . . . . . . . . . . . . 949
49.2.4 listNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949
49.2.5 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
49.3 Die ResolverRegistry . . . . . . . . . . . . . . . . . . . . . . . . . . 954
49.4 Implementierung eigener Unterelemente mit dem ItemResolver In-terface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
49.4.1 ItemResolver Konzepte . . . . . . . . . . . . . . . . . . . . . . 961
49.4.2 Das ItemResolver Interface . . . . . . . . . . . . . . . . . . . 962
49.4.3 Die Klasse SubItemIndex . . . . . . . . . . . . . . . . . . . . . 966
49.4.4 Die ItemRegistry . . . . . . . . . . . . . . . . . . . . . . . . . 968
49.4.5 Standard Repräsentation von Unterelementen . . . . . . . . . . 970
49.5 Implementierung eigener Checks mit dem Checker Interface . . . . . . 972
49.5.1 Das Checker Interface . . . . . . . . . . . . . . . . . . . . . . . 973
49.5.2 Die Pair Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . 975
49.5.3 Das CheckType Interface und seine ImplementierungDefaultCheckType . . . . . . . . . . . . . . . . . . . . . . . . 975
49.5.4 Die Klasse CheckDataType . . . . . . . . . . . . . . . . . . . . 976
49.5.5 Die Klasse CheckData und ihre Unterklassen . . . . . . . . . . 977
49.5.6 Die CheckerRegistry . . . . . . . . . . . . . . . . . . . . . . . 979
49.5.7 Beispiel für einen Checker . . . . . . . . . . . . . . . . . . . . . . 980
49.6 Das Eclipse Graphical Editing Framework (GEF) . . . . . . . . . . . . . 982
49.6.1 Aufnahme von GEF Elementen . . . . . . . . . . . . . . . . . . . 982
-
INHALTSVERZEICHNIS xxv
49.6.2 Implementierung eines ItemNameResolver2 für GEF . . . . . . . 984
49.6.3 Implementierung eines ItemValueResolver2 für GEF . . . . . . . 986
49.7 Listener für den aktuellen Testlauf . . . . . . . . . . . . . . . . . . . . . . 987
49.7.1 Das TestRunListener Interface . . . . . . . . . . . . . . . . . 987
49.7.2 Die Klasse TestRunEvent . . . . . . . . . . . . . . . . . . . . . 988
49.7.3 Die Klasse TestSuiteNode . . . . . . . . . . . . . . . . . . . . 990
49.8 ResetListener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
49.9 DOM Prozessoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
49.9.1 Das DOMProcessor Interface . . . . . . . . . . . . . . . . . . . 994
49.9.2 Die DOMProcessorRegistry . . . . . . . . . . . . . . . . . . . 995
49.9.3 Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . 996
49.10 Image API Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . 996
49.10.1 Die ImageRep Klasse . . . . . . . . . . . . . . . . . . . . . . . . 996
49.10.2 Das ImageComparator Interface . . . . . . . . . . . . . . . . . 999
49.11 Pseudo DOM API für Webanwendungen . . . . . . . . . . . . . . . . . . 999
49.11.1 Die abstrakte Klasse Node . . . . . . . . . . . . . . . . . . . . . 1000
49.11.2 Die Klasse DocumentNode . . . . . . . . . . . . . . . . . . . . . 1006
49.11.3 Die Klasse FrameNode . . . . . . . . . . . . . . . . . . . . . . . 1008
49.11.4 Die Klasse DomNode . . . . . . . . . . . . . . . . . . . . . . . . . 1009
49.11.5 Die Klasse DialogNode . . . . . . . . . . . . . . . . . . . . . . 1011
49.12 WebDriverConnection SUT API . . . . . . . . . . . . . . . . . . . . . . . 1012
49.12.1 Die WebDriverConnection Klasse . . . . . . . . . . . . . . . 1013
49.13 Windows Control API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014
49.13.1 Die WinControl Klasse . . . . . . . . . . . . . . . . . . . . . . 1014
50 Daemon Modus 1019
50.1 Daemon Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019
50.2 Daemon API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020
50.2.1 Der DaemonLocator . . . . . . . . . . . . . . . . . . . . . . . . 1021
50.2.2 Der Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022
50.2.3 Der TestRunDaemon . . . . . . . . . . . . . . . . . . . . . . . . 1024
50.2.4 Der DaemonRunContext . . . . . . . . . . . . . . . . . . . . . . 1027
-
INHALTSVERZEICHNIS xxvi
50.2.5 Der DaemonTestRunListener . . . . . . . . . . . . . . . . . . 1034
50.3 Absicherung des QF-Test Daemon . . . . . . . . . . . . . . . . . . . . . 1035
50.3.1 Erstellen einer eigenen Keystore-Datei . . . . . . . . . . . . . . . 1036
50.3.2 Festlegen der Keystore-Datei . . . . . . . . . . . . . . . . . . . . 1036
50.3.3 Festlegen der Keystore-Datei auf der Client-Seite . . . . . . . . . 1037
51 Die Procedure Builder Definitionsdatei 1038
51.1 Platzhalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
51.1.1 Rückgriffswerte für Platzhalter . . . . . . . . . . . . . . . . . . . 1040
51.2 Spezielle Bedingungen für die Definition von Packages und Prozeduren . 1041
51.3 Auswertung der Komponentenhierarchie . . . . . . . . . . . . . . . . . . 1042
51.4 Details zu @CONDITION . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043
52 Der ManualStepDialog 1045
52.1 Die ManualStepDialog API . . . . . . . . . . . . . . . . . . . . . . . . . . 1045
53 Details zu Knotenkonvertierungen 1047
53.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
53.2 Konvertierungen mit Typwechseln . . . . . . . . . . . . . . . . . . . . . . 1047
53.3 Zusätzliche Konvertierungen unter Extrasequenzen . . . . . . . . . . . . . 1048
53.3.1 Konvertierungen ohne Seiteneffekte . . . . . . . . . . . . . . . . 1048
53.3.2 Konvertierungen mit Seiteneffekten . . . . . . . . . . . . . . . . . 1048
54 Details des Algorithmus zum Bildvergleich 1050
54.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
54.2 Beschreibung der Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . 1051
54.2.1 Klassischer Bildvergleich . . . . . . . . . . . . . . . . . . . . . . 1051
54.2.2 Pixelbasierter Vergleich . . . . . . . . . . . . . . . . . . . . . . . 1052
54.2.3 Pixelbasierte Ähnlichkeitsanalyse . . . . . . . . . . . . . . . . . . 1053
54.2.4 Blockbildung mit Vergleich . . . . . . . . . . . . . . . . . . . . . . 1055
54.2.5 Blockbildung mit Ähnlichkeitsanalyse . . . . . . . . . . . . . . . . 1056
54.2.6 Häufigkeitsanalyse mittels Histogramm . . . . . . . . . . . . . . . 1057
54.2.7 Bildanalyse mittels Diskreter Kosinustransformation . . . . . . . 1059
-
INHALTSVERZEICHNIS xxvii
54.2.8 Blockbildung zur Bildanalyse mittels Diskreter Kosinustransfor-mation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060
54.2.9 Bilinearer Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062
54.3 Beschreibung der speziellen Funktionen . . . . . . . . . . . . . . . . . . 1064
54.3.1 Bild-in-Bild Suche . . . . . . . . . . . . . . . . . . . . . . . . . . 1064
55 Resultatslisten 1066
55.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066
55.2 Spezielle Listenaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068
55.2.1 Alle Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068
55.2.2 Ersetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069
55.2.3 Fehlerliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069
55.3 Resultate exportieren und laden . . . . . . . . . . . . . . . . . . . . . . . 1069
56 Generische Klassen 1070
56.1 Übersicht der generischen Klassen . . . . . . . . . . . . . . . . . . . . . 1071
56.2 Eigenschaften von generischen Klassen . . . . . . . . . . . . . . . . . . 1076
56.2.1 Accordion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076
56.2.2 BusyPane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077
56.2.3 Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077
56.2.4 Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078
56.2.5 ColorPicker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078
56.2.6 CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078
56.2.7 Closer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079
56.2.8 ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079
56.2.9 Divider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080
56.2.10 Expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080
56.2.11 FileChooser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080
56.2.12 Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081
56.2.13 Icon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081
56.2.14 Indicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082
56.2.15 Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082
56.2.16 Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083
-
INHALTSVERZEICHNIS xxviii
56.2.17 Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083
56.2.18 List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084
56.2.19 LoadingComponent . . . . . . . . . . . . . . . . . . . . . . . . . 1085
56.2.20 Maximizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085
56.2.21 Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085
56.2.22 MenuItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
56.2.23 Minimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
56.2.24 Popup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
56.2.25 RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087
56.2.26 Restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088
56.2.27 Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088
56.2.28 ProgressBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
56.2.29 ScrollBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090
56.2.30 Separator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090
56.2.31 Sizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090
56.2.32 Slider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091
56.2.33 Spacer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091
56.2.34 Spinner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091
56.2.35 SplitPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092
56.2.36 Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092
56.2.37 TableCell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093
56.2.38 TableFooter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094
56.2.39 TableHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094
56.2.40 TableHeaderCell . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094
56.2.41 TabPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095
56.2.42 TableRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095
56.2.43 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096
56.2.44 TextArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096
56.2.45 TextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096
56.2.46 Thumb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097
56.2.47 ToggleButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097
-
INHALTSVERZEICHNIS xxix
56.2.48 ToolBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
56.2.49 ToolBarItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
56.2.50 ToolTip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
56.2.51 Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099
56.2.52 TreeNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099
56.2.53 TreeTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100
56.2.54 Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100
57 Doctags 1102
57.1 Doctags für Reporting und Dokumentation . . . . . . . . . . . . . . . . . 1102
57.1.1 @noreport Doctag . . . . . . . . . . . . . . . . . . . . . . . . . . 1103
57.2 Doctags für die Ausführung . . . . . . . . . . . . . . . . . . . . . . . . . . 1104
57.3 Doctags für das Editieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104
57.4 Doctags für den Prozedurgenerator . . . . . . . . . . . . . . . . . . . . . 1104
A FAQ - Häufig gestellte Fragen 1106
B Release Notes 1116
B.1 QF-Test Version 5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116
B.1.1 Änderungen mit möglichen Auswirkungen auf die Testausführung 1116
B.1.2 Version 5.3.0 - 20. Mai 2021 . . . . . . . . . . . . . . . . . . . . . 1117
B.2 QF-Test Version 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119
B.2.1 Version 5.2.3 - 9. März 2021 . . . . . . . . . . . . . . . . . . . . 1119
B.2.2 Version 5.2.2 - 12. Februar 2021 . . . . . . . . . . . . . . . . . . 1120
B.2.3 Version 5.2.1 - 3. Dezember 2020 . . . . . . . . . . . . . . . . . 1121
B.2.4 Änderungen mit möglichen Auswirkungen auf die Testausführung 1121
B.2.5 Version 5.2.0 - 10. November 2020 . . . . . . . . . . . . . . . . . 1122
B.3 QF-Test Version 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
B.3.1 Version 5.1.2 - 15. September 2020 . . . . . . . . . . . . . . . . 1124
B.3.2 Version 5.1.1 - 26. August 2020 . . . . . . . . . . . . . . . . . . 1125
B.3.3 Änderungen mit möglichen Auswirkungen auf die Testausführung 1126
B.3.4 Version 5.1.0 - 8. Juli 2020 . . . . . . . . . . . . . . . . . . . . . 1127
B.4 QF-Test Version 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128
-
INHALTSVERZEICHNIS xxx
B.4.1 Version 5.0.3 - 17. Juni 2020 . . . . . . . . . . . . . . . . . . . . 1128
B.4.2 Version 5.0.2 - 5. Mai 2020 . . . . . . . . . . . . . . . . . . . . . 1129
B.4.3 Version 5.0.1 - 2. März 2020 . . . . . . . . . . . . . . . . . . . . 1130
B.4.4 Wesentliche neue Features in Version 5 . . . . . . . . . . . . . . 1130
B.4.5 Version 5.0.0 - 6. Februar 2020 . . . . . . . . . . . . . . . . . . 1131
B.5 QF-Test Version 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133
B.5.1 QF-Test Version 4.7 . . . . . . . . . . . . . . . . . . . . . . . . . 1133
B.5.2 QF-Test Version 4.6 . . . . . . . . . . . . . . . . . . . . . . . . . 1136
B.5.3 QF-Test Version 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . 1139
B.5.4 QF-Test Version 4.4 . . . . . . . . . . . . . . . . . . . . . . . . . 1145
B.5.5 QF-Test Version 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . 1147
B.5.6 QF-Test Version 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . 1150
B.5.7 QF-Test Version 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . 1160
B.5.8 QF-Test Version 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . 1180
B.6 QF-Test Version 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209
B.7 Version 3.5.7 - 22. Juli 2014 . . . . . . . . . . . . . . . . . . . . . . . . . 1209
B.8 Version 3.5.6 - 29. April 2014 . . . . . . . . . . . . . . . . . . . . . . . . . 1210
B.9 Version 3.5.5 - 25. Februar 2014 . . . . . . . . . . . . . . . . . . . . . . . 1211
B.10 Version 3.5.4 - 11. Dezember 2013 . . . . . . . . . . . . . . . . . . . . . 1212
B.11 Version 3.5.3 - 11. Dezember 2013 - 17. September 2013 . . . . . . . . 1213
B.12 Version 3.5.2 - 2. Juli 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . 1214
B.13 Version 3.5.1 - 15. Mai 2013 . . . . . . . . . . . . . . . . . . . . . . . . . 1215
B.14 Wesentliche neue Features in Version 3.5 . . . . . . . . . . . . . . . . . 1216
B.15 Version 3.5.0 - 20. März 2013 . . . . . . . . . . . . . . . . . . . . . . . . 1217
B.16 Version 3.5M3 - 8. Januar 2013 . . . . . . . . . . . . . . . . . . . . . . . 1220
B.17 Version 3.5M2 - 16. November 2012 . . . . . . . . . . . . . . . . . . . . . 1221
B.18 Version 3.5M1 - 4. Oktober 2012 . . . . . . . . . . . . . . . . . . . . . . . 1222
B.19 Version 3.4.14 - 20. März 2013 . . . . . . . . . . . . . . . . . . . . . . . . 1227
B.20 Version 3.4.13 - 8. Januar 2013 . . . . . . . . . . . . . . . . . . . . . . . 1228
B.21 Version 3.4.12 - 16. November 2012 . . . . . . . . . . . . . . . . . . . . . 1228
B.22 Version 3.4.11 - 4. Oktober 2012 . . . . . . . . . . . . . . . . . . . . . . . 1229
-
INHALTSVERZEICHNIS xxxi
B.23 Version 3.4.10 - 7. August 2012 . . . . . . . . . . . . . . . . . . . . . . . 1230
B.24 Version 3.4.9 - 29. Juni 2012 . . . . . . . . . . . . . . . . . . . . . . . . . 1231
B.25 Version 3.4.8 - 5. Juni 2012 . . . . . . . . . . . . . . . . . . . . . . . . . . 1231
B.26 Version 3.4.7 - 24. April 2012 . . . . . . . . . . . . . . . . . . . . . . . . . 1232
B.27 Version 3.4.6 - 27. März 2012 . . . . . . . . . . . . . . . . . . . . . . . . 1233
B.28 Version 3.4.5 - 12. März 2012 . . . . . . . . . . . . . . . . . . . . . . . . 1233
B.29 Version 3.4.4 - 30. Januar 2012 . . . . . . . . . . . . . . . . . . . . . . . 1234
B.30 Version 3.4.3 - 27. Oktober 2011 . . . . . . . . . . . . . . . . . . . . . . . 1236
B.31 Version 3.4.2 - 15. September 2011 . . . . . . . . . . . . . . . . . . . . . 1237
B.32 Version 3.4.1 - 15. Juli 2011 . . . . . . . . . . . . . . . . . . . . . . . . . 1238
B.33 Wesentliche neue Features in Version 3.4 . . . . . . . . . . . . . . . . . 1240
B.34 Version 3.4.0 - 26. Mai 2011 . . . . . . . . . . . . . . . . . . . . . . . . . 1241
B.35 Version 3.4M2 - 10. März 2011 . . . . . . . . . . . . . . . . . . . . . . . . 1244
B.36 Version 3.4M1 - 3. Februar 2011 . . . . . . . . . . . . . . . . . . . . . . . 1246
B.37 Version 3.3.0 - 30. November 2010 . . . . . . . . . . . . . . . . . . . . . 1248
B.38 Version 3.2.2 - 15. Juli 2010 . . . . . . . . . . . . . . . . . . . . . . . . . 1251
B.39 Version 3.2.1 - 11. Mai 2010 . . . . . . . . . . . . . . . . . . . . . . . . . 1252
B.40 Neue Features in QF-Test Version 3.2 . . . . . . . . . . . . . . . . . . . . 1252
B.41 Version 3.2.0 - 25. März 2010 . . . . . . . . . . . . . . . . . . . . . . . . 1253
B.42 Version 3.1.4 - 9. Februar 2010 . . . . . . . . . . . . . . . . . . . . . . . 1255
B.43 Version 3.1.3 - 1. Dezember 2009 . . . . . . . . . . . . . . . . . . . . . . 1256
B.44 Version 3.1.2 - 15. Oktober 2009 . . . . . . . . . . . . . . . . . . . . . . . 1258
B.45 Version 3.1.1 - 28. Juli 2009 . . . . . . . . . . . . . . . . . . . . . . . . . 1260
B.46 Version 3.1.0 - 19. Mai 2009 . . . . . . . . . . . . . . . . . . . . . . . . . 1262
B.47 Version 3.0.2 - 27. März 2009 . . . . . . . . . . . . . . . . . . . . . . . . 1265
B.48 Version 3.0.1 - 23. Januar 2009 . . . . . . . . . . . . . . . . . . . . . . . 1266
B.49 Neue Features in QF-Test Version 3 - 5. Dezember 2008 . . . . . . . . . 1267
C Tastaturkürzel 1269
C.1 Navigation und Editieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
C.2 Aufnahme- und Wiedergabefunktionen . . . . . . . . . . . . . . . . . . . 1272
C.3 Tastaturhelfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
-
INHALTSVERZEICHNIS xxxii
D Glossar 1275
E Datenschutz - Verarbeitung von personenbezogenen und anderen Daten 1276
E.1 Server-Daten für Versionsabfrage . . . . . . . . . . . . . . . . . . . . . . 1276
E.2 Direkter Versand von Support-Anfragen aus QF-Test heraus . . . . . . . 1277
E.3 Anfragedaten beim Abruf von WebDriver-Dateien . . . . . . . . . . . . . 1278
E.4 Client-Daten in QF-Test Protokolldateien . . . . . . . . . . . . . . . . . . 1279
F Benutzte Software 1281
-
xxxiii
Abbildungsverzeichnis
2.1 Struktur einer Testsuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Einfügemarkierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Beispieltabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Der Dialog für die einfache Suche . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Der fortgeschrittene Suchdialog . . . . . . . . . . . . . . . . . . . . . . . 23
2.6 Resultatsliste von ’Referenzen finden’ . . . . . . . . . . . . . . . . . . . . 25
2.7 Die inkrementelle Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8 Der Ersetzen Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.9 Der Rückfrage Dialog beim Ersetzen . . . . . . . . . . . . . . . . . . . . 28
3.1 Der Schnellstart-Assistent . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2 Startsequenz als Resultat des Schnellstart-Assistenten . . . . . . . . . . 32
3.3 Information zu genutzten GUI-Technologien . . . . . . . . . . . . . . . . 36
4.1 Gesperrter und aktivierbarer Aufnahmeknopf . . . . . . . . . . . . . . . . 37
5.1 Komponenten eines GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2 Komponentenhierarchie eines Swing SUT . . . . . . . . . . . . . . . . . 48
5.3 Pseudo Klassenhierarchie für Elemente von Webanwendungen . . . . . 51
5.4 Komponenten aktualisieren Dialog . . . . . . . . . . . . . . . . . . . . . . 57
6.1 Ein Element für ein Tabellenfeld . . . . . . . . . . . . . . . . . . . . . . . . 63
6.2 Extra Feature Attribute für die Komponentenerkennung anhand vonXPath oder CSS-Selektoren. . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.1 Direkte Zuordnungen und Defaultwerte . . . . . . . . . . . . . . . . . . . 70
-
ABBILDUNGSVERZEICHNIS xxxiv
7.2 System Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.3 Variablen Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.4 Beispiel zu Variablenbindungen . . . . . . . . . . . . . . . . . . . . . . . 73
8.1 Ein einfacher Test und sein Protokoll . . . . . . . . . . . . . . . . . . . . 83
8.2 Fehlerzustände im Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . 85
9.1 Struktur einer Testsuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.2 Teststruktur mit einfacher Vorbereitung und Aufräumen . . . . . . . . . . . 100
9.3 Ausführungsreihenfolge bei einfacher Vorbereitung und Aufräumen . . . 101
9.4 Packages und Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
9.5 Stapel von Abhängigkeiten A-B-C . . . . . . . . . . . . . . . . . . . . . . 109
9.6 Typischer Vorbereitung Knoten . . . . . . . . . . . . . . . . . . . . . . . . 110
9.7 Stapel von Abhängigkeiten A-B-D-E . . . . . . . . . . . . . . . . . . . . . 111
9.8 Charakteristische Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.9 Fehlereskalation in Abhängigkeiten . . . . . . . . . . . . . . . . . . . . . . 116
9.10 Typischer Aufräumen Knoten . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.11 Beispiel Testfallsatz für Namensräume . . . . . . . . . . . . . . . . . . . . 119
9.12 Abhängigkeitenbehandlung für Testfall Datenerfassung durch Anwender A119
9.13 Abhängigkeitenbehandlung für Testfall Angebotserstellung durchAnwender C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
9.14 Abhängigkeitenbehandlung für Testfall Angebot 1 im Archiv prüfen . . . . 120
9.15 Abhängigkeitenbehandlung für Testfall Datenerfassung durch Anwender B120
9.16 Abhängigkeitenbehandlung für Testfall Angebotserstellung durchAnwender D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.17 Abhängigkeitenbehandlung für Testfall Angebot 2 im Archiv prüfen . . . . 121
10.1 Die Projektansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
11.1 Standardbibliothek qfs.qft . . . . . . . . . . . . . . . . . . . . . . . . . 127
12.1 Detailansicht eines Server Skript Knotens mit Hilfefenster für rc-Methoden 130
12.2 Übersicht über die verschiedenen Variablen in QF-Test . . . . . . . . . . 134
13.1 Unit Test-Knoten mit Java-Klassen . . . . . . . . . . . . . . . . . . . . . . 157
-
ABBILDUNGSVERZEICHNIS xxxv
13.2 Beispiel eines Unit Test Knotens mit Injections . . . . . . . . . . . . . . . 162
13.3 Beispiel eines ’Unit Test’-Knotens mit WebDriver-Injections . . . . . . . . 164
13.4 Unit Test Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
14.1 Cross-Browser Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
16.1 PDF Client Hauptfenster mit geöffnetem PDF Dokument . . . . . . . . . 187
16.2 Check Text ’default’ Aufnahme . . . . . . . . . . . . . . . . . . . . . . . . 189
16.3 Check Text ’Text positioniert’ Aufnahme . . . . . . . . . . . . . . . . . . . 189
16.4 Check Elemente ’Text als Elemente (gesamte Seite)’ Aufnahme . . . . . 190
16.5 Check Elemente ’Text positioniert als Elemente (gesamte Seite)’ Auf-nahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
16.6 Check Text ’Text (gesamte Seite)’ Aufnahme . . . . . . . . . . . . . . . . 191
16.7 Check Text ’Text positioniert (gesamte Seite)’ Aufnahme . . . . . . . . . 192
16.8 Check Abbild ’default’ Aufnahme eines Text Objekts . . . . . . . . . . . . 193
16.9 Check Abbild ’default’ Aufnahme eines Image Objekts . . . . . . . . . . . 193
16.10 Check Abbild ’unskaliert’ Aufnahme eines Image Objekts . . . . . . . . . 193
16.11 Check Abbild ’skaliert’ Aufnahme eines Image Objekts . . . . . . . . . . 194
19.1 Die vom Browser abgesetzte HTTP GET Anfrage . . . . . . . . . . . . . 206
19.2 Die GET Antwort des Webservers . . . . . . . . . . . . . . . . . . . . . . 207
20.1 Ein einfacher datengetriebener Test . . . . . . . . . . . . . . . . . . . . . 209
20.2 Beispiel einer Datentabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
20.3 Protokoll eines datengetriebenen Tests . . . . . . . . . . . . . . . . . . . 211
20.4 Datengetriebene Tests mit verschachtelten Schleifen . . . . . . . . . . . 211
20.5 Zweites Beispiel einer Datentabelle . . . . . . . . . . . . . . . . . . . . . . 212
20.6 Protokoll eines datengetriebenen Tests mit verschachtelten Schleifen . . 213
21.1 Beispiel Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
22.1 Dialog zur Wiederausführung von Testfällen . . . . . . . . . . . . . . . . 241
23.1 Ergebnis einer Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
24.1 Aufgezeichnete Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . 257
-
ABBILDUNGSVERZEICHNIS xxxvi
24.2 Die Procedure Builder Definitionsdatei . . . . . . . . . . . . . . . . . . . 258
25.1 Integration mit ALM - Quality Center . . . . . . . . . . . . . . . . . . . . . 261
25.2 QF-Test VAPI-XP-TEST Testfall in HP ALM - Quality Center . . . . . . . 262
25.3 Im Testplan einen neuen Testfallsatz anlegen . . . . . . . . . . . . . . . . 263
25.4 Test vom Typ VAPI-XP-TEST anlegen . . . . . . . . . . . . . . . . . . . . 264
25.5 HP VAPI-XP Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
25.6 VAPI-XP-TEST Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
25.7 Template in Textbereich des Skripts kopieren . . . . . . . . . . . . . . . . 267
25.8 Neuer Testfallsatz im Testlabor . . . . . . . . . . . . . . . . . . . . . . . . 268
25.9 Test zu Ausführung hinzufügen . . . . . . . . . . . . . . . . . . . . . . . 269
25.10 Ausführung des Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
25.11 Testresultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
25.12 Hochgeladenes Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
25.13 Skript Debuglauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
25.14 QF-Test Protokoll in QMetry . . . . . . . . . . . . . . . . . . . . . . . . . 277
26.1 Eclipse Plugin Konfiguration - Reiter ”Main” . . . . . . . . . . . . . . . . . 286
26.2 Eclipse Plugin Konfiguration - Reiter ”Settings” . . . . . . . . . . . . . . . 287
26.3 Eclipse Plugin Konfiguration - Reiter ”Initial Settings” . . . . . . . . . . . 288
26.4 Jenkins nach dem Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
26.5 QF-Test Plugin installiert. . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
27.1 Exceldatei fachliche Schlüsselwörter . . . . . . . . . . . . . . . . . . . . 299
27.2 Testsuite fachliche Schlüsselwörter . . . . . . . . . . . . . . . . . . . . . 300
27.3 Prozedur fillDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
27.4 Exceldatei generische Komponenten . . . . . . . . . . . . . . . . . . . . 305
27.5 Testsuite generische Komponenten . . . . . . . . . . . . . . . . . . . . . 306
27.6 Testsuite Behavior-Driven Testing technisch . . . . . . . . . . . . . . . . 309
27.7 Testsuite Behavior-Driven Testing fachlich . . . . . . . . . . . . . . . . . 311
27.8 Exceldatei als Szenariodatei . . . . . . . . . . . . . . . . . . . . . . . . . 312
27.9 Testsuite Szenariodateien . . . . . . . . . . . . . . . . . . . . . . . . . . 313
-
ABBILDUNGSVERZEICHNIS xxxvii
28.1 Lasttest Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
28.2 Übersicht Lasttest Umgebung . . . . . . . . . . . . . . . . . . . . . . . . 321
28.3 Die Beispieltestsuite daemonController_twoPhases.qft . . . . . . . . . . 322
28.4 Der Aufruf von rc.syncThreads in der Beispieltestsuite . . . . . . . . . . . 327
29.1 Beispiel für einen ManualStepDialog . . . . . . . . . . . . . . . . . . . . 331
32.1 Struktur mit mehreren Testsuiten . . . . . . . . . . . . . . . . . . . . . . . 346
32.2 ’Include’ Bereich von Ebene 1 Testsuiten . . . . . . . . . . . . . . . . . . 347
32.3 Struktur von Testsuiten mit Rollen . . . . . . . . . . . . . . . . . . . . . . 348
34.1 Standardeinstellung Komponentenaufzeichnung . . . . . . . . . . . . . . 355
34.2 Standardeinstellungen für die Wiedergabe . . . . . . . . . . . . . . . . . 356
34.3 ’N