Selenium

Was ist Selenium

Selenium ist ein Open Source Werkzeug (Apache-2.0-Lizenz) zur Automatisierung von Browser-Applikationen, das seit vielen Jahren zu den bekanntesten und beliebtesten UI Testautomatisierungslösungen für Webanwendungen zählt.

Geschichte von Selenium

  • 2004: Initial herausgebracht von Jason Huggins in der Firma ThoughtWorks, unter dem ursprünglichen  Namen „JavaScriptTestRunner“. Anschließende Weiterentwicklung der Software zu dem Selenium Remote Control (RC).
    Der Name Selenium ist eher scherzhaft entstanden, als Gegenpart zu dem damaligen Marktführer in automatisierter Testsoftware – „Mercury“.
  • 2007: Simon Stewart, damas ebenfalls bei  ThoughtWorks, begann mit der Entwicklung von einem neuen Ansatz für das automatisierte Ansteuern von Browsern – den „WebDriver“.
  • 2008: Vereinigung von Selenium RC und Webdriver zu „Selenium 2.0“.
  • 2008: Simon Stewart und Jason Huggins wecheln zu Google und setzen die Weiterentwicklung des Selenium Projekts mit weiteren Kollegen bei Google fort. Ab dieser Zeit wächst das Selenium Projekt schnell und gewinnt an Popularität.
  • 2016: Release von „Selenium 3“

Funktionsweise von Selenium

Die automatisierten Tests werden mit Hilfe von den für viele unterschieldichen Programmiersprachen bereitgestellen „Selenium Language Bindings“ in der favorisierten Software-Entwicklungsumgebung geschrieben. Zum Beispiel mit C# in Visual Studio mit den dazugehörigen Language Bindings. Aktuelle Version kann immer über folgenden Link heruntergeladen werden: https://selenium.dev/downloads/

Sobald die automatisierten Tests fertig geschrieben und gestartet wurden, kontaktiert die eigene Anwendung, über den JSON Wire Protocol den ausgewählten „Selenium Brower Driver“ (z.B. Chrome Webdriver). Die Browser Driver kommunizieren mit dem echten Browser über HTTP Protokoll, und geben die von dem Test angegebenen Befehle an diesen weiter.

Mögliche Befehle wären:

  • Navigation zu einer bestimmten Seite
  • Suche nach einem Web Element mit Hilfe von Lokatoren (ID / CSS / XPath und vielen anderen)
  • Ausführung bestimmter Aktionen wie z.B. Eingabe von Text oder Klick auf Button
  • Rückgabe von Informationen von WebElementen wie z.B.: Existiert das Element? Welche CSS Klasse hat das Element? Ist das Element selektiert? Welchen Inhalt zeigt das Element?

Einsatzfelder

In erster Linie ist Selenium für die Automatisierung von Webanwendungen zu Testzwecken gedacht, kann jedoch auch für weitere operativen Aufgaben sinnvoll eingesetzt werden. So können mittels Selenium viele sich wiederholenden monotonen Aufgaben bei der Administration der  webbasierte Anwendungen autoamtisiert werden. Ebefalls findet Selenium immer stärkeren Einsatz bei Automatisierung der komplexen operativen Geschäftsprozesse mittels „Robotic Process Automation“ (RPA) Lösungen.

Vor- und Nachteile

Vorteile von Selenium

  • Open Source – riesige Community, gemeinsame Weiterentwicklung, sehr viele Blogs und Hilfestellungen, viele Einträge auf Stackoverflow
  • Keine Lizenzkosten, keine Abhängigkeit von großen kommerziellen Anbietern
  • Unterstützung durch größte IT Konzerne wie Google, Facebook, Microsoft, sowie kleinere Anbieter wie SouceLabs, BrowserStack, Applitools, PerfectoTools etc.
  • Einbindung in alle gängigen Programmiersprachen (Java, C#, JavaScript, Python, Ruby, Perl, …)
  • Breite Browser und OS Unterstützung ( FF, IE, Chrome, Safari, Windows, Linux, MacOS )
  • Effiziente Kommunikation mit Web Browsern
  • Keine physikalische Abbildung von Benutzereingaben über Maus und Tastatur in der interaktiven Session notwendig
  • Unterstützung von Headless Mode Testautomatisierung (auch in Containern)
  • Parallelisiertes Testen in gleicher OS Session möglich
  • Parallelisiertes Testen auf Remote Infrastruktur (auch in der Cloud mit Anbietern wie BrowserStack oder SauceLabs) sehr einfach
  • Sehr schnelle Ausführung im Vergleich zu anderen auf UI spezialisierten Testautomatisierungswerkzeugen (Ranorex / Silk)

Nachteile von Selenium

  • Nur zum Testen von UI Anwendungen, und zwar Web Applikationen, geeignet
  • Kein kommerzieller Support verfügbar
  • Lange Wartezeiten auf einige Bug-fixes
  • Kein Support von speziellen (z.T. veralteten) Web-Technologien wie Silverlight und Flash
  • Kein integriertes, detailliertes Reporting (zusätzliche Pakete erforderlich)
  • Tests werden programmiert, Entwickler-Skills notwendig

Verwandte Produkte

  • Selenium IDE
  • Selenium Grid
  • Protractor
  • WebDriver.io
  • Appium

Weitere Informationen

Selenium Webseite: https://selenium.dev/

Interessante Twitterkanäle:

Jason Huggins: https://twitter.com/hugs

Simon Stewart: https://twitter.com/shs96c

Jim Evans: https://twitter.com/jimevansmusic

Manoj Kumar: https://twitter.com/manoj9788