PHP-Code auf dem Prüfstand
Kommentare

Reporting
Selbst die umfangreichsten Tests helfen nur dann, wenn man Ergebnisse sehen und wirklich Schlüsse aus ihnen ziehen kann. Auch darauf bietet LiveTest dank vorbildlicher Implementierung eine sehr

Reporting

Selbst die umfangreichsten Tests helfen nur dann, wenn man Ergebnisse sehen und wirklich Schlüsse aus ihnen ziehen kann. Auch darauf bietet LiveTest dank vorbildlicher Implementierung eine sehr flexible Antwort: die so genannten Reports. Diese sind in Extensions für die Formatierung (Format) und die Speicherung (Writer) der Ergebnisse unterteilt. Reports sind Listener, die von LiveTest nach der Prüfung eines Testfalls über ein Event das Testergebnis im „Rohformat“ erhalten. Sie können dann nach Belieben dargestellt, verändert oder abgespeichert werden. Hier zeigt sich erneut, wie sehr der zentrale Event Dispatcher dabei hilft, direkte Abhängigkeiten zu minimieren.

Mitgeliefert werden verschiedene Reporting-Formate. Das Standardformat ist die Ausgabe im SimpleList-Format. Dabei werden die aufgetretenen Fehler als Text ausgegeben. Zusätzlich wird die Ausgabe im CSV-, HTML- sowie jUnit-Format unterstützt. Letzteres ist speziell für die Integration von LiveTest in Continuous-Integration-Umgebungen nützlich, da dieses Format von den meisten Testtools bereits unterstützt wird.

Über Writer-Klassen wird die Speicherung der Testergebnisse ermöglicht. Ein generiertes Ausgabeformat kann so auf der Shell ausgegeben, als Datei gespeichert oder aber in einer E-Mail gesendet werden. Das Beispiel in Listing 3 veranlasst LiveTest, die Testergebnisse in der Datei logs/livetest.html als HTML-Dokument zu speichern. Das wird in einer separaten Konfigurationsdatei definiert, die beim Aufruf über den zusätzlichen Parameter –config übergeben wird. Eine ähnliche Konfigurationsdatei liegt auch der Installation von LiveTest bei. Bei der Installation über PEAR wurde sie unterhalb des LiveTest-Installationspfades (im PEAR-Verzeichnis) unter src/examples/config.yml hinterlegt. Diese Vorlage kann ebenfalls als Grundlage für die eigene Konfigurationsdatei verwendet werden.

Listing 3
Listener:
    Report_Html_File:
        class: LiveTestPackagesReportingListenersReport
        parameter:
            format: 
                class: LiveTestPackagesReportingFormatHtml
            writer:
                class: LiveTestPackagesReportingWriterFile
                parameter:
                    filename: logs/livetest.html

Auf Wunsch können weitere Formate implementiert werden, zum Beispiel das JSON-Format, wenn auf die Testergebnisse per Ajax zugegriffen werden soll. Auch Writer können leicht hinzugefügt werden, beispielsweise wenn alle Ergebnisse in einer Datenbank gespeichert werden sollen. Eine gute Referenz dazu findet man in beiden Fällen in den Klassen unterhalb von LiveTestPackagesReporting.

Spezifische Tests definieren

Nachdem die Installation und grundlegende Konfiguration abgeschlossen sind können eigene projektspezifische Tests definiert werden. Es gibt dank der sehr flexibel einsetzbaren Testfälle für reguläre Ausdrücke und Xpath-Abfragen viele Möglichkeiten zur Validierung der eigenen Seite. Dabei sollte man jedoch beachten, dass der Umfang der Testsuite nicht unnötig komplex wird. Bevor neue Testfälle angelegt werden, kann es sich zudem lohnen, den geplanten Test mit bestehenden Testfällen zu vergleichen. Oftmals werden mögliche Szenarien bereits von anderen abgedeckt. Sinnvolle Erweiterungen sind zum Beispiel die Suche nach eigenen Fehlermeldungen in HTML-Dokumenten (TextNotPresent) oder nach bestimmten Elementen, die im HTML-Gerüst beziehungsweise im Theme der Webseite vorkommen sollten (RegExp, Xpath oder TextPresent). Zudem kann es für die Frontend-Entwicklung hilfreich sein, die Webseiten automatisiert validieren zu können. Einen entsprechenden Test kann man wie folgt in der Konfigurationsdatei für alle global konfigurierten Seiten aktivieren:

TestCases:
    ...    
    Validate_Html: 
        TestCase: LiveTestTestCaseGeneralHtmlValidMarkup
    ... 

Leider würde es den Rahmen des Artikels sprengen, wenn die umfangreichen Optionen aufgezeigt werden würden. Weitere Informationen rund um Testfälle und die Erweiterung von LiveTest enthält die Projektwebsite.

Fazit und Ausblick

LiveTest ist ein hilfreiches Tool für die Prüfung von Webapplikationen, die aufgrund ihrer Struktur nicht mit Unit Tests getestet werden können. Der aktuelle Stand von HTML-Dokumenten kann mit regulären Ausdrücken und Xpath-Abfragen detailliert geprüft werden. Abweichungen und mögliche Fehler können bei der Entwicklung in kurzer Zeit festgestellt werden. Wichtig ist, dass LiveTest die Testergebnisse abhängig von der Anzahl der Tests zeitnah bereitstellen kann. Auch bei der Validierung von HTML-Standards ist das Tool während der Frontend-Entwicklung sehr nützlich, da nicht mehr viele einzelne URLs manuell geprüft werden müssen.

Obwohl LiveTest noch relativ neu ist, bietet es bereits jetzt viele Hilfsmittel, die das Testen von Webseiten unterstützen. Weitere Features sind bereits in der Entwicklung. So ist zum Beispiel eine Sessionverwaltung und die Unterstützung von POST-Anfragen geplant. Damit sollen geschützte Bereiche und Formulare getestet werden. Die Community ist herzlich eingeladen, LiveTest weiter zu entwickeln und Ideen, Wünsche oder Vorschläge einzubringen.

Jan Brinkmann arbeitet seit über zehn Jahren mit Open-Source-Software und bloggt unter http://the-luckyduck.de über PHP, Linux und Open Source. Er ist bei der code-x GmbH, einer Agentur für Marketing und Internet aus Paderborn, als Entwickler im Bereich E-Commerce/Magento tätig.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -