Einfaches Testen mit LiveTest

Nachdem die meisten Klausuren vorbei sind, habe ich endlich mal wieder Zeit, einen Artikel zu schreiben. Heute soll es mal um das Testen der eigenen Webseite gehen. Während das Testen von objektorientierten Anwendungen mittels PHPUnit immer mehr zum Standard geworden ist, gab es für die übrigen Anwendungen lange Zeit kein geeignetes Testwerkzeug. Mit LiveTest gibt es nun ein Testwerkzeug, das diese Lücke schließt. Und was mir besonders gefällt: Es kann schon von Anfängern in der Programmierung genutzt werden, ist aber auch für Profis noch von Nutzen.

Die Idee

Die Idee hinter LiveTest ist simpel wie genial: LiveTest ruft die vom Benutzer definierten URLs mittels der cURL-Extension auf und wendet auf die Ergebnisse eine Reihe von Tests an. So lässt sich beispielsweise die Ladezeit testen, der Http-Statuscode oder die Größe des HTML-Quellcodes.

Installation

Die Installation von LiveTest gestaltet sich ähnlich einfach wie bei den meisten PHP-Tools, es genügen einige Zeilen in der Konsole:

$ pear channel-discover pear.phmlabs.com
$ pear install pear.phmlabs.com/LiveTest

Ob die Installation erfolgreich verlaufen ist, lässt sich einfach testen:

$ LiveTest --version

LiveTest 1.0.1 by Nils Langner & Mike Lohmann

Als Alternative stehen ein zip-Archiv und Git zur Verfügung.

Erste Tests

So langsam nähern wir uns dem Ende des Artikels, denn das Zusammenstellen von Tests ist erfreulich einfach. Wir erstellen eine Datei im YAML-Format in der wir die Testfälle und die zu testenden Seiten festlegen. Das kann dann z.B. so aussehen:

TestCases:
  Http_Status_Ok:
    TestCase: LiveTest\TestCase\General\Http\SuccessfulStatusCode

  Title_Tag_Existing:
    TestCase: LiveTest\TestCase\General\Html\Dom\XPath\Exists
    Parameter:
      xpath: /html/head/title
      
  Body_Tag_Existing:
    TestCase: LiveTest\TestCase\General\Html\TextPresent
    Parameter:
      text: 

  Error_Message_Not_Existing:
    TestCase: LiveTest\TestCase\General\Html\RegExNotPresent
    Parameter:
      regEx: (Exception|Error)

  Loading_Time_Acceptable:
    TestCase: LiveTest\TestCase\General\Http\LoadTime
    Parameter:
      maxLoadTime: 1


Pages:
  - http://www.steppenhahn.de/
  - http://www.steppenhahn.de/ultramarathon/
  - http://www.steppenhahn.de/urp/
  - http://www.steppenhahn.de/benutzer/anmelden

$ LiveTest --testsuite livetest/testsuite.yml
LiveTest 1.0.1 by Nils Langner & Mike Lohmann

Default Domain : http://www.example.com
Start Time : 2011-07-20 02:01:30

Number of URIs : 4
Number of Tests : 20

Running: ********************

Tests: 20 (failed: 0, error: 0) - Duration: 2 second(s)

Ich denke, das Beispiel ist selbsterklärend. LiveTest kann natürlich mehr, es existieren z.B. verschiedene Ausgabeformate, aber für einen ersten Einblick sollte das reichen. Wer einen Überblick über die Testfälle sucht, wird in der Dokumentation fündig.

Fazit

Wie ihr seht, ist alles ganz simpel. Die Zeit für Ausreden sind also vorbei — auch für diejenigen, die nicht objektorientiert programmieren. Die Dokumentation ist zwar noch nicht vollständig, aber für die meisten Anwendungsfälle sollte es reichen. Probiert es einfach mal aus, es macht wirklich Spaß 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *