Für Softwarequalität ist automatisiertes Testing ausschlaggebend. Natürlich kann man mit Phpunit hervorragend seine PHP-Applikation testen. Aber ein richtiger Funktionaler Frontend-Test ist natürlich sehr ergebnisorientiert und liefert eine hohe Testabdeckung. Natürlich ist das Debbuging der Applikation etwas anders, da man natürlich keinen Hinweis auf den tatsächlichen Bug in der Applikation erhält. Es sein denn es handelt sich um einen 500-Error. Der sollte aber schon viel früher entdeckt werden. Kann aber trotzdem erst im Live-Betrieb auffallen und so auch mit den unten aufgeführten DalekJS-Tests gefunden werden.
Clean Code Frontend Testing mit DalekJS
Mit der Hilfe von DalekJS-Frontend-Tests ist es möglich seine Applikation auf Herz und Nieren zu testen. Die eigentliche Webseite ist ja schließlich das fertige Produkt der gesamten PHP-Applikation. Also ein erfolgreicher Rendering-Prozess. Mit Hilfe von DalekJS kann man hier sehr viele individuelle und aussagekräftige Testergebnisse erzielen. Die Überprüfung von HTML-Elementen und ihren CSS-Attributen. Die Funktionalität von Mouseover-Effekten. Die komplette Überprüfung von Formularvorgängen und noch vieles mehr.
DalekJS sehr einfache Installation
DalekJS ist eine Node-Applikation. Basiert also auf NodeJS. Auf der DalekJS-Internetseite ist ein schnelles Setup. Auf einem Mac mit installierten Node ist es sehr schnell installiert. Auf Windows kenne ich mich nicht aus, soll aber gehen. Ansonsten kann man natürlich auch eine Vagrant-Box nutzen.
1. Create a package.json
1 2 3 4 5 |
{ "name": "myCssTardis", "description": "Is awesome", "version": "0.0.2" } |
2. Install DalekJS
1 2 |
$ npm install dalek-cli -g $ npm install dalekjs --save-dev |
3. Einfacher DalekJS Test
1 2 3 4 5 6 7 8 |
module.exports = { 'Page title is correct': function (test) { test .open('http://google.com') .assert.title().is('Google', 'It has title') .done(); } }; |
4. DalekJS Test ausführen
1 2 3 4 5 6 7 8 9 |
$ dalek test/*.js Running tests Running Browser: Phantomjs RUNNING TEST - "Page title is correct" ▶ OPEN http://google.com ✔ TITLE It has title ✔ 1 Assertions run ✔ TEST - "Page title is correct" SUCCEEDED 1/1 assertions passed. Elapsed Time: 2 sec |
Sinnvolle DalekJS-Tests
Webseiten sind natürlich auch immer etwas einzigartiges. Und wie schon gesagt, braucht man die sicher nicht, damit man grobe PHP Fehler findet. Das passiert ja schon beim Entwicklungsprozess, bzw. fällt schnell im Live-Betrieb auf. Solche Fehler müssen eher abgefangen und entdeckt werden. Hier sind Unit-Tests mit Phpunit natürlich die richtige Software. Bei alten PHP-Applikationen kann es aber schnell ein extrem hoher Aufwand werden. Das Setup ist eventuell ein einziger Special-Case und die Logik keine objektorientierte. Hier ist auch schon ein einziger DalekJS-Test, der die 5 wichtigsten URLs auf Header-Status 200, also OK, kontrolliert. Hier einmal einige Verschläge, die man pauschal auf ausgewählten Seiten durchführen kann. Besonders gut ist es natürlich, wenn man die Urls auch noch über das Menu der eigentlichen Webseite aufruft.
- Header-Status 200 OK
- Ist der Title gesetzt und enthält Keywords
- Meta Description vorhanden
- Meta Index Wert follow / notfollow
- Menu vorhanden – mehr als X-Items
- Footer vorhanden
- Content-DIV not empty
Diese Tests haben schon eine gute funktionale Abdeckung. Sie geben zwar nicht unbedingt Aufschluss über die Herkunft bzw. Ursache eines Fehlers, spüren ihn aber zuverlässig auf. Automatisierte Tests sind ein ganz wichtiger Schlüssel für gute Software-Qualität. Die oben genannten Tests sind ein guter Einstieg.
Weiterführende Links:
DalekJS Tutorial mit sehr guten Beispielen
Author Roland Golla Clean Code Developer