© Enkel/Shutterstock.com
Automatisiertes Testen von Weboberflächen

Selenium 2020 - wo stehen wir jetzt?


Sozialistische Staaten verfügen oft über einen Fünfjahresplan – dieser Artikel ist jedoch ein Fünfjahresupdate: 2015 wurde mit der Ambition, einen schnellen ersten Einstieg in das automatisierte Testen von Weboberflächen zu liefern, ein Einführungsartikel mit den Basics zu Selenium WebDriver geliefert [1]. Jetzt, fünf Jahre später, ist es an der Zeit, dem Platzhirsch einen erneuten Besuch abzustatten, um zu schauen, was sich geändert hat, was noch genau so wie früher ist, und mit welchen Neuerungen Entwickler*innen heutzutage rechnen sollten.

Das große Zeitalter komplexer Desktopanwendungen ist vorbei – darauf kann man sich vermutlich mittlerweile einigen. Immer mehr Anwendungen, von einfachen Adressverwaltungen bis hin zu komplexen ERP-Anwendungen oder auch Verfahren im öffentlichen Dienst, finden im Browser statt. Diese Anwendungen müssen aber ebenso getestet werden – oftmals findet das noch manuell durch große Teams von Tester*innen statt, aber auch immer mehr durch das Aufsetzen automatisierter Testdurchführung. Einige wichtige Argumente sprechen nach wie vor für die Automatisierung von UI-Tests, unter anderem:

  • UI-Tests lassen sich (im Vergleich zur kohlenstoffbasierten Variante) in hoher Geschwindigkeit ausführen.

  • Sie lassen sich auch in eine CI/CD Pipeline einbinden.

  • Sie lassen sich beliebig oft wiederholen (Regression) und es ist garantiert, dass die Testschritte immer nach dem gleichen Schema ablaufen.

  • Ein „kleiner Integrationstest“ quer durch alle Schichten der zu testenden Anwendung wird ermöglicht, von der Weboberfläche über Services und Datenbankanbindung bis weiter hinab in die Datenbank und wieder zurück.

Natürlich darf man auch nicht vergessen, dass all diesen Argumenten auch einige Punkte gegenüberstehen, zum Beispiel nicht unerhebliche Implementierungs- und Wartungsaufwände. Man muss sich die Frage stellen, wie wichtig es z. B. noch ist, manuelle Tests durch automatisierte zu ersetzen, wenn eine Anwendung entweder a) durch eine neue Anwendung ersetzt werden soll, oder b) eine komplett neue Oberfläche in Kürze bereitgestellt wird. Oftmals ist es auch aus Zeitgründen gar nicht möglich, eine umfangreiche UI-Testautomatisierung zu etablieren. Anmerken soll man natürlich auch, dass es möglicherweise aus politischen Gründen innerhalb eines Projekts gar nicht gewünscht sein könnte, manuelle Tests zu automatisieren, denn dadurch würde sich auch der Bedarf an (manuellen) Tester*innen verringern, was möglicherweise heißt, dass ein Auftragnehmer künftig nur noch weniger abrechnen kann …

Nichtsdestotrotz – für den automatisierten Test von Weboberflächen bestehen unter anderem folgende Anforderungen:

  • Es sollen verschiedene Browser unterstützt werden können (sofern nicht exakt spezifiziert wurde, dass die zu testendende Anwendung nur für den Aufruf durch einen expliziten Browser verwendbar sein soll).

  • Das asynchrone Verhalten von Webseiten soll in den automatisierten Tests berücksichtigt werden können. Statische Webseiten sind Relikte aus den 1990ern, heutzutage verändern sich einzelne Komponenten einer Webanwendung, ohne dass die ganze Seite neu geladen werden muss – teilweise auch in der Form, dass Benutzer*innen bisweilen gar nichts davon mitbekommen.

  • Regressionstests sollen ermöglicht werden. Eine Webseite soll nach jeder Änderung zu jeder Zeit erneut getestet werden können, um nachzuweisen, dass bestehende Funktionalitäten auch nach einer Änderung Bestand haben.

Diese Liste lässt sich beliebig fortsetzen. Automatisiertes Testen ist einfach aus der modernen Softwareentwicklung nicht mehr wegzudenken.

Selenium. Selenium?

Bei Selenium (Kasten: „Selenium 4“) handelt es sich um eine freie Software unter Apache-2.0-Lizenz. Selenium unterteilt sich zunächst in Selenium WebDriver, Selenium IDE und Selenium Grid. Selenium WebDriver ermöglicht ganz konkret das automatisierte Testen von Webanwendungen und kann in mehreren Sprachen verwendet werden. Neben Java sind das JavaScript, Python, C#, Ruby und Kotlin. Für die Beispiele in diesem Artikel wird Selenium WebDriver in der Version 3.141.59 verwendet.

Selenium 4

Zum Zeitpunkt der Erstellung dieses Artikels war Selenium 3 das Major-Release. Selenium 4 ist jedoch schon am Horizont zu erblicken und durch diverse Alphaversionen gegangen. Grundlage dafür ist die vollständige Adaption des W3C-Protokolls. In dieser neuen Fassung wird es einige umfangreichere Änderungen geben, u. a. auch am API. Ebenso wird es umfangreiche Änderungen bei Selenium IDE (eine Stand-alone-Neuentwicklung) und Selenium Grid (Stichwort hier: Docker) geben.

Selenium IDE

Selenium IDE ist ein Browser-Plug-in für Chrome und Firefox (bis Version 55) in Form eines Capture-and-Replay-Tools. Testfälle werden aufgezeichnet und können im Anschluss wieder ausgeführt werden. Hierzu sind im Grunde keine Programmierkenntnisse erforderlich und das Tool kann dafür verwendet werden, Testfälle zu definieren, um sie später mit Selenium WebDriver programmatisch umzusetzen. Selenium IDE funktioniert seit August 2017 nicht länger unter Firefox.

Selenium Grid

Selenium Grid ermöglicht es, parallel WebDriver-Tests auf mehreren Maschinen laufen zu lassen. Das sorgt dafür, dass Testsuites deutlich schneller ausgeführt werden, als wenn man sie sequenziell laufen lässt.

Selenium WebDriver bietet geneigten Entwickler*innen eine leichte Erlernbarkeit, die Verfügbarkeit für verschiedene Programmiersprachen, die Unterstützung gängiger Browser sowie die Testausführung in eigenständigen Browserinstanzen. Damit realisierte UI-Tests rufen den entsprechenden spezifisch für einen Test zu verwendenden Browser direkt auf und nutzen dabei die jeweilig bereitgestellte Unterstützung für Automatisierung (Abb. 1). Grundsätzlich imitiert Selenium WebDriver das Verhalten menschlicher Nutzer*innen bzw. ihre Interaktion mit dem Testobjekt.

monschau_selenium_1.tif_fmt1.jpgAbb. 1: Chrome deutet an, von einer Automatisierung geöffnet wo...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang