// der php hacker

// archiv

Selenium Guide, Teil 1: Sinnvolle Tests erstellen

Geschrieben am 04. Feb 2009 von Cem Derin

selenium_shot

Pekka kommt nicht mit Selenium klar, und auch sonst scheinen Frontend- bzw Webtests kein Thema zu sein. Entweder fahren viele Entwickler die Schiene “Geht eh nicht vernünftig” oder blenden die Problematik komplett aus. Da aber testgetriebene Entwicklung ist kein Buzzword sondern ein wichtiges Dogma ist, dass auch in Deutschland durchaus Einzug in den professionellen Entwickleralltag gefunden hat,  ist es nur konsequent die Benutzeroberfläche einzubeziehen. Wie man das mit Selenium machen kann, möchte ich in einer kleinen Artikelreihe erlätern. Sie wird aus folgenden Artikeln bestehen:

  1. Sinnvolle Tests erstellen
  2. Selenium Remote Control nutzen
  3. Tests automatisieren und in Unittest-Frameworks einbinden

Vorbereitungen

Unter Zuhilfenahme der Selenium-IDE (ein Firefox-Plugin) lassen sich Tests angenehm schnell “aufnehmen & abspielen”, speichern, archivieren, weiterreichen. Diese also schnell installieren, einen Ordner “tests” irgendwo auf unserem Rechner anlegen und dann kann es auch schon losgehen.

Was testen?

Was genau man testet hängt in erster Linie von der Applikation ab. In der Regel sollte man Workflows innerhalb seiner Applikation testen. Dabei sollte darauf geachtet werden, bewusst ungültige Daten einzugeben und auf das Erscheinen der Fehlermeldungen zu prüfen. Selenium bietet die möglichkeit, den Seitentitel bei jedem Aufruf einer Seite direkt in den Test aufzunehmen und zu prüfen. Diese Option kann man aktivieren, wenn der Seitentitel stark an den Content gekoppelt ist.

Tests strukturieren

Es ist unerlässlich, seine Tests sauber zu strukturieren. Am besten teilt man diese in kleine thematisch zusammenhängende Häppchen auf. Vor allem aber sollten die einzelnen Tests selbstständig auf die Seite navigieren, von der sie starten. Darüber hinaus müssen die Tests in sich geschlossen sein, um eine Kettenreaktion von Fehlschlägen zu vermeiden.

Tipps & Kniffe

Es empfiehlt sich, seine Tests immer direkt einmal durchlaufen zu lassen. Dabei wird euch schnell auffallen, dass Selenium sich manchmal etwas zickig anstellt. Da wird sporadisch ein Link nicht gefunden, der eindeutig da ist, Eingaben können nicht gemacht werden und Textprüfungen schlagen fehl. In den meisten Fällen muss man dann einfach nur die Geschindigkeit etwas herunterdrehen. Ich habe gute Erfahrungen mit einer 2/3 Geschwindigkeit gemacht. Je nach Komplexität der Abfragen solltet Ihr das noch weiter minimieren. Sollte das immer noch nichts bringen, solltet ihr einen Blick auf die Befehle vor dem Fehlschlag werfen. Häufig steht dort ein “click” Befehl. Ersetzt diesen gegen einen “clickAndWait“, und das Problem verschwindet in der Regel wieder.

Und nun?

Erstellt nun eine (oder mehrere) Testsuite(s) für eure Applikation. Lasst diese einfach mal nach ein paar Änderungen gegen eure Applikation testen. Ihr werdet feststellen, dass sich eure Applikation an den unmöglichsten stellen stark anders als zuvor verhält.

Im nächsten Teil werde ich dann erklären, wie man die Selenium Remote Control nutzen kann.

Geschrieben in Testing 3 Kommentare

#001
06. Feb 2009
Pekka

Nice! Werde ich die TAge mal durchspielen wenn ich dazu komme. Bei oberflächlichem Überfliegen schneidet es aber nicht die Punkte an, an denen ich nicht weiterkam. Ich schaue mal und melde mich hier zurück.

#002
11. Feb 2009

[...] mich glaube ich zu oft. Nebenbei erwähnt: An dieser Stelle sollte eigentlich der 2. Teil des Selenium Guides stehen. Leider musste ich feststellen, dass die PHP-Treiber ein wenig schlampig gepflegt werden und [...]

#003
12. Feb 2009

[...] Sinnvolle Tests erstellen [...]

// kommentieren

// senden
theme von mir, software von wordpress, grid von 960 grid system. funktioniert in allen browsern, aber der safari bekommt das mit der schrift am schönsten hin.