Telefonrechnungen, Versicherungspolicen, amtliche Bescheide, Verträge jeglicher Art werden heute häufig als PDF-Dokument elektronisch zugestellt. Die Erstellung erfolgt in vielen Programmiersprachen mit zahlreichen Bibliotheken. Je nach Komplexität der zu erstellenden Dokumente ist diese Programmierung nicht einfach. In jedem Prozessschritt auf dem Weg zum PDF können Fehler entstehen:
Steht auf Seite 2 der richtige Text?
Erscheint das neue Logo auf allen Dokumenten?
Sind die Schriften eingebettet, wie beabsichtigt?
Stimmt das Layout mit der Vorgabe überein?
Enthält das Dokument die richtige Barcode-Graphik?
Ist das PDF signiert?
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. Es ist teuer und selber fehleranfällig.
Es war längst überfällig, ein einfach zu nutzendes Testsystem zu entwickeln.
Egal, ob PDF-Dokumente mit einem mächtigen Design-Werkzeug erstellt, aus MS-Word oder LibreOffice exportiert, über eine API erstellt wurden oder aus einem XSL-FO Workflow herausgefallen sind, mit PDFUnit kann jedes PDF-Dokument getestet werden.
Die Schnittstelle von PDFUnit-XML ist eng an die Schnittstelle von PDFUnit-Java angelehnt und folgt dem Prinzip des "Fluent Builder". Die Namen der XML-Tags lehnen sich möglichst eng an die Umgangssprache an und unterstützen damit gewohnte Denkstrukturen. Dadurch entsteht XML-Code, der auch langfristig noch leicht zu verstehen ist.
Wie einfach die Schnittstelle konzipiert ist, zeigt das folgende Beispiel:
<testcase name="compareText_OnEveryPage"> <assertThat testDocument="master/documentUnderTest.pdf" masterDocument="master/masterDocument.pdf" > <haveSameText on="EVERY_PAGE" /> </assertThat> </testcase>
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.