am 25. September 2009
Nachdem wir gestern einen kleinen Abstecher – ich hoffe ihr habt den Tag ausgehalten – in die Politik gemacht haben, wollen wir uns heute wieder der Webentwicklung widmen. Vorab nur noch ein kleiner Tipp: Schaut euch mal Ralf Eggerts neuen Blog an. Könnte interessant sein, wenn ihr ein wenig mit dem Zend Framework rumhantiert.Heute geht es mal wieder um eine Projektidee, bei der ich mir noch nicht ganz so sicher bin, ob es eine gute Idee ist, aber ich denke mal zusammen werden wir schon was Schönes daraus machen. So erstmal zu dem Problem, dass wir lösen wollen. Wir haben eine Webseite, die bekommt Teile des Inhalts aus einem CMS und auch Teile werden einfach berechnet. Jetzt wollen wir feststellen, ob die Webseite alle wichtigen Inhalte auch anzeigt oder ob vielleicht eine Kommentarbox fehlt oder der Title-Tag nicht gefüllt ist. Funktionale Tests zum Beispiel mit Selenium sind nicht immer nützlich, denn manchmal hat man keine stabilen Seiten und muss sehr unscharfe Tests entwerfen. Ein Test wie “der Artikel muss mindestens 500 Zeichen lang sein” ist mit Selenium nicht so einfach, besonders, wenn man den Testfall dann später nach PHP exportiert (da fällt mir übrigens spontan ein Artikel für Montag ein). Ein weiterer Test könnte heißen “ist das Wireframe - also das Grundgerüst- korrekt aufgebaut”. Mit Selenium die Hölle, da ich wirklich viele Tests schreiben muss.
Meine Idee wäre jetzt eine Sprache zu nehmen, die eine Webseite mit ihren Eigenschaften beschreibt. Als Grundlage dient natürlich HTML, erweitert mit ein paar Attributen. Ich versuche mich einmal aneiner Definition:
<div id="menu" wfc:optional="true">
<div class="menu_element" wfc:minOccur="4">
</div>
</div>
<div id="content" wfc:minLength="500">
</div>
Jetzt könnte man ganz einfach das Tool so aufbauen, dass hinter jedem Attribut ein Test steht, der dann prüft, ob die gewünschte Bedingung erfüllt wird. Als Parameter bekommt der Test dann – wie beim PHP_CodeSniffer- einen Zeiger auf das aktuelle “div” (oder was auch immer). Jetzt wo ich so darüber nachdenke, könnte man bestimmt auch sehr viel über XSDs erledigen. Wobei ich glaube, dass dort die Syntax zu komplex bei wird, um es wirklich zu genießen.
Auf jeden Fall würde man dann so ein Schema nehmen können und gegen jede beliebige Webseite validieren. Leider wäre das System ähnlich instabil, wie funktionale Tests mit Selenium, da sich so ein Wireframe heutzutage gerne mal ändert. Aber vielleicht muss man da dann strenger mit Änderungen umgehen.
Ich denke, es kann schon nützlich sein, so ein Tool zur Verfügung zu haben. Besonders würde es an vielen Stellen Selenium ersetzen, das ich für eines der besten und auch gleichzeitig schrecklichsten Tools der letzten Zeit (und zu der Aussage will ich mindestens einen Kommentar sehen, der Autor weiß schon, dass er gemeint ist) halte.