Vorwort

Aktuelle Testsituation in Projekten

Telefonrechnungen, Versicherungspolicen, amtliche Bescheide, Verträge jeglicher Art werden heute als PDF-Dokumente elektronisch zugestellt. Ihre Erstellung erfolgt in vielen Programmiersprachen mit zahlreichen Bibliotheken. Je nach Komplexität der zu erstellenden Dokumente ist diese Programmierung nicht einfach und enthält wie jede Software auch Fehler, die eventuell zu fehlerhaften PDF Documenten führen. Deshalb sollte geprüft werden:

  • Steht in einem bestimmten Bereich einer Seite der erwartete Text?

  • Stimmt der Barcode (QR-Code) auf dem Dokument mit dem erwarteten Inhalt überein?

  • Stimmt das Layout mit der Vorgabe überein?

  • Stimmen die Werte der eingebetteten ZUGFeRD-Daten mit den erwarteten Daten überein?

  • Stimmen die Werte der eingebetteten ZUGFeRD-Daten mit den sichtbaren Daten überein?

  • Entspricht ein Dokument den Regeln von DIN 5008?

  • Ist das PDF signiert? Wann und von wem?

Es sollte Entwickler, Projekt- und Unternehmensverantwortliche erschrecken, dass es bisher kaum Möglichkeiten gibt, PDF-Dokumente automatisiert zu testen. Und selbst diese Möglichkeiten werden im Projektalltag nicht genutzt. Manuelles Testen ist leider weit verbreitet. Das ist teuer und fehleranfällig.

Egal, ob PDF-Dokumente mit einem mächtigen Design-Werkzeug, mit MS-Word/LibreOffice oder eigenen Programmen erstellt werden oder ob sie aus einem XSL-FO Workflow herausfallen, jedes PDF-Dokument kann mit PDFUnit getestet werden.

Intuitive Schnittstelle

Die Schnittstelle von PDFUnit folgt dem Prinzip des "Fluent Builder". Alle Namen von Klassen und Methoden lehnen sich eng an die Umgangssprache an und unterstützen damit gewohnte Denkstrukturen. Dadurch entsteht Java-Code, der auch langfristig noch leicht zu verstehen ist.

Wie einfach die Schnittstelle konzipiert ist, zeigt das folgende Beispiel:

String filename = "documentUnderTest.pdf";
int leftX  =  17;  // in millimeter
int upperY =  45;
int width  =  80;
int height =  50; 
PageRegion addressRegion = new PageRegion(leftX, upperY, width, height);

AssertThat.document(filename)
          .restrictedTo(FIRST_PAGE)
          .restrictedTo(addressRegion)
          .hasText()
          .containing("John Doe Ltd.")
;

Ein Test-Entwickler muss weder Kenntnisse über die Struktur von PDF haben, noch etwas über die fachliche Enstehungsgeschichte des PDF-Dokumentes wissen, um erfolgreiche Tests zu schreiben.

Zeit, anzufangen

Spielen Sie nicht weiter Lotto bei der Erstellung Ihrer PDF-Dokumente. Überprüfen Sie das Ergebnis Ihrer PDF-Erstellung durch automatisierte Tests.