Selenium Guide, Teil 1: Sinnvolle Tests erstellen
Geschrieben am 04. Feb 2009 von Cem Derin

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:
- Sinnvolle Tests erstellen
- Selenium Remote Control nutzen
- 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.
#001
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.