LiveTest Version 0.x
Wir hatten ja letzte Woche die Diskussion, wann man mit einem Open-Source-Projekt an die Öffentlichkeit gehen sollte. Eigentlich wollte ich ja noch eine Weile warten, aber irgendwie habt ihr mich doch überzeugt schon mal den ersten Prototypen zu veröffentlichen. Eigentlich war das Tool schon seit Wochen da, man hätte nur mal auf GitHub schauen müssen. Aber hier erst mal der Link: https://github.com/phphatesme/LiveTest
Da wir die Version 1.0 noch nicht erreicht haben ist alles im Fluss. Die Implementierung kann aber schon ein paar Dinge. Aber vielleicht erzählen wir noch mal ganz kurz, was das Tool können soll. In einem Satz ausgedrückt: Ich hinterlege eine Liste von URLs und LiveTest lässt eine definierte Anzahl von Tests drüberlaufen. Ein Test kann so etwas wie das Prüfen auf schließendes <body>-Tag sein. Aber auch die Kontrolle des HTTP-Status-Codes. Diese Tests und ein paar weitere existieren natürlich auch schon.
Das Tool positioniert sich also oberhalb von funktionalen Tests. Es ist für all diejenigen, die keine hohe Testabdeckung, hergestellt durch funktionale- oder Unit-Test, in ihrer Software besitzen. Es gibt einen schnellen Überblick, ob etwas kaputt ist oder nicht. Es zeigt einem nicht, was nicht funktioniert.
Wichtig für das Tool war uns, dass es besonders einfach ist eigene Tests zu verfassen und Erweiterungen zu schreiben. Ich glaube, das ist uns auch gelungen. Beide Interfaces sind relativ schlicht. Erfahrene Programmierer sollten sie intuitiv bedienen können, allen anderen werde ich die Tage eine Anleitung schreiben.
Vielleicht jetzt aber noch mal den Stand, an dem wir sind. Das Projekt ist als Rapid Prototype gestartet. Ich habe also einfach mal drauf los programmiert. Dies bedeutet, dass Unit-Tests möglichst bald nachgereicht werden müssen. Das wird wohl auch der Hauptfokus, neben der Dokumentation, in der nächsten Zeit sein. Die ersten paar Testfälle sind auch implementiert:
- Prüfen auf der (Nicht-)Vorhandensein eines Textes auf einem HTML-Dokument
- Prüfen auf die (Nicht-)Existenz eines regulären Ausdrucks auf ein HTML-Dokument
- Größe eines HTML-Dokument
- XPath-Prüfung auf ein HTML-Dokument
- Prüfen auf HTTP-Status-Code
Ist noch nicht viel, aber ein guter Anfang. Interessant bei den Erweiterungen ist wohl die Reporting-Möglichkeit. Bis jetzt können Textdokumente und HTML-Seiten (Beispiel) erstellt werden. Beides kann bei Fehlern gemailt werden. Prinzipiell ist aber alles in diesem Projekt eine Extension. So zum Beispiel auch das Hilfe-System auf der Kommandozeile.
Die Installation soll bald auf den PEAR-Installer aufbauen. Leider muss momentan noch auf eine manuelle Installation direkt aus dem Repository zurückgegriffen werden. Nach der Installation bekommt man dann mit einem Aufruf wie LiveTest --testsuite testsuite.yml
ein solches Ergebnis:
LiveTest 1.0.0 by Nils Langner & Mike Lohmann
Default Domain : http://www.example.com
Number of Tests : 4
Running: *f*f
Url : http://www.stern.de
Test : TextPresent_body
Test Class : LiveTest\TestCase\General\Html\TextPresent
Status : Failed
Message : The given text "unpresent_text" was not found.
Url : http://www.phphatesme.com
Test : TextPresent_body
Test Class : LiveTest\TestCase\General\Html\TextPresent
Status : Failed
Message : The given text "unpresent_text" was not found.
Tests: 4 (failed: 2, error: 0) - Duration: 1 second(s)
Jetzt fragen sich hoffentlich einige, wie sie helfen können. Sucht es euch einfach aus. Es sind genügend mögliche Features im Issue-Tracker. Fehler finden, Ideen haben oder Unit-Tests schreiben sind auch tolle Sachen. Feedback zum Code. Auf euch angepasste Testfälle … toll. Einfach das Tool nutzen und glücklich sein.
Es würde mich also ehrlich freuen, wenn ihr Feedback gebt, mitmacht und den Issue-Tracker nutzt. Fragen werden auch ausführlich beantwortet. Und immer dran denken, wir sind noch in einer frühen Phase, alles kann angepasst werden, damit es für eine möglichst große Zielgruppe passt.
Hmm… also so wie sich das liest erinnert es mich stark an meinen Versuch vom Wochenende, Selenium 2.0 mit der WebDriver API eine Seite über HtmlUnit zu prüfen.
@Dennis: Ähhhm … ja. Hättest mal LiveTest genommen.
Ein Use-Case, den ich mir vorstellen könnte, wäre alle Seiten einer Site auf XHTML-Konformität zu prüfen (z.B. mit HTMLTidy o.Ä.).
Wird eine Site denn auch gecrawlt oder muss man jede Seite explizit angeben? Wenn sich das Tool ähnlich wie ein Google-Bot verhalten könnte, wäre das glaube ich super praktisch.
@Jörg: Die Tidy-Geschichte ist aufgenommen. Was das Google-Bot verhalten angeht, muss ich mir mal eine Lösung ausdenken.
Auch sinnvoll:
http://www.php.net/manual/en/domdocument.relaxngvalidate.php
Ist es denn auch schon so, dass ein CI-Server (Hudson, Bamboo, ..) das batchen kann und die Ausgaben versteht?
Wie sieht es mit geschützten Seiten aus? Gibt es eine Möglichkeit sich über z.B. ein Formular zu authentifizieren, die Session Daten zu speichern und geschützte Seiten zu überprüfen?
Grundsätzlich wäre auch die Angabe einer Sitemap gut, dann hätte man schonmal einen Haufen Seiten, die man testen könnte.
@Nils: bei LiveTest habe ich aber keinen JavaScript Support 😉
@Dennis: Wir wollen aber auch bald eine Selenium-Unterstüzung haben, dann geht das auch 🙂 Der Sitemap-Punkt steht schon bei den Issues (seit ’ner Stunde aber erst).
Ich hoffe die Entwicklung geht bald weiter? Schade dass der Pear Channel offline ist… Macht euch ran!
@A. Lademann: Schau mal hier: https://github.com/phmlabs/LiveTest2