Selenium – Buzz, Hype oder «here to stay»?
Selenium ist heute aus der Automatisierung von Web & Mobilen Anwendungen nicht mehr wegzudenken. Michael Palotas erklärt, weshalb.
Selenium ist heute aus der Automatisierung von Web- und mobilen Anwendungen nicht mehr wegzudenken. Immer mehr Unternehmen entscheiden sich für Selenium, entweder als zusätzliches Tool-Set oder aber, um vorhandene kommerzielle Lösungen abzulösen.
In diesem Artikel werden wir beleuchten, warum Selenium so erfolgreich ist und warum auch viele kommerzielle Toolanbieter mittlerweile Selenium in ihren eigenen Tools unterstützen.
Was ist Selenium?
«Selenium Automates Browsers» – so steht es auf der Selenium Homepage. Genau genommen ist Selenium eine Open Source Library – die verschiedene Programmiersprachen unterstützt –, um Browser zu steuern und das darunterliegende Document Object Model (DOM) abzufragen. Selenium kann alle gängigen Browser (Internet Explorer, Edge, Firefox, Chrome, Safari etc.) steuern, sodass ein Test nur einmal geschrieben werden muss und dann auf unterschiedlichen Browsern ausgeführt werden kann.
Was ist Selenium nicht?
Manche kommerzielle Tools bieten Funktionalitäten wie Test-Case-Management, Test-Daten-Generierung, Reporting etc. Selenium selbst bietet diese Funktionen nicht. Jedoch lässt sich Selenium sehr einfach mit anderen – auf diese Tasks spezialisierten – Tools integrieren. Dadurch kann hier eine gleichwertige Funktionalität erreicht werden, mit einer wesentlich höheren Flexibilität und Anpassungsfähigkeit.
Der Open-Source-Ansatz
Oft werden Open-Source-Tools (z.B. Selenium) mit kommerzieller Test-Software verglichen. Die beiden Ansätze sind in der Regel nicht vergleichbar. Open-Source-Tools haben keine Support-Hotline oder SLAs, dafür aber – wie im Falle von Selenium – eine riesige Community, die das Tool weitertreibt und Fragen beantwortet. Die Antwortzeiten der Community sind oft schneller als bei kommerziellen Anbietern (jedoch nicht vertraglich festgehalten).
Ebenso haben kommerzielle Test-Tools den Ansatz, eine Komplettlösung zu liefern, wohingegen sich Open-Source-Tools in der Regel auf eine Sache fokussieren (z.B. Steuerung des Browsers). Andererseits lassen sich Open-Source-Tools sehr einfach mit anderen Tools integrieren, was bei kommerziellen Tools eher nicht der Fall ist, weshalb diese eher eine monolithische Lösung darstellen.
Wer sind die prinzipiellen Nutzer von Selenium und welche Skills werden benötigt?
Selenium-Tests werden in einer unterstützten Programmiersprache (z.B. Java, JavaScript, C#, Ruby, Python, Perl, PHP) programmiert. Daher sind die primäre Benutzergruppe von Selenium Entwickler oder technisch orientierte Tester. Im Zuge der Transformation hin zur Agilität und DevOps ist es essentiell für Softwareentwickler, auch automatisierte Tests zu schreiben. Dies wird ihnen dadurch extrem vereinfacht, da sich Selenium über die Language Bindings / Unterstützung von unterschiedlichen Programmiersprachen direkt in die Welt der Softwareentwickler integrieren lässt. D.h. es wird kein separates Tool für die Test-Automatisierung benötigt, sondern der Automatierungscode lebt in der gleichen Code-Basis wie die Applikation auch. Aufgrund des programmatischen Ansatzes sind Software-Development-Kenntnisse essentiell für die Arbeit mit Selenium.
Selenium Ecosystem
Selenium hat ein riesiges Ökosystem. Viele Open-Source- (z.B. Protractor, Nightwatch) sowie kommerzielle Tools nutzen das Selenium-Protokoll als Basis. Neben der Möglichkeit, die Tests direkt über die jeweiligen Language Bindings zu programmieren, gibt es auch Tools (z.B. Protractor), die sich nahtlos mit dem jeweiligen Frontend Framework integrieren und dafür speziellen Support bieten.
Selenium, Continuous Integration, DevOps und Skalierbarkeit
Ein grosser Vorteil von Selenium ist dessen Skalierbarkeit, die es erst ermöglicht, Continuous Integration / Continuous Delivery / DevOps in einem Unternehmen zu leben. Selenium-Tests können über Selenium Grid parallel auf unterschiedlichen Browsern ausgeführt werden. Dadurch reduziert sich die Ausführungszeit gegenüber sequentieller Ausführung massiv. Andererseits erhöht sich die Testabdeckung mit den von den jeweiligen Kunden eingesetzten und relevanten Browsern.
Solche Selenium-Grid-Infrastrukturen werden einerseits als Cloud-Lösungen (z.B. Saucelabs, Browserstack) oder als On-premises-Lösung (https://seleniumbox.com) für den Banken- und Finanzbereich und sicherheitsrelevante Unternehmen angeboten.
Diese Selenium-Grid-Infrastrukturen können über jegliche Quelle, die das Selenium-Protokoll unterstützt mit Tests beschickt werden. Es kann somit die Developer-Welt einfach mit der kommerziellen Test-Tool-Welt kombiniert werden, sodass auch hier ein nachhaltiger Investitionsschutz besteht.
Am Beispiel von Selenium Box sieht dies schematisch wie folgt aus:
W3C Standard
Selenium ist heute schon der De-facto-Standard für Web- und Mobile-Automatisierung. Weiterhin wird das Selenium-Protokoll aktuell vom W3C Konsortium standardisiert. Dies bedeutet einen Investitionsschutz für Benutzer, da die Standardisierung eine grosse Zukunftssicherheit bietet.Ebenso unterstützen immer mehr kommerzielle Tool-Hersteller das Selenium-Protokoll (z.B. Ranorex, Tosca), sodass auch hier ein klarer Trend in Richtung Standardisierung erkennbar ist.
Selenium in der Zukunft
Neben der Möglichkeit, Web- und Mobile-Anwendungen mit Selenium/Appium zu automatisieren, gibt es mittlerweile auch WinAppDriver von Microsoft, mit dem man auf Basis des Selenium-Protokolls auch traditionelle Windows-Applikationen automatisieren kann.
Fazit
Während es durchaus eine grosse Begeisterung um Selenium gibt, ist Selenium an sich kein Hype. Selenium gibt es seit über 10 Jahren und durch die W3C-Standardisierung wird es zum festen Bestandteil von Test-Automatisierung von Web-, Mobile-, Windows-Applikationen und in Zukunft auch IoT etc.
Die meisten kommerziellen Tool-Anbieter bieten ebenfalls Support für Selenium an (z.B. Ranorex, Tosca), sodass das Thema auch hier fest für die Zukunft verankert ist. Für die Arbeit mit Selenium werden Skills in der Softwareentwicklung benötigt. Daher ist Selenium die natürliche Wahl für Softwareentwickler, vor allem durch die Unterstützung der gängigsten Programmiersprachen. Tests können in der gleichen Programmiersprache entwickelt werden wie auch der Applikationscode.