Testautomatisierung mit Selenium
Selenium ist das meist eingesetzte Testautomatisierungstool für Webanwendungen. Doch ist Selenium ein Testautomatisierungstool oder nur ein Automatisierungstool? Ist die Testautomatisierung mit Selenium für den agilen Softwareentwicklungsprozess überhaupt geeignet? Diese und weiter Fragen beantwortet der erste Teil des Artikels. Im zweiten Teil werfen wir einen Blick auf die fünf Schritte eines automatisierten Selenium-Testfalls und Aspekte, die bei der Testautomatisierung mit Selenium berücksichtigt werden sollten.
Die Serie “Testautomatisierung von Webanwendungen” beschäftigt sich mit Testautomatisierungstools, die für das automatisierte Testen von Webanwendungen eingesetzt werden. Jeder Teil der Serie stellt ein neues Tool vor und beschreibt die Einsatzgebiete und die Herausforderungen, die bei der Einführung entstehen können. Die Serie wird kontinuierlich erweitert.
Die Fülle an Browser-Versionen und die Tatsache, dass Webanwendungen auch auf mobilen Endgeräten funktionieren sollen, stellen Tester vor eine Herausforderung. Das manuelle Testen der Webanwendungen in allen gängigen Browser-Versionen ist in vielen Fällen auf Grund von mangelnden Projektressourcen nicht durchführbar. In der Webentwicklung haben sich Testautomatisierungstools langfristig etablieren können. Für das End-2-End-Testen von Webanwendungen gibt es eine Vielzahl an Testautomatisierungstools.
Unter diesen hat sich die Testautomatisierung mit Selenium in der Industrie als das meist eingesetzte Testautomatisierungstool für Webanwendungen bewährt. Eine Komponente von Selenium ist Selenium WebDriver. Dabei steht der Begriff Selenium zumeist stellvertretend für Selenium WebDriver.
Der erste Teil der Serie “Testautomatisierungstools für End-2-End-Tests von Webanwendungen” beinhaltet die Testautomatisierung mit Selenium. In diesem Teil der Serie, der sich „Testautomatisierung von Webanwendungen mit Selenium“ nennt, wird dargestellt, was Selenium ist, wofür es eingesetzt wird und was bei der Implementierung der Testautomatisierung mit Selenium zu beachten ist.
Testautomatisierung mit Selenium – Was ist Selenium?
Als Automatisierungstool interagiert die Testautomatisierung mit Selenium mit der Benutzeroberfläche der Webanwendung. Dabei führt es Aktionen auf den einzelnen Web-Elementen aus. Selenium ermöglicht es, Benutzer-Aktionen zu simulieren und diese zu automatisieren.
Als Automatisierungstool wird Selenium meist für End-2-End-Tests eingesetzt. Selenium WebDriver ist ein Application Programming Interface (API), das mit allen gängigen Programmiersprachen (Java, C#, JavaScript, Python, Ruby, PHP, etc.) eingesetzt werden kann. Selenium ist eine Open Source, somit fallen keine Kosten bei der Nutzung an. Als Automatisierungstool wird es erst in Kombination mit einem Testingframework wie beispielsweise JUnit, TestNG oder NUnit zu einem Testautomatisierungstool. Selenium WebDriver ist im W3C Standard aufgenommen und unterstützt alle gängigen Browser.
Testautomatisierung mit Selenium – Cross Platform und Parallel Tests
Ein großer Vorteil Testautomatisierung mit Selenium WebDriver ist, dass es auf allen gängigen Betriebssystemen ausführbar ist. Die Testautomatisierung, die auf einem Windows-Rechner implementiert wurden, kann auf einem Linux- oder Mac-Rechner ausgeführt werden. Ebenso unterstützt Selenium WebDriver die Ausführung der automatisierten Tests auf allen gängigen Browsern (Chrome, Firefox, Internet Explorer etc.). Die automatisierten Tests lassen sich auch parallel ausführen, was ein schnelles Feedback ermöglicht und gerade bei einer großen Anzahl von Tests einen großen Mehrwert bietet.
Testautomatisierung mit Selenium – Integration in den agilen Softwareentwicklungsprozess
Die Integration von Selenium mit Behaviour Driven Development Frameworks (BDD) wie Cucumber ermöglicht es, die Testfälle für alle Beteiligten als lebende Dokumentationen transparent zu machen. Die automatisierten Selenium-Tests können durch die gängigen Continuous Integration Server (Jenkins, GitLab) ausgeführt werden. Dadurch ermöglicht Testautomatisierung mit Selenium eine optimale Integration in die agilen Prozesse und die Tool-Landschaft. Die Testautomatisierungsframeworks und die automatisierten Selenium-Testfälle lassen sich schon zum Teil fertigstellen, bevor die Anwendung oder das Feature implementiert ist.
Testautomatisierung mit Selenium – Integration in kommerzielle und Open-Source-Lösungen
Selenium ist das meist eingesetzte Automatisierungstool für Webanwendungen. Dementsprechend gibt es eine große Anzahl an Services, die mit Selenium eingesetzt werden können, seien es kommerzielle oder Open-Source-Lösungen. Anbieter wie Applitools oder die Open-Source-Lösung Galen ermöglichen visuelles Testen. Weitere Anbieter, wie etwa SauceLabs und Perfecto, stellen eine Infrastruktur zur Verfügung. In diesen werden die automatisierten Tests für eine Vielzahl an Browser-Versionen und Plattformen remote ausführbar gemacht.
Testautomatisierung mit Selenium – Programmierkenntnisse und nicht out-of-the-box
Um wartungsfreundliche Testautomatisierungsframeworks in Selenium WebDriver zu implementieren, benötigt man fortgeschrittene Programmierkenntnisse. Das Einarbeiten erfordert einen hohen Zeitaufwand. Ein weiterer Nachteil bei der Testautomatisierung mit Selenium Webdriver gegenüber kommerziellen Testautomatisierungstools ist, dass man jede weitere Komponente, die man zu seinem Testautomatisierungsframework hinzufügen will (wie beispielsweise Reports und Logging), in das Testautomatisierungsframework integrieren muss.
Die automatisierten Tests von Selenium werden über das User Interface (Browser) ausgeführt. Gerade die Benutzeroberfläche ändert sich im Softwareentwicklungsprozess oft. Dies führt dazu, dass die Tests bei jeder Änderung angepasst werden müssen. Die stetige Angleichung betrifft auch kommerzielle Testautomatisierungstools, die über die Benutzeroberfläche automatisierte Tests ausführen.
Fünf Schritte – Testautomatisierung mit Selenium
Die Implementierung von automatisierten Selenium-Testfällen besteht in der Regel aus den folgenden fünf Schritten:
1.) Set-up
Damit wir automatisierte Tests mit Selenium implementieren können, müssen wir erst mal Selenium konfigurieren und den Browser festlegen.
2.) Elemente identifizieren
Um automatisierte Benutzeraktionen ausführen zu können, müssen wir die Elemente einer Webanwendung eindeutig identifizieren. Hierzu haben wir eine große Anzahl an Lokators, die uns bei Testautomatisierung mit Selenium zur Verfügung stehen.
3.) Aktionen ausführen
Nachdem wir die einzelnen Elemente einer Webanwendung identifiziert haben, können wir die Aktionen eines Benutzers automatisieren.
4.) Ist/Soll-Abgleich
Selenium ist an sich keine Testautomatisierungstool. Erst in Verbindung mit einem Testautomatisierungsframework wird es zu einem Testautomatisierungstool. Jede gängige Programmiersprache hat ein oder mehrere Testautomatisierungsframework für einen Ist/Soll-Abgleich.
5.) Anfangszustand herstellten
Nachdem unsere automatisierte Selenium Testfällen durchlaufen sind, wollen wir den Anfangszustand herstellen. Im Falle von Selenium wollen wir den Browser wieder schließen.
Testautomatisierung mit Selenium – Empfehlungen
Softwareentwicklungsprojekte sind komplex und bringen unterschiedliche Herausforderungen mit sich. Gerade am Anfang des Softwareentwicklungsprozess sind die Informationen, die für die Testautomatisierung mit Selenium gebraucht werden, noch nicht vollständig vorhanden. Die Berücksichtigung nachstehender Empfehlungen können eine gute Grundlage für den erfolgreichen Einsatz von Selenium schaffen.
Wissen
Die Testautomatisierung mit Selenium erfordert Wissen über die Grundlagen von Webanwendungen. Deshalb sollte der Verantwortliche für die Implementierung der Testautomatisierung von Selenium sollte HTML-, CSS-, Programmier- und Testautomatisierungskenntnisse besitzen. Bei der Testautomatisierung mit Selenium helfen HTML- und CSS-Kenntnisse dabei Elemente zu identifizieren und Selektoren zu erstellen. Gute Programmierkenntnisse ermöglichen es das Testautomatisierungsframework wartbarer zu implementieren wie im Abschnitt Design Pattern beschrieben.
Identifikation der Elemente
Damit bei der Testautomatisierung mit Selenium-Aktionen ausgeführt werden können, müssen die Elemente einer Webanwendung identifiziert werden. Dies kann oft eine Herausforderung sein, wenn bei der Implementierung der Webanwendung nicht darauf geachtet wird, dass die einzelnen Elemente einer Webanwendung eindeutig identifizierbar sind. Somit erleichtert die Testautomatisierung mit Selenium, wenn die Elemente eindeutige Attribute haben.
Clean Code
Der Code, der bei der Erstellung von Testautomatisierung mit Selenium implementiert wird, sollte die Regeln von Clean Code befolgen. Wie beispielsweise eindeutige Namen für Variablen, Funktionen und Klassen. Der Quellcode sollte einfach zu lesen und zu ändern sein.
Design Pattern
Automatisierte Selenium-Testfälle sind in der Regel wartungsaufwändiger als Unit-Tests oder Integrationstests, da sie mit der Anwendung über die Benutzeroberfläche agieren. Die Benutzeroberfläche einer Anwendung ändert sich im Softwareentwicklungsprozess mehrfach. Der Einsatz von Design Patterns reduziert den Wartungsaufwand der automatisierten Selenium-Testfälle und ermöglichen es, redundanten Code zu vermeiden und Code wiederzuverwenden.
Parallele Ausführung
Die Testautomatisierung von Selenium ist in der Regel langsamer in der Ausführung als Unit- und Integrationstests. Es sollte bei der Implementierung darauf geachtet werden, dass die automatisierten Selenium-Testfälle parallel ausgeführt werden. Dies führt zu schnellem Feedback.
Reporting
Damit die Testautomatisierung mit Selenium einen Mehrwert für den Softwareentwicklungsprozess liefert, ist es wichtig, den Fehlerzustand schnell zu identifizieren. Ein Report über die automatisierten Testfälle sollte uns die einzelnen Schritte, die ausgeführt werden, anzeigen. Bei einer Fehlerwirkung sollten ein Screenshot anzeigen, wo der automatisierte Testfall fehlgeschlagen ist.
Testautomatisierung mit Selenium – Fazit
Da automatisierte Selenium-Tests auf allen gängigen Browsern ausgeführt werden können, eignet sich die Testautomatisierung mit Selenium sehr gut für Webanwendungen. Durch die große Community an Selenium-Usern lassen sich für aufkommende Herausforderung auch im World Wide Web häufig Lösungen finden. Des Weiteren wird Selenium WebDriver kontinuierlich weiterentwickelt und ist immer up-to-date mit den neuesten Browser-Versionen. Zu beachten ist jedoch, dass man gute Programmierkenntnisse benötigt, um ein Testautomatisierungsframework zu implementieren.Im Softwareentwicklungsprozess sollte die Automatisierbarkeit der Anwendung berücksichtigt werden. Der Verantwortliche der Testautomatisierung mit Selenium sollte die Grundlagen der Softwareentwicklung von Webanwendungen beherrschen. Bei der Testautomatisierung mit Selenium sollten Clean Code Regeln und Design Pattern eingesetzt werden, um die Verständlichkeit des Quellcodes und die Wartbarkeit zu gewährleisten. Die automatisierten Selenium-Testfälle sollen parallel ausgeführt werden, um schnelles Feedback zu bekommen. Die Reports sollten es ermöglichen, Fehlerzustände schnell zu identifizieren.
Tutorials im Bereich „Testautomatisierung mit Selenium“ findest Du im Bereich: Testautomatisierung & Softwaretest Tutorials und auf unserem YouTube-Kanal: Testautomatisierung – Gewusst Wie
Hinterlasse eine Antwort