Selenium ist aktuell ja Quasi-Standard, wenn es um das funktionale Testen von Webseiten geht. Aber ist das Tool dennoch universell und für Jeden geeignet? Wer Selenium im Einsatz hat, weiß auch, dass nicht alles Gold ist, was glänzt (oder kostenlos ist).
Keine Frage, Selenium ist ein tolles Produkt und das nicht nur weil es Open Source und somit kostenlos ist. Es hat eine Reife erreicht, in der es keine Features missen lässt. Diese Kombination ist auch der Grund, warum es für tausende Projekte im Einsatz ist.
Der Einsatz von Selenium zum Web Testing birgt aber auch einige Hürden, die wir mit der Entwicklung von Leankoala abgebaut haben. Zum Beispiel diese vier Dinge, um die Du dir mit einer guten Alternative zu Selenium keine Sorgen mehr machen musst.
Infrastruktur
Selenium bietet die Möglichkeit alle Tests lokal auf dem eigenen Computer aufzuzeichnen und mit allen installierten Webbrowsern wieder abzuspielen. Die ersten Tests laufen somit innerhalb von Minuten. Will man über die Tests aber eine ernsthafte Testabdeckung für sein Projekt etablieren ist dies längst nicht ausreichend. Tests sollten nicht lokal bei einem Entwickler oder Tester laufen sondern zentral, so dass jeder aus dem Projektteam sie ausführen kann. Will man dies erreichen muss eine Infrastruktur aufgebaut werden, die für kleinere Projekte über-proportioniert ist und auch technisches Fachwissen voraussetzt.
Will man das Thema funktionale Testabdeckung ernsthaft betreiben, braucht man mindestens drei Komponenten: Den Selenium-Server, einen oder mehrere Browser und einen Continuous Integration Server, der die Tests plant und durchführt. Der Selenium-Server ist hierbei das kleinste Problem, da es sich um eine Java-Anwendung handelt, die quasi auf allen gängigen Betriebssystemen problemlos installiert werden kann. Die Installation eines zentralen Browsers hingegen kann sich als schwieriger erweisen. Zentral bedeutet, dass er auf einem Server zur Verfügung stehen muss. Ein Server bedeutet aber auch meistens, dass kein Window-Manager installiert ist, der aber benötigt wird. Hier kann man mit Xvfb oder dem passenden Docker-Container arbeiten. Das heißt aber auch immer, dass man sich in eine zusätzliche Technologie einarbeiten muss. Der ebenfalls benötigte Continuous Integration Server, der dafür sorgt, dass die Tests zum richtigen Zeitpunkt ausgeführt werden und bei Fehlern alarmiert wird, kann durch Open Source Projekte gestemmt werden. Die bekanntesten kostenlosen Vertreter sind Jenkins und GitLab CI, wobei Jenkins zumindest optisch in die Jahre gekommen ist. Beide Werkzeuge sind gut dokumentiert und können problemlos von erfahrenen Personen aufgesetzt werden.
Die Selenium-Infrastruktur aufzusetzen ist sicherlich kein Hexenwerk, trotzdem ist es vom lokalen Ausführen der Tests bis hin zum kontinuierlichen Überprüfen eines Web-Projektes ein relativ langer Weg, der ohne erfahrene Kollegen ziemlich steinig werden kann.
Tests gehen kaputt
Selenium bietet mit der Selenium IDE, einem Firefox-Plugin, die Möglichkeit ganz einfach Tests aufzuzeichnen. Diese können danach immer wieder ausgespielt werden. Wie alle “Capture & Replay”-Werkzeuge besteht hier das Problem, dass solche Tests häufig kaputt gehen, da sie nicht sonderlich stabil sind. Ändert man Kleinigkeiten auf der Webseite, so kann es sein, dass auf einmal alle Tests anschlagen. Dies liegt daran, dass Selenium häufig über sogenannte X-Path-Selektoren Elemente findet und diese können sich über die Zeit verändern. Auch wenn es um die Wiederverwendung von Tests geht, ist es schwer mit der IDE glücklich zu werden. Auch hier gilt, will man das Testen von Webseiten mit Selenium ernsthaft betreiben, muss man einen Schritt weiter gehen. Testfälle dürfen nicht aufgezeichnet, sondern müssen programmiert werden. Hier gibt es in (fast) allen Sprachen geeignete Bibliotheken, die einem helfen. Wir haben im PHP-Umfeld beispielsweise mit Codeception gute Erfahrungen gemacht. Damit Tests wartbar bleiben muss hier aber ebenfalls Erfahrung aufgebaut werden.
Nicht alles sind Klickstrecken
Selenium ist wunderbar dazu geeignet Klickstrecken abzubilden. Hier zeigt es ganz sicher seine größte Stärke. Für viele ist Selenium jedoch das einzige Testwerkzeug, das sie im Einsatz haben. Und wie es so üblich ist: “Wenn man nur einen Hammer hat, ist jedes Problem ein Nagel”. Selenium wird also für jedes Problem eingesetzt. Betrachten wir zum Beispiel mal einen Shop und untersuchen die notwendigen Testfälle, die man für ruhige Nächte benötigen würde. Viele dieser Tests sind keine Klickstrecken, sondern einfache Eigenschaften, die es zu überprüfen gilt. Klar ist die letzte Meile, also der Warenkorb und der Kauf, in einem Onlineshop wichtig. Aber bevor der Kunde überhaupt soweit kommt, muss viel korrekt funktionieren. So wird man sicherlich überprüfen, ob überhaupt ein Preis auf der Produktseite vorhanden ist oder ein Bild angezeigt wird. Es wäre auch ratsam zu überprüfen, dass auf einer Kategorieseite mindestens X Artikel vorhanden sind. Diese Tests können mit Selenium erstellt werden. Man kann auch mit Kanonen auf Spatzen schießen. Für solche Fälle muss und sollte nicht extra die behäbige Maschinerie Selenium angeworfen werden. Dazu gibt es einfachere, schnellere und stabilere Lösungen wie Leankoala.
Browser werden sich immer ähnlicher
Ein weiterer Vorteil von Selenium ist dessen Bedienung standardisierter Schnittstellen. Das führt dazu, dass man fast jeden bekannten Browser damit fernsteuern kann. Vor fünf Jahren war dies ein absolutes Muss im Testen. Zu unterschiedlich haben sich IE, Firefox und Chrome verhalten. Heutzutage sind diese Unterschiede allerdings kaum noch vorhanden oder werden durch eingesetzte Bibliotheken schon weg abstrahiert. In großen Projekten kann es weiterhin sinnvoll sein, viele Browser auszuprobieren. Für die meisten ist dies jedoch zu viel des Guten.
Fazit
Wie der Lean Tester empfiehlt: Testet zuerst das Wichtige und das möglichst schlank. In diesem Sinne ist Selenium ist ein tolles und hilfreiches Werkzeug, wenn es um Klickstrecken geht. Es darf nur nicht vergessen werden, dass der Einsatz mit sehr viel Aufwand in Testerstellung, Testwartung und dem Betreiben der Testinfrastruktur verbunden ist. Wie sich Selenium und Leankoala im Einsatz für verschiedene Web-Projekte verhalten, haben wir Euch auch in unserer Leankoala-Akademie genauer beschrieben.