Selenium
Selenium ist ein Framework für automatisierte Softwaretests von Webanwendungen,[2] die von einem Programmiererteam der Firma ThoughtWorks entwickelt und als freie Software unter der Apache-2.0-Lizenz veröffentlicht wurde. Es ist ein weit verbreitetes Werkzeug[3][4] und zählt zu den bekanntesten quelloffenen Testwerkzeugen.[5]
Selenium
| |
---|---|
Basisdaten
| |
Entwickler | ThoughtWorks |
Erscheinungsjahr | 2004 |
Aktuelle Version | 4.25.0[1] (20. September 2024) |
Betriebssystem | Microsoft Windows, Linux, macOS, Solaris, FreeBSD und andere Unix-Varianten (basiert auf Java) |
Programmiersprache | Java |
Lizenz | Apache-Lizenz 2.0 |
selenium.dev |
Mit Selenium ist es möglich, Interaktionen mit einer Webanwendung aufnehmen zu lassen und diese Tests automatisiert beliebig oft zu wiederholen. Es kann vor allem Entwicklern von Webanwendungen sehr viel Tipparbeit abnehmen – beispielsweise beim Ausfüllen von Webformularen – und macht das Testen dadurch schneller, flexibler und verlässlicher.
Selenium basiert rein auf HTML und JavaScript. Für einen schnellen Einstieg kann direkt die Selenium-IDE z. B. als Firefox-Add-on installiert und getestet werden: Der Benutzer interagiert nur mit Firefox, Selenium nimmt den Test auf und spielt ihn wieder ab.
Geschichte
BearbeitenDie Entstehung von Selenium begründete Jason Huggins 2004, als er ein internes Programm zum Testen von Webseiten, bei seiner Firma ThoughtWorks, schrieb. Im Laufe der Zeit schlossen sich immer mehr Mitarbeiter von ThoughtWorks seiner Arbeit an, bis schließlich Paul Hammant dem Team beitrat und die Entwicklung des Programms in die Richtung des heutigen „Selenium Remote Control“ (RC) leitete.
2007 wechselte Huggins zum Softwarekonzern Google, wo er die Weiterentwicklung und die Fehlerausbesserung des Programms zusammen mit anderen Programmierern vorantrieb. Zur gleichen Zeit entwickelte Simon Stewart bei ThoughtWorks die Browsersteuerung Webdriver. Da es für die Entwickler beider Projekte nicht sinnvoll erschien, zwei separate Projekte voranzutreiben, beschlossen sie die beiden Projekte zu „Selenium Webdriver“ oder „Selenium 2.0“ zu vereinen.
2008 entwickelte Philippe Hanrigou „Selenium Grid“, welches erlaubt, mehrere Selenium-Instanzen gleichzeitig auf einer unbegrenzten Anzahl an Rechnern laufen zu lassen. Dies führte dazu, dass die Ausführungszeit für große Teststrukturen dramatisch verkürzt wurden.
Der Name Selenium entstand aus einer scherzhaften Bemerkung von Huggins, der in einer E-Mail seine Mitbewerber Mercury damit verspottet, dass er erwähnt, dass eine Quecksilbervergiftung (mercury poisoning) durch die Einnahme von Selen (selenium) geheilt werden kann.
Versionen
BearbeitenSelenium 3
BearbeitenDie finale Version 3.0 ist seit dem 13. Oktober 2016 verfügbar. Dort sind unter anderem folgende Änderungen oder Neuerungen enthalten:
- Java
- Minimale Version ist Java 8.
- WebDriver-Nutzer
- Fehlerkorrekturen und einfaches Update von Version 2.x möglich.
- Selenium-Grid-Nutzer
- Fehlerkorrekturen und einfaches Update von Version 2.x möglich.
- WebDriver-APIs
- Nur diese APIs werden noch unterstützt.
- Selenium-RC-APIs
- Keine Unterstützung mehr; Teil eines „legacy“-Pakets.
- Firefox-Unterstützung
- Ab Firefox 47.0.1 wird Mozillas GeckoDriver benötigt.
Bestandteile
BearbeitenSelenium Core
BearbeitenDas Core-Modul enthält die komplette Basisfunktionalität von Selenium, also das Testbefehl-API und den TestRunner. Unter Verwendung des Core-Modules kann die TestRunner.html
-Webseite mit verschiedenen Browsern geöffnet werden. Dadurch werden Kompatibilitätstests mit verschiedenen Browsertypen möglich.
Selenium IDE
BearbeitenSelenium IDE ist ein Add-on für Google Chrome, Microsoft Edge und Mozilla Firefox,[6] mit dem es möglich ist, direkt im Browser durch die Interaktion mit einer Webanwendung Testfälle aufzunehmen und diese im Browser wieder abzuspielen. Neben der reinen Capture-Replay-Funktionalität lassen sich Überprüfungen mittels verify und assert einbinden. Zudem wird das schrittweise Abspielen von Testfällen, das Setzen von Breakpoints zur Überprüfung der Testfälle, und die Wiederverwendung von geteilten Testabläufen unterstützt. Einzelne Testfälle lassen sich zu Testsuites kombinieren.
Selenium Remote Control (RC) (veraltet)
BearbeitenRC ist ein veraltetes[7] Modul, das eine eigene Server-Instanz in Form eines Proxys bereitstellt. Dieser Selenium-Server wird von einem Selenium-Client-Treiber ferngesteuert. Dies kann in unterschiedlichen Programmiersprachen geschehen, wie z. B. in Java, .NET, Perl, PHP, Python, Ruby. Bei Java lassen sich diese Testfälle beispielsweise mittels JUnit oder TestNG ausführen. Es ermöglicht die Testautomatisierung von GUI-Tests in Kombination mit kontinuierlicher Integration.
Mit dem Release von Selenium 2 wurde Selenium RC von Selenium WebDriver abgelöst und als veraltet gekennzeichnet,[8] mit Release von Selenium 3 wurde RC in ein „legacy“-Paket verschoben und steht auf der Hauptseite des Projekts nicht mehr zum Herunterladen zur Verfügung.[7]
Selenium WebDriver
BearbeitenSelenium WebDriver ist der Nachfolger von Selenium Remote Control. Er akzeptiert Befehle (in Selenese oder über das Client-API) und leitet sie an einen Browser weiter. Eine Besonderheit bildet HtmlUnit. Ab Version 3.0 ist HtmlUnit nicht mehr Bestandteil des WebDrivers. Dies ist ein Webbrowser ohne grafische Anzeige (headless). Implementiert ist der Selenium-WebDriver über BrowserDriver, wobei die gängigsten Browser unterstützt werden.
Selenium Grid
BearbeitenSelenium Grid ist eine Erweiterung von Selenium RC und ermöglicht die parallele Ausführung von Tests auf mehreren Servern, um die Dauer der Testdurchführung zu verkürzen. Der Selenium-Client-Treiber verbindet sich dabei mit der Komponente Selenium Hub anstatt mit dem Selenium-Server. Der Hub wiederum leitet die Tests auf freie Selenium-Server weiter. Vorhandene Testfälle für Selenium RC können mit geringen Änderungen auch mit Selenium Grid verwendet werden. Die Testfälle sind jedoch parallel auszuführen, z. B. mit TestNG.
Verwendung
BearbeitenDiverse Softwareprodukte im Testing-Umfeld setzen auf Selenium auf, z. B.:
- Protractor, ein Framework für Ende-zu-Ende-Tests von AngularJS-Anwendungen,
- WebTester, ein Framework zur Automatisierung von GUI-Tests,
- Appium, ein Open-Source-Testautomatisierungswerkzeug für native und hybride mobile Anwendungen (Apps),
- BrowserStack, eine Cloud-basierte Testplattform für mobile und Desktop-Internetanwendungen
Literatur
Bearbeiten- Michael Kain: Selenium. Web-Applikationen automatisiert testen, Open Source Press 2008, ISBN 978-3-937514-57-4.
- Unmesh Gundecha: Selenium 2 Cookbook, 2012, ISBN 978-1-84951-574-0.
- David Burns: Selenium 2.0 Testing Tools: Beginner’s Guide, 2012, ISBN 978-1-84951-830-7.
- C. Titus Brown, Gheorghe Gheorghiu, Jason Huggins: An Introduction to Testing Web Applications with twill and Selenium, O’Reilly 2007, ISBN 978-0-596-52780-8.
- Alan John Richardson: Selenium Simplified, Compendium Developments, 2010, ISBN 978-0-9567332-1-4.
- Selenium Testing Tools Interview Questions You’ll Most Likely Be Asked, CreateSpace Independent Publishing 2019, ISBN 978-1-4637-6813-3.
Weblinks
BearbeitenEinzelnachweise
Bearbeiten- ↑ Release 4.25.0. 20. September 2024 (abgerufen am 26. September 2024).
- ↑ Hauptseminar Web Engineering
- ↑ The Art of Unit Testing: Deutsche Ausgabe Seite 290 Roy Osherove, Mitp-Verlag
- ↑ Alexander Neumann: Integrationstests: Selenium 3 ist erschienen. In: Heise online – heise Developer. Heise Medien, 14. Oktober 2016, abgerufen am 1. Februar 2017: „eines der meistgenutzten Werkzeuge in der Webentwicklung“
- ↑ Automatisierte Testverfahren für web-basierte Anwendungen ( des vom 26. März 2014 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. (PDF; 944 kB) Oliver Fischer, Masterarbeit am Lehrstuhl für Datenstrukturen und Softwarezuverlässigkeit der BTU Cottbus
- ↑ Selenium IDE. Abgerufen am 10. März 2023 (englisch).
- ↑ a b Selenium 3 is Coming. 4. Oktober 2016, abgerufen am 15. Oktober 2016 (englisch, Ankündigung von Selenium 3 im Blog der Entwickler).
- ↑ Selenium Homepage. Abgerufen am 29. Juli 2016.