Selen (Software) - Selenium (software)
| Stabile Version | 3.141.59 / 19. November 2018
|
|---|---|
| Repository | |
| Geschrieben in | Selenium-Server: Java ; Selenium WebDriver (funktioniert ohne Selenium Server), offizielle Unterstützung: JavaScript ( Node.js ), Python , Ruby , Java oder C# |
| Betriebssystem | Plattformübergreifend |
| Typ | Softwaretest- Framework für Webanwendungen |
| Lizenz | Apache-Lizenz 2.0 |
| Webseite |
Selen |
Selenium ist ein Open-Source- Framework für automatisierte Tests für Webanwendungen . Selenium bietet ein Wiedergabetool zum Erstellen von Funktionstests, ohne dass eine Testskriptsprache (Selenium IDE) erlernt werden muss . Es bietet auch eine testdomänenspezifische Sprache (Selenese), um Tests in einer Reihe beliebter Programmiersprachen zu schreiben, darunter JavaScript ( Node.js ), C# , Groovy , Java , Perl , PHP , Python , Ruby und Scala . Die Tests können dann mit den meisten modernen Webbrowsern ausgeführt werden . Selenium läuft unter Windows , Linux und macOS . Es handelt sich um Open-Source-Software, die unter der Apache-Lizenz 2.0 veröffentlicht wurde .
Geschichte
Selenium wurde ursprünglich 2004 von Jason Huggins als internes Tool bei ThoughtWorks entwickelt . Huggins wurde später von anderen Programmierern und Testern bei ThoughtWorks unterstützt, bevor Paul Hammant dem Team beitrat und die Entwicklung des zweiten Betriebsmodus steuerte, der später zu "Selenium Remote Control" (RC) wurde. Das Tool war in diesem Jahr Open Source.
2005 machten Dan Fabulich und Nelson Sproul (mit Hilfe von Pat Lightbody) ein Angebot, eine Reihe von Patches anzunehmen, die Selenium-RC zu dem machen würden, wofür es am bekanntesten wurde. In derselben Sitzung würde die Steuerung von Selenium als Projekt als Komitee fortgesetzt, wobei Huggins und Hammant die Vertreter von ThoughtWorks sind.
2007 kam Huggins zu Google. Zusammen mit anderen wie Jennifer Bevan setzte er die Entwicklung und Stabilisierung von Selenium RC fort. Gleichzeitig entwickelte Simon Stewart von ThoughtWorks ein überlegenes Browser-Automatisierungstool namens WebDriver. 2009 wurde nach einem Treffen der Entwickler auf der Google Test Automation Conference beschlossen, die beiden Projekte zusammenzuführen und das neue Projekt Selenium WebDriver oder Selenium 2.0 zu nennen.
2008 hat Philippe Hanrigou (damals bei ThoughtWorks) "Selenium Grid" entwickelt, das einen Hub bietet, der die gleichzeitige Ausführung mehrerer Selenium-Tests auf einer beliebigen Anzahl von lokalen oder Remote-Systemen ermöglicht und so die Testausführungszeit minimiert. Grid bot als Open Source eine ähnliche Funktion wie die interne/private Google Cloud für Selenium RC. Pat Lightbody hatte bereits eine private Cloud für "HostedQA" erstellt, die er an Gomez, Inc. verkaufte.
Der Name Selenium stammt von einem Witz von Huggins in einer E-Mail, in dem er einen Konkurrenten namens Mercury verspottet und sagt, dass man eine Quecksilbervergiftung durch die Einnahme von Selenpräparaten heilen kann. Die anderen, die die E-Mail erhielten, nahmen den Namen an und rannten damit los.
Komponenten
Selenium besteht aus mehreren Komponenten, von denen jede eine bestimmte Rolle bei der Entwicklung der Testautomatisierung von Webanwendungen übernimmt .
Selen-IDE
Selenium IDE ist eine vollständig integrierte Entwicklungsumgebung (IDE) für Selenium-Tests. Es ist als Firefox Add-On und als Chrome Extension implementiert . Es ermöglicht das Aufzeichnen, Bearbeiten und Debuggen von Funktionstests. Es war früher als Selenium Recorder bekannt. Selenium-IDE wurde ursprünglich von Shinya Kasatani entwickelt und 2006 an das Selenium-Projekt gespendet. Selenium-IDE wurde zuvor wenig gepflegt. Die Selenium-IDE wurde 2018 aktiv gewartet.
Skripte können automatisch aufgezeichnet und manuell bearbeitet werden und bieten Unterstützung für die automatische Vervollständigung und die Möglichkeit, Befehle schnell zu verschieben. Skripte werden in Selenese aufgezeichnet , einer speziellen Testskriptsprache für Selenium. Selenese bietet Befehle zum Ausführen von Aktionen in einem Browser (klicken Sie auf einen Link, wählen Sie eine Option) und zum Abrufen von Daten aus den resultierenden Seiten.
Die 2.x-Version der Selenium IDE für Firefox funktionierte nach dem Firefox 55-Upgrade nicht mehr und wurde durch Selenium IDE 3.x ersetzt.
Neben dem offiziellen Selenium IDE-Projekt werden zwei alternative Selenium IDE-Browsererweiterungen aktiv gepflegt: Kantu ( Open-Source- GPL- Lizenz) und Katalon Recorder ( Open-Source ).
Selenium-Client-API
Als Alternative zum Schreiben von Tests in Selenese können Tests auch in verschiedenen Programmiersprachen geschrieben werden. Diese Tests kommunizieren dann mit Selenium, indem sie Methoden in der Selenium-Client-API aufrufen. Selenium bietet derzeit Client-APIs für Java , C# , Ruby , JavaScript , R und Python .
Mit Selenium 2 wurde eine neue Client-API eingeführt (mit WebDriver als zentraler Komponente). Die alte API (mit der Klasse Selenium ) wird jedoch weiterhin unterstützt.
Selen-Fernbedienung
Selenium Remote Control (RC) ist ein in Java geschriebener Server, der Befehle für den Browser über HTTP entgegennimmt . RC ermöglicht es, automatisierte Tests für eine Webanwendung in jeder Programmiersprache zu schreiben, was eine bessere Integration von Selenium in bestehende Unit-Test-Frameworks ermöglicht. Um das Schreiben von Tests zu vereinfachen, stellt das Selenium-Projekt derzeit Client-Treiber für PHP , Python , Ruby , .NET , Perl und Java bereit . Der Java-Treiber kann auch mit JavaScript (über die Rhino- Engine) verwendet werden. Eine Instanz des Selenium RC-Servers wird benötigt, um den HTML-Testfall zu starten - was bedeutet, dass der Port für jeden parallelen Lauf unterschiedlich sein sollte. Für den Java/PHP-Testfall muss jedoch nur eine Selenium RC-Instanz kontinuierlich ausgeführt werden.
Selenium Remote Control war eine Überarbeitung von Driven Selenium oder Selenium B, die von Paul Hammant entworfen wurde und Jason als Mitschöpfer von Selenium zugeschrieben wird. Die Originalversion startete direkt einen Prozess für den jeweiligen Browser aus der Testsprache Java, .NET, Python oder Ruby. Das Wire-Protokoll (damals 'Selenese' genannt) wurde in jedem Sprachport neu implementiert. Nach dem Refactor von Dan Fabulich und Nelson Sproul (mit Hilfe von Pat Lightbody) gab es einen Daemon-Zwischenprozess zwischen dem Fahrprüfungsskript und dem Browser. Zu den Vorteilen gehörten die Möglichkeit, Remote-Browser zu steuern, und die geringere Notwendigkeit, jede Codezeile auf eine immer größer werdende Anzahl von Sprachen zu portieren. Selenium Remote Control hat 2006 die Codezeile von Driven Selenium vollständig abgelöst. Das Browsermuster für 'Driven'/'B' und 'RC' war Response/Request, das später als Comet bekannt wurde .
Selenium RC diente lange Zeit als Flaggschiff-Testrahmen des gesamten Selen-Projekts. Und vor allem ist Selenium RC das erste und wichtigste automatisierte Webtest-Tool, das es Benutzern ermöglicht, ihre bevorzugte Programmiersprache zu übernehmen.
Mit der Veröffentlichung von Selenium 2 wurde Selenium RC offiziell zugunsten von Selenium WebDriver eingestellt.
Selenium WebDriver
Selenium WebDriver ist der Nachfolger von Selenium RC. Selenium WebDriver akzeptiert Befehle (die in Selenese oder über eine Client-API gesendet werden) und sendet sie an einen Browser. Dies wird durch einen browserspezifischen Browsertreiber implementiert, der Befehle an einen Browser sendet und Ergebnisse abruft. Die meisten Browsertreiber starten tatsächlich eine Browseranwendung und greifen darauf zu (wie Firefox , Google Chrome , Internet Explorer , Safari oder Microsoft Edge ); Es gibt auch einen HtmlUnit- Browsertreiber, der einen Browser simuliert, der den Headless-Browser HtmlUnit verwendet.
Anders als in Selenium 1, wo der Selenium-Server zum Ausführen von Tests erforderlich war, benötigt Selenium WebDriver keinen speziellen Server zum Ausführen von Tests. Stattdessen startet der WebDriver direkt eine Browserinstanz und steuert diese. Selenium Grid kann jedoch mit WebDriver verwendet werden, um Tests auf Remote-Systemen auszuführen (siehe unten). Wo möglich, verwendet WebDriver native Funktionen auf Betriebssystemebene anstelle von browserbasierten JavaScript-Befehlen, um den Browser zu steuern. Dadurch werden Probleme mit feinen Unterschieden zwischen nativen und JavaScript-Befehlen, einschließlich Sicherheitseinschränkungen, umgangen.
In der Praxis bedeutet dies, dass die Selenium 2.0 API deutlich weniger Aufrufe hat als die Selenium 1.0 API. Während Selenium 1.0 versuchte, eine reichhaltige Schnittstelle für viele verschiedene Browseroperationen bereitzustellen, zielt Selenium 2.0 darauf ab, einen grundlegenden Satz von Bausteinen bereitzustellen, aus denen Entwickler ihre eigene domänenspezifische Sprache (DSL) erstellen können . Eine solche DSL gibt es bereits: Das Watir- Projekt in der Sprache Ruby hat eine lange Geschichte guten Designs. Watir-webdriver implementiert die Watir-API als Wrapper für Selenium WebDriver in Ruby. Watir-webdriver wird vollautomatisch basierend auf der WebDriver-Spezifikation und der HTML-Spezifikation erstellt.
Anfang 2012 verhandelten Simon Stewart (Erfinder von WebDriver), der damals bei Google war, und David Burns von Mozilla mit dem W3C , um WebDriver zu einem Internetstandard zu machen. Im Juli 2012 wurde der Arbeitsentwurf veröffentlicht und die Empfehlung im Juni 2018 befolgt. Selenium WebDriver (Selenium 2.0) ist vollständig implementiert und wird in JavaScript ( Node.js ), Python , Ruby , Java und C# unterstützt . Ab 2021 ist Selenium 4 ein Release Candidate.
Selengitter
Selenium Grid ist ein Server, der es Tests ermöglicht, Webbrowser-Instanzen zu verwenden, die auf Remote-Computern ausgeführt werden. Bei Selenium Grid fungiert ein Server als zentraler Hub. Tests kontaktieren den Hub, um Zugriff auf Browserinstanzen zu erhalten. Der Hub verfügt über eine Liste von Servern, die Zugriff auf Browserinstanzen (WebDriver-Knoten) bieten, und lässt Tests die Verwendung dieser Instanzen zu. Selenium Grid ermöglicht die parallele Ausführung von Tests auf mehreren Maschinen und die zentrale Verwaltung verschiedener Browserversionen und Browserkonfigurationen (statt in jedem einzelnen Test).
Die Möglichkeit, Tests auf entfernten Browserinstanzen auszuführen, ist nützlich, um die Testlast auf mehrere Computer zu verteilen und Tests in Browsern auszuführen, die auf verschiedenen Plattformen oder Betriebssystemen ausgeführt werden. Letzteres ist besonders nützlich, wenn nicht alle zum Testen verwendeten Browser auf derselben Plattform laufen können.
Siehe auch
- Appium- , Mobil- und Desktop- App- Automatisierung mit WebDriver
- Abnahmeprüfung
- Capybara (Software)
- Gegeben-Wann-Dann
- Liste der Webtest-Tools
- MediaWiki Selenium
- Regressionstests
- Roboter-Framework