Manuel

16
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 Das Video-Anleitung: https://www.qfs.de/de/yt/pdf-dokumente-testen-42.html.

16.1
PDF Client

Das zu testende PDF-Dokument wird von QF-Test in einen Viewer geladen, der von QF-Test als Client-Prozess gestartet wird.

16.1.1
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.

16.1.2
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 Client Hauptfenster mit geöffnetem PDF Dokument
Abbildung 16.1:  PDF Client Hauptfenster mit geöffnetem PDF Dokument

16.2
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 aufzeichen. Im Auswahl Knoten muss als Komponente das "Window" des PDFs angegeben werden.

16.2.1
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 Testuite aufgelöst.

open:C:\Users\qfs\meinPDFDokument.pdf
Beispiel 16.1:  Laden eines PDF-Dokuments

Wenn das Dokument nicht gefunden oder geladen werden kann wird eine TestException geworfen.

16.2.2
Seite wechseln

Um auf eine besimmte 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"
Beispiel 16.2:  Öffnen einer bestimmten Seite

Sollte die gewünschte Seite nicht zur Verfügung stehen, so wird eine PageNotFoundException geworfen.

16.3
Checks für PDF-Komponenten

Für PDF-Komponenten (vgl. Abschnitt 16.4) stehen folgende Checks zur Verfügung, die auch direkt mittels dem Check-Aufnahme-Modus aufgezeichnet werden können:

16.3.1
'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.

Check Text 'default' Aufnahme
Abbildung 16.2:  Check Text 'default' Aufnahme

Check Text 'Text positioniert' Aufnahme
Abbildung 16.3:  Check Text 'Text positioniert' Aufnahme

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 Elemente 'Text als Elemente (gesamte Seite)' Aufnahme
Abbildung 16.4:  Check Elemente 'Text als Elemente (gesamte Seite)' Aufnahme

Check Elemente 'Text positioniert als Elemente (gesamte Seite)' Aufnahme
Abbildung 16.5:  Check Elemente 'Text positioniert als Elemente (gesamte Seite)' Aufnahme

Check Text 'Text (gesamte Seite)' Aufnahme
Abbildung 16.6:  Check Text 'Text (gesamte Seite)' Aufnahme

Check Text 'Text positioniert (gesamte Seite)' Aufnahme
Abbildung 16.7:  Check Text 'Text positioniert (gesamte Seite)' Aufnahme

16.3.2
'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.

Check Abbild 'default' Aufnahme eines Text Objekts
Abbildung 16.8:  Check Abbild 'default' Aufnahme eines Text Objekts

Check Abbild 'default' Aufnahme eines Image Objekts
Abbildung 16.9:  Check Abbild 'default' Aufnahme eines Image Objekts

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.

Check Abbild 'unskaliert' Aufnahme eines Image Objekts
Abbildung 16.10:  Check Abbild 'unskaliert' Aufnahme eines Image Objekts

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 Abbild 'skaliert' Aufnahme eines Image Objekts
Abbildung 16.11:  Check Abbild 'skaliert' Aufnahme eines Image Objekts

16.3.3
'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.

16.3.4
'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.

16.4
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.
Tabelle 16.1:  Unterstützte PDF-Objekte

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
Tabelle 16.2:  Farbcode der PDF-Objekte
16.5
PDF Komponentenerkennung

QF-Test stellt die PDF-Objekte als Swing-Komponenten dar, auf die über das Swing-API z.B. aus SUT-Skripten heraus zugegriffen werden kann (vgl. Kapitel 12)

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" in 'Weitere Merkmale' kann dieses Label anderen QF-Test Komponenten zugeordet 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 48.1) zur Verbesserung der Erkennung eingesetzt werden. Auch die Zuordnung der Label-Komponente zu anderen Komponenten kann über Resolver gesteuert werden.