1338
QF-Test - Das Handbuch Version 5.3.0 Quality First Software GmbH 1 Copyright c 1999-2021 Quality First Software GmbH 20. Mai 2021 1 http://www.qfs.de

QF-Test - Das Handbuch · 2020. 12. 11. · Vorwort Wie unser Firmenname unschwer erkennen lässt, hat sich die Quality First Software GmbH dem Thema Qualität in der Softwareentwicklung

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 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