Testen von PDF-Dokumenten
4.2+
QF-Test bietet ab Version 4.2 die Möglichkeit, PDF-Dokumente analog zu GUIs zu
testen. D.h. QF-Test analysiert die Struktur des PDF-Dokuments und erkennt einzelne
Komponenten, deren Eigenschaften getestet werden können.
QF-Test kann mittels Aufnahme und Wiedergabe
direkt Events sowie diverse Checks
aufnehmen und wiedergeben.
Video: 'PDF-Dokumente testen mit
QF-Test'
PDF-Client
Das zu testende PDF-Dokument wird von QF-Test in einen Viewer geladen, der von QF-Test als Client-Prozess gestartet wird.
PDF-Client starten
Mit Hilfe des Schnellstart-Assistenten lässt sich die passende Setup-Sequenz erstellen, wobei als Typ der Anwendung "PDF-Dokument" zu wählen ist (vgl. Kapitel 3). Dies ermöglicht den einfachen Start des Viewers. Als konkreter Startknoten wird hierbei der PDF-Client starten Knoten verwendet.
Das Fenster des PDF-Client
Im Fenster des PDF-Client befindet sich links eine Navigationsspalte mit einer Übersucht der Seiten
des PDF-Dokuments.
Im rechten Fensterbereich wird die aktuell selektierte Seite angezeigt.
Der folgende Screenshot zeigt den PDF-Client mit einem geöffneten Demo PDF-Dokument.
PDF Events
Um während der Testausführung z.B. ein anderes Dokument zu öffnen oder die Seite des geöffneten PDFs zu ändern, können Auswahl Knoten verwendet werden. Diese Aktionen lassen sich direkt im Aufnahme-Modus aufzeichnen. Im Auswahl Knoten muss als Komponente das "Window" des PDFs angegeben werden.
PDF-Dokument öffnen
Es ist möglich, während der Ausführungszeit ein anderes PDF-Dokument zu öffnen.
Dazu muss im
Detail-Attribut des
Auswahl Knotens
das open:
Event angegeben werden.
Hierbei kann nun der Pfad zum PDF-Dokument angegeben werden. Relative Pfade werden relativ zum aktuellen Verzeichnis der Testsuite aufgelöst.
open:C:\Users\qfs\meinPDFDokument.pdf
Wenn das Dokument nicht gefunden oder geladen werden kann wird eine TestException
geworfen.
Seite wechseln
Um auf eine bestimmte Seite zu wechseln, kann im
Detail-Attribut des
Auswahl Knotens
das goto:
Event angegeben werden.
Hier kann analog zu dem Seitennummer-Attribut, die Seite als Zahl für die Seitennummer bzw. in Anführungszeichen für den Seitentitel angegeben werden.
goto:3 bzw. goto:"Einleitung"
Sollte die gewünschte Seite nicht zur Verfügung stehen, so wird eine PageNotFoundException
geworfen.
Checks für PDF-Komponenten
Für PDF-Komponenten (vgl. Abschnitt 18.4) stehen folgende Checks zur Verfügung, die auch direkt mittels dem Check-Aufnahme-Modus aufgezeichnet werden können:
Check Text
Der Check Text Knoten ist in Check Text beschrieben. Für PDF-Text-Komponenten gibt es bei Text-Komponente zwei Check-Typen: "default" und "Text positioniert".
Zeilenumbrüche sind im PDF-Dokument nicht enthalten, Leerzeichen nicht zwingend. Die Abstände ergeben sich aus den Koordinaten der einzelnen Buchstaben. Der Check-Typ "default" prüft den Text wie er im PDF-Dokument abgespeichert ist - ohne Zeilenumbrüche und eventuell ohne Leerzeichen, wenn keine enthalten sind. QF-Test errechnet aus den Koordinaten der einzelnen Buchstaben wo die Zeilenumbrüche angezeigt werden und wo Abstände, die auf Leerzeichen schließen lassen, vorhanden sind. Der Check-Typ "Text positioniert" greift auf diesen aufbereiteten Text zu.
4.4+
Zusätzlich kann der gesamte Text der Seite auf der Main Stage mit den Check-Typen
"Text (gesamte Seite)", "Text positioniert (gesamte Seite)", "Text als Elemente (gesamte Seite)"
sowie "Text positioniert als Elemente (gesamte Seite)" geprüft werden.
Dabei werden alle Text-Komponenten der Seite sortiert nach Y/X-Position aufgenommen. Die Check-Typen unterscheiden sich
dabei, ob der Text positioniert/aufbereitet wird (siehe oben) oder nicht
und ob die einzelnen Text-Komponenten als Check Elemente oder als gemeinsamer Check Text aufgenommen werden.
Check Abbild
Der Check Abbild Knoten ist in Check Abbild beschrieben. Für alle Komponenten Typen gibt es den Check-Typ "default".
Der Check-Typ "default" prüft das Objekt, wie es auf der PDF-Seite angezeigt wird, ggf. skaliert und mit überdeckenden Objekten oder Objektteilen. Das aufgenommene Bild entspricht also der tatsächlichen Darstellung.
In PDF-Dokumenten können auch echte Bilder eingebettet werden. Dieses Image kann für die Anzeige auf der PDF-Seite skaliert werden. Für echte Bilder werden noch weitere Check-Typen angeboten:
Der Check-Typ "unskaliert" prüft das in der Datei originale eingebettete unskalierte Bild.
Der Check-Typ "skaliert" prüft das auf der PDF-Seite angezeigte, ggf. skalierte Bild ohne überdeckende Objekte. Somit können auch teilverdeckte Abschnitte dieser Bilder geprüft werden.
'Check Font'
Der Check Text Knoten mit dem Check-Typ "text_font" erlaubt das Überprüfen des Fonts.
Innerhalb einer PDF-Text-Komponente können verschiedene Fonts verwendet werden. 'Check Font' gibt für eine Text-Komponente den Font zurück, der mehrheitlich verwendet wird.
'Check Font-Größe'
Der Check Text Knoten mit dem Check-Typ "text_fontsize" erlaubt das Überprüfen der Fontgröße.
Innerhalb einer PDF-Text-Komponente können verschiedene Fontgrößen verwendet werden. 'Check Font-Größe' gibt für ein Textobjekt die Fontgröße zurück, der mehrheitlich verwendet wird.
PDF Komponententypen
QF-Test erkennt folgende Objekttypen:
PDF Objekttyp | QF-Test Komponententyp | Bemerkung |
---|---|---|
Text | Text oder Label | Ansammlung von Buchstaben, denen Font und Fontsize zugeordnet sind. |
Image | Graphics | Ansammlung von Pixeln. Kann auch Buchstabenform haben. |
Shader und Vektoren | Graphics | Ansammlung von Vektoren, die entweder geometrische Figuren oder auch Buchstabenformen darstellen. |
Main stage | MainPanel | Die zugrunde liegende Seite, auf der alle Objekte dargestellt werden. |
QF-Test kann die erkannten PDF-Objekte farbig umranden, wenn diese Funktion
im Menü View -> Show components oder das Tastenkürzel STRG-T aktiviert wird.
Bei der Aufnahme und Wiedergabe muss diese Funktion deaktiviert sein, da die Rahmen
ansonsten bei Abbild-Vergleichen mit aufgenommen werden.
Für die einzelnen Objekttypen gilt folgender Farbcode:
Farbe | PDF Objekttyp |
---|---|
Rot | Text |
Blau | Image |
Grün | Shader und Vektoren |
Türkis | Main stage |
PDF Komponentenerkennung
QF-Test stellt die PDF-Objekte als Swing-Komponenten dar, auf die über die Swing-API z.B. aus SUT-Skripten heraus zugegriffen werden kann (vgl. Kapitel 11)
Die Basisinformationen für die Identifizierung der PDF-Objekte auf der Seite sind, wie bei allen QF-Test Komponenten, ihre Klasse, Geometrie und Strukturinformationen (Index). Für Textkomponenten stehen außerdem über Weitere Merkmale der mehrheitlich zugeordnete Font und die mehrheitlich verwendete Fontgröße zur Verfügung. Für Image-Objekte wird in Weitere Merkmale der Image hash und für Shader-Objekte der Shader-Typ mit aufgenommen.
Des weiteren versucht QF-Test bei einem Textobjekt anhand seiner Merkmale zu erkennen, ob es sich
um eine Überschrift oder Beschriftung handelt.
In diesem Fall erhält das Textobjekt die QF-Test Klasse "Label". Über den QF-Test
Standardalgorithmus für qfs:label*
-Varianten
in Weitere Merkmale kann dieses Label
anderen QF-Test Komponenten zugeordnet werden.
Da der Standardalgorithmus zur Erkennung von Überschriften und Beschriftungen mit Annahmen und Wahrscheinlichkeiten arbeiten muss, kann es auch zu Fehltreffern (false positive) oder Nichterkennung kommen. In diesem Fall können Resolver (Abschnitt 54.1) zur Verbesserung der Erkennung eingesetzt werden. Auch die Zuordnung der Label-Komponente zu anderen Komponenten kann über Resolver gesteuert werden.