Inhaltsverzeichnis
Vorwort
Hinweise zur Benutzung dieses Handbuchs
Inhaltsverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
I
Anwenderhandbuch
1
Installation und Start
1.1Unix Installation
1.2Windows Installation
1.3Lizenzdatei
1.4Konfigurationsdateien
1.5Aufruf von QF-Test
1.6Firewall Sicherheitswarnung
2
Bedienung von QF-Test
2.1Die Testsuite
2.2Bearbeiten einer Testsuite
2.2.1Navigation im Baum
2.2.2Einfügemarkierung
2.2.3Knoten verschieben
2.2.4Knoten konvertieren
2.2.5Tabellen
2.2.6Packen und Entpacken
2.3Erweiterte Bearbeitungsmöglichkeiten
2.3.1Suchen
2.3.2Ersetzen
2.3.3Kompliziertere Such- und Ersetzungsvorgänge
2.3.4Mehrere Ansichten
2.0+
3
Schnellstart
4
Starten einer Applikation aus QF-Test
4.1 Verbindung mit einem JDK
4.2SWT Instrumentierung
4.2.1Vorbereitung einer manuellen SWT Instrumentierung
4.2.2Manuelle SWT Instrumentierung für Eclipse basierte Anwendungen
4.2.3Manuelle Instrumentierung für eigenständige SWT Anwendungen
4.3Verschiedene Methoden zum Starten des SUT
4.3.1Starten des SUT aus einem Skript oder ausführbaren Programm
4.3.2Starten des SUT mittels Java WebStart
4.3.3Starten des SUT als Applet in einem Web Browser
4.3.4 Starten des SUT mittels java -jar <Archiv>
4.3.5 Starten des SUT mittels java -classpath <Pfad> <Startklasse>
4.3.6 Starten einer Webanwendung im Browser
4.3.7 Indirektes Starten eines zweiten SUT als Kindprozess eines bereits verbundenen SUT
4.4Programmausgaben und das Clients Menü
5
Aufnahme und Wiedergabe
5.1Aufnahme von Testsequenzen
5.2Abspielen von Tests
5.3Aufnehmen von Checks
5.4Komponenten aufnehmen
5.5HTTP Requests aufnehmen (GET/POST)
6
Komponenten
6.1Hierarchie der Komponenten eines GUI
6.2'Komponenten' in QF-Test
6.3'Ids' von 'Komponenten'
6.4Klassen von Komponenten
3.1+6.5 Untersuchung von Komponenten
6.6Warum Namen so wichtig sind
6.7Erwägungen zur Vergabe von Namen
6.8'Komponenten' aktualisieren
6.9Lösung von Problemen bei der Wiedererkennung
6.10Zugriff auf unsichtbare Felder einer Webseite
7
Unterelemente komplexer GUI Komponenten
7.1'Elemente'
7.2Die 'Id' eines 'Elements'
7.3Besondere 'Id'-Syntax für direkten Zugriff auf Elemente
8
Variablen
8.1Ermittlung des Wertes einer Variablen
8.2Definition von Variablen
8.3Variablen Beispiel
8.4Externe Daten und spezielle Gruppen
8.5Berechnungen
3.0+8.6Immediate und Lazy Binding
9
Problemanalyse und Debugging
9.1Das Protokoll
9.1.1Fehlerzustände
9.1.2Navigation im Protokoll
9.1.3Werte von fehlgeschlagenen Checks als gültig akzeptieren
3.0+9.1.4Geteilte Protokolle
9.1.5Protokoll Optionen
3.3+9.1.6Eine Testsuite aus dem Protokoll erstellen
9.2Der Debugger
9.2.1Aktivieren des Debuggers
9.2.2Das Debuggerfenster
9.2.3Debugger Kommandos
9.2.4Breakpoints setzen und löschen
10
Aufbau und Organisation einer Testsuite
10.1'Sequenz' und 'Test' Knoten
2.0+10.2 Verwaltung von Tests mit Hilfe von 'Testfallsatz' und 'Testfall' Knoten
10.2.1Konzepte
10.2.2Variablen und besondere Attribute
10.2.3Migration
10.3'Prozeduren' und 'Packages'
3.1+10.3.1Lokale 'Prozeduren' und 'Packages'
3.1+10.3.2Relative 'Prozeduren'
10.3.3Einfügen von 'Prozeduraufruf' Knoten
3.1+10.3.4Parametrisieren von Knoten
3.0+10.3.5Konvertieren von 'Sequenzen' in 'Prozeduren'
10.4Dokumentieren von Testsuiten
11
Standardbibliothek
12
Abhängigkeiten
12.1Grundlagen von 'Abhängigkeiten'
12.2Der Stapel von Abhängigkeiten
12.3Eskalation von Fehlern
12.4Spezielle Variablen
12.5Fehlerbehandlung
13
Skripting
13.1Grundlagen der Jython Integration
13.2Der Runcontext rc
13.3Beispiele zum Skripting
13.3.1Meldungen ausgeben
13.3.2Checks durchführen
13.3.3Zugriff auf Variablen
13.3.4Variablen setzen
13.3.5Globale Jython Variablen
13.3.6Austausch von Variablen zwischen verschiedenen Interpretern
13.3.7Zugriff auf die GUI Komponenten des SUT
13.3.8Aufruf von 'Prozeduren'
3.1+13.3.9Setzen von Optionen
13.3.10Ein komplexes Beispiel
13.3.11Komponenten bei Bedarf setzen
13.4Module
13.5Post-mortem Fehleranalyse von Jython Scripts
13.6Unterschiede zwischen Jython Version 2.2.1 und 2.5
13.6.1Boolean Typ
13.6.2Zeichenkodierung
13.6.3Den Namen einer Java Klasse ermitteln
13.7Groovy Skripting
13.7.1Zugriff auf Variablen in Groovy
13.7.2Globale Groovy Variablen
13.7.3Groovy Packages
14
Datengetriebenes Testen
14.1Beispiele für 'Datentreiber'
14.2Anwendung von 'Datentreibern'
14.3Beispiele für 'Datentreiber'
14.4Fortgeschrittene Anwendung
15
Reports und Testdokumentation
15.1Reports
15.1.1Reportkonzepte
15.1.2Inhalt von Reports
15.1.3Reports erstellen
15.2Testdoc Dokumentation für 'Testfallsätze' und 'Testfälle'
15.3Pkgdoc Dokumentation für 'Packages', 'Prozeduren' und 'Abhängigkeiten'
16
Testausführung
16.1Testausführung im Batchmodus
16.1.1Verwenden der Kommandozeile
16.1.2Windows Befehlsskript
3.0+16.1.3Groovy
16.2Testausführung im Daemonmodus
16.2.1Starten des Daemons
3.0+16.2.2Steuern des Daemons über die QF-Test Kommandozeile
16.2.3Steuern des Daemons über die Daemon API
17
Verteilte Entwicklung von Tests
17.1Der Aufruf einer 'Prozedur' in einer anderen Testsuite
17.2Die Verwaltung von 'Komponenten'
17.3Verschmelzen von Testsuites
17.3.1Importieren von Komponenten
3.3+17.3.2 Importieren von Prozeduren und Testfällen
17.4Verteilte Entwicklung von Tests
3.0+
18
Automatisierte Erstellung von Basisprozeduren
18.1Einführung
18.2Die Verwendung vom Procedure Builder
18.3Konfiguration des Procedure Builder
18.3.1Die Procedure Builder Definitionsdatei
3.0+
19
Anbindung an Testmanagementtools
19.1Einführung
19.2HP TestDirector for Quality Center
19.2.1Einführung
19.2.2Schritt für Schritt Anleitung
19.3Imbus TestBench
19.3.1Einführung
19.3.2Generieren von QF-Test Vorlage-Testsuiten aus den Interaktionen
19.3.3Importieren der Resultate
19.4TestLink
19.4.1Einführung
19.4.2Generieren von QF-Test Vorlagen-Testsuiten aus den Testfällen
19.4.3Ausführung der Testfälle
19.4.4Importieren der QF-Test Resultate nach TestLink
20
Integration mit Build-Tools
20.1Ant
20.2Maven
3.3+20.3Jenkins/Hudson
20.3.1Hudson installieren und starten
20.3.2Anlegen eines neuen Jobs für QF-Test
20.3.3QF-Test Demo-Projekt installieren
21
Durchführung von Lasttests über das GUI
21.1Hintergrund und Vergleich mit anderen Techniken
21.2Lasttest mit QF-Test
21.2.1Ausführung von Tests in parallelen Threads
21.2.2Synchronisierung
21.2.3Koordinieren von Tests auf mehreren Rechnern
3.0+
22
Ausführung manueller Tests mit QF-Test
22.1Einführung
22.2Schritt-für-Schritt Anleitung
22.3Aufbau der Excel Datei
22.4Die Ausführungstestsuite
22.5Die möglichen Stati
II
Best Practices
23
Einführung
24
Wie beginnt man in einem Projekt?
24.1Infrastruktur und Testumgebung
24.2Speicherorte
24.2.1Netzwerkinstallation
24.3Wiedererkennung von Komponenten
25
Organisation von Testsuiten
25.1Organisation von Tests
25.2Modularisierung
25.3Parametrisierung
25.4Arbeiten in mehreren Testsuiten
25.5Rollen und Zuständigkeiten
25.6Komponenten in unterschiedlichen Ebenen verwalten
25.7Umgekehrte Includes
26
Effiziente Arbeitstechniken
26.1Erstellung von Testsuiten
26.2Die Standardbibliothek qfs.qft
26.3Ablage von Komponenten
26.4Erweitern von Testsuiten
26.5Arbeiten mit dem Skripteditor
27
Wie erreicht man eine robuste Komponentenerkennung?
27.1Benutzen der Standardeinstellungen
27.2Die 'Name übertrifft alles' Einstellung benutzen
27.3Verwendung von regulären Ausdrücken oder Arbeiten mit dynamischen Fenstertiteln
27.4Beeinflussen von Namen mittels NameResolver
27.5Umgehen von Klassenänderungen durch 'Nur Systemklassen aufzeichnen'
27.6Nicht notwendige Aufzeichnungen ersparen oder generische Komponenten einsetzen
3.1+27.7 Optionen zur Laufzeit verändern
28
Testausführung
28.1Abhängigkeiten
28.2Wartezeiten und Verzögerungen
28.3Was soll man tun, wenn das Protokoll einen Fehler enthält?
III
Referenzteil
29
Einstellungen
29.1Allgemeine Optionen
29.1.1Editieren
29.1.2Projekte
29.1.3Lesezeichen
29.1.4Externe Programme
29.1.5Sicherungskopien
29.1.6Bibliothekspfad
29.1.7Lizenz
29.2Aufnahme
29.2.1Folgende Events aufnehmen
29.2.2Eventsequenzen packen
29.2.3Komponenten
29.2.4Unterelemente
29.2.5Prozeduren
29.3Wiedergabe
29.3.1Client Optionen
29.3.2Events
29.3.3Wiedererkennung
29.3.4Verzögerungen
29.3.5Automatische Timeouts
29.4Web Optionen
29.5Debugger Optionen
29.6Protokoll
29.6.1Allgemeine Protokoll Optionen
29.6.2Optionen für den Inhalt von Protokollen
29.7Variablen
30
Bestandteile einer Testsuite
30.1Die Testsuite und ihre Struktur
30.1.1'Testsuite'
30.2Test und Sequenz Knoten
30.2.1'Testfall'
30.2.2'Testfallsatz'
30.2.3'Testaufruf'
30.2.4'Test'
30.2.5'Sequenz'
30.2.6'Testschritt'
30.2.7'Sequenz mit Zeitlimit'
30.2.8'Extrasequenzen'
30.3Abhängigkeiten
30.3.1'Abhängigkeit'
30.3.2'Bezug auf Abhängigkeit'
30.3.3'Vorbereitung'
30.3.4'Aufräumen'
30.3.5'Fehlerbehandlung'
30.4Datentreiber
30.4.1'Datentreiber'
30.4.2'Datentabelle'
30.4.3'Datenbank'
30.4.4'Excel Datei'
30.4.5'CSV Datei'
30.4.6'Datenschleife'
30.5Prozeduren
30.5.1'Prozedur'
30.5.2'Prozeduraufruf'
30.5.3'Return'
30.5.4'Package'
30.5.5'Prozeduren'
30.6Ablaufsteuerung
30.6.1'Schleife'
30.6.2'While'
30.6.3'Break'
30.6.4'If'
30.6.5'Elseif'
30.6.6'Else'
30.6.7'Try'
30.6.8'Catch'
30.6.9'Finally'
30.6.10'Throw'
30.6.11'Rethrow'
30.6.12'Server Skript'
30.6.13'SUT Skript'
30.7Prozesse
30.7.1'Java SUT Client starten'
30.7.2'SUT Client starten'
30.7.3'Browser starten'
30.7.4'Programm starten'
30.7.5'Shellkommando ausführen'
30.7.6'Warten auf Client'
30.7.7'Programm beenden'
30.7.8'Warten auf Programmende'
30.8Events
30.8.1'Mausevent'
30.8.2'Tastaturevent'
30.8.3'Texteingabe'
30.8.4'Fensterevent'
30.8.5'Komponentenevent'
30.8.6'Selektion'
30.8.7'Dateiauswahl'
30.9Checks
30.9.1'Check Text'
30.9.2'Check Boolean'
30.9.3'Check Elemente'
30.9.4'Check selektierbare Elemente'
30.9.5'Check Abbild'
30.9.6'Check Geometrie'
30.10Abfragen
30.10.1'Text auslesen'
30.10.2'Index auslesen'
30.10.3'Geometrie auslesen'
30.11Verschiedenes
30.11.1'Variable setzen'
30.11.2'Warten auf Komponente'
30.11.3'Warten auf Laden des Dokuments'
30.11.4'Warten auf Ende des Downloads'
30.11.5'Ressourcen laden'
30.11.6'Properties laden'
30.11.7'HTTP Request'
30.12Fenster, Komponenten und Elemente
30.12.1'Fenster'
30.12.2'Webseite'
30.12.3'Komponente'
30.12.4'Element'
30.12.5'Fenstergruppe'
30.12.6'Komponentengruppe'
30.12.7'Fenster und Komponenten'
31
Exceptions
IV
Technische Referenz
32
Kommandozeilenargumente und Rückgabewerte
32.1Aufrufsyntax
32.2Kommandozeilenargumente
32.2.1Argumente für das Startskript
32.2.2Argumente für die Java VM
32.2.3Argumente für QF-Test
32.2.4Platzhalter im Dateinamen für Protokoll und Report
32.3Rückgabewerte von QF-Test
33
Instrumentierung des JDK
33.1Änderungen am JDK
33.2Ergebnis der Instrumentierung
34
GUI Engines
35
Starten des SUT mit dem alten Verbindungsmechanismus
35.1Vier Methoden zum Starten des SUT
35.2Starten einer Anwendung mittels Java WebStart
35.3Starten eines Applets im Appletviewer
35.4Java Security
35.5Hintergrundinformationen
36
Technische Details zu verschiedenen Themen
36.1Drag&Drop
36.2Wiedererkennung von Komponenten
36.3Timing
36.4Reguläre Ausdrücke - Regexps
36.5Zeilenumbrüche in Unix und Windows
36.6Schützen von Sonderzeichen (quoting)
36.7Auflösen von Include Dateien
37
Jython und Groovy Skripting
37.1Pfad für das Laden der Module (Jython)
37.2Das Plugin Verzeichnis
37.3Der Package Cache (Jython)
37.4Initialisierung (Jython)
37.5Die Namespace Umgebung für Skript Knoten (Jython)
37.6Das API des Runcontexts
37.7Das qf Modul
3.0+37.8Image API
37.8.1Die ImageWrapper Klasse
37.9Exceptions
37.10Debuggen von Skripten (Jython)
38
Besondere Features für Webanwendungen
38.1Pseudo DOM API für Webanwendungen
38.1.1Die abstrakte Klasse Node
38.1.2Die Klasse DocumentNode
38.1.3Die Klasse FrameNode
38.1.4Die Klasse DomNode
38.1.5Die Klasse DialogNode
38.2Besondere Unterstützung für verschiedene AJAX Toolkits
38.2.1Konzepte für AJAX Resolver
38.2.2Unterstützte AJAX Toolkits
39
APIs für Erweiterungen
39.1Resolver Hooks
39.1.1Übersicht über die unterstützten Arten von Resolvern
3.1+39.1.2 Das ClassNameResolver Interface
3.1+39.1.3 Das NameResolver2 Interface
39.1.4Das IdResolver Interface
3.1+39.1.5 Das FeatureResolver2 Interface
39.1.6Das ExtraFeatureResolver Interface
3.1+39.1.7 Das ItemNameResolver Interface
3.1+39.1.8 Das ItemValueResolver Interface
39.1.9Das TreeTableResolver Interface
39.1.10Vereinfachte Erstellung von Resolvern mit dem resolvers Modul
39.1.11Die ResolverRegistry
39.1.12Fehlerbehandlung
3.1+39.2 Implementierung eigener Unterelemente mit dem ItemResolver Interface
39.2.1ItemResolver Konzepte
39.2.2Das ItemResolver Interface
39.2.3Die Klasse SubItemIndex
39.2.4Die ItemRegistry
39.2.5Standard Repräsentation von Unterelementen
3.1+39.3 Implementierung eigener Checks mit dem Checker Interface
39.3.1Das Checker Interface
39.3.2Die Pair Klasse
39.3.3 Das CheckType Interface und seine Implementierung DefaultCheckType
39.3.4Die Klasse CheckDataType
39.3.5Die Klasse CheckData und ihre Unterklassen
39.3.6Die CheckerRegistry
39.3.7Beispiel für einen Checker
3.2+39.4 Das Eclipse Graphical Editing Framework (GEF)
39.4.1Aufnahme von GEF Elementen
39.4.2Implementierung eines ItemNameResolver2 für GEF
39.4.3Implementierung eines ItemValueResolver2 für GEF
3.1+39.5Listener für den aktuellen Testlauf
39.5.1Das TestRunListener Interface
39.5.2Die Klasse TestRunEvent
39.5.3Die Klasse TestSuiteNode
39.6DOM Prozessoren
39.6.1Das DOMProcessor Interface
39.6.2Die DOMProcessorRegistry
39.6.3Fehlerbehandlung
3.0+39.7Image API Erweiterungen
39.7.1Die ImageRep Klasse
39.7.2Das ImageComparator Interface
40
Daemon Modus
40.1Der DaemonLocator
40.2Der Daemon
40.3Der TestRunDaemon
40.3.1Verschiedenes
40.3.2Bearbeiten globaler Variablen
40.3.3Testausführung
40.3.4Identifikation
40.4Der DaemonRunContext
3.1+40.5Der DaemonTestRunListener
41
Die Procedure Builder Definitionsdatei
41.1Platzhalter
41.2Spezielle Bedingungen für die Definition von Packages und Prozeduren
41.3Auswertung der Komponentenhierarchie
3.4+41.4Details zu @CONDITION
42
Der ManualStepDialog
42.1Die ManualStepDialog API
3.1+
43
Details zu Knotenkonvertierungen
43.1Einführung
43.2Konvertierungen mit Typwechseln
43.3Zusätzliche Konvertierungen unter 'Extrasequenzen'
43.3.1Konvertierungen ohne Seiteneffekte
43.3.2Konvertierungen mit Seiteneffekten
3.3+
44
Details des Algorithmus zum Bildvergleich
44.1Einführung
44.2Beschreibung der Algorithmen
44.2.1Klassischer Bildvergleich
44.2.2Pixelbasierter Vergleich
44.2.3Pixelbasierte Ähnlichkeitsanalyse
44.2.4Blockbildung mit Vergleich
44.2.5Blockbildung mit Ähnlichkeitsanalyse
44.2.6Häufigkeitsanalyse mittels Histogramm
44.2.7Bildanalyse mittels Diskreter Kosinustransformation
44.2.8Blockbildung zur Bildanalyse mittels Diskreter Kosinustransformation
44.2.9Bilinearer Filter
A
FAQ - Häufig gestellte Fragen
B
Release Notes
B.1Version 3.4.4
B.2Version 3.4.3
B.3Version 3.4.2
B.4Version 3.4.1
B.5Wesentliche neue Features in Version 3.4
B.6Version 3.4.0
B.7Version 3.4M2
B.8Version 3.4M1
B.9Version 3.3.0
B.10Version 3.2.2
B.11Version 3.2.1
B.12Neue Features in QF-Test Version 3.2
B.13Version 3.2.0
B.14Version 3.1.4
B.15Version 3.1.3
B.16Version 3.1.2
B.17Version 3.1.1
B.18Version 3.1.0
B.19Version 3.0.2
B.20Version 3.0.1
B.21Neue Features in QF-Test Version 3
C
Tastaturkürzel
C.1Navigation und Editieren
C.2Aufnahme- und Wiedergabefunktionen
C.3Tastaturhelfer
D
Glossar
E
Benutzte Software