16 Dez

Drei Schritte, mit denen ich Selenium kennen lernte

1. Einstieg – Selenium-IDE für Firefox

Hierbei handelt es sich um ein Add-on für Firefox, das manuell ausgeführte Abläufe in einer Web-Anwendung mitprotokolliert und per Knopfdruck wiederholen kann. (Downloadlink)

Der daraus resultierende Test-Workflow ist folgender:
Einschalten / Aufzeichnen > Prozess durchlaufen > ggf. Skript modifizieren > Fehler reporten / Skript mitschicken > Entwickler kann Fehler dank Skript einfach reproduzieren > Bugfix > Retest mit Skript
-> Das bedeutet, man spart sich mind. 2 mal das manuelle Durchspielen des Prozesses und die Erklärung.

Für ein Beispiel öffne ich „www.google.de“ und tippe „Was ist Selenium“ ein.
Aufgezeichnet wurde folgendes:

Selenium 1

Da mein Test darauf ausgelegt ist zu überprüfen, ob Google wirklich Suchergebnisse ausspuckt, die das Wort „Selenium“ beinhalten, modifiziere ich das Skript etwas.
In diesem Fall habe ich über die Select-Funktion den Bereich mit den Suchergebnissen ausgewählt (id=ires) und die Befehle waitForElementPresent (damit die Folgebefehle erst ausgeführt werden, wenn das Element geladen ist) und assertText (um das Wort zu überprüfen) darauf ausgeführt:

Selenium 2

2. Übergang zum Code – Export aus Selenium-IDE zu Selenium WebDriver

Selenium-IDE bietet die Möglichkeit die aufgezeichneten Befehlen in Code einer gewünschten Programmiersprache zu konvertieren (ich wähle hier “C#/NUnit/WebDriver”):

Selenium 3

Es wird eine Klasse erzeugt, die kompiliert und ausgeführt werden kann. Zur besseren Übersicht zeige ich hier nur die Methoden, die für die Ausführung der Befehle zuständig sind – man erkennt, dass die Befehle einfach nur aufgelistet und schwer nachvollziehbar sind – oder ist euch klar, wofür “gbqfq” steht?

3. Abrunden – Code Refactoring

Um den Code besser lesbar und ohne Wiederholungen zu gestalten, wende ich erstmal folgende Tricks an:

  1. Referenzen/Eingaben auslagern
  2. Kommentare verfassen
  3. Leerräume einfügen

An dieser Stelle möchte ich noch anfügen, dass dieses hier vorgeschlagene Code Refactoring noch nicht abgeschlossen ist. Bei größerem Umfang macht es beispielsweise Sinn die Referenzen in eine eigene Datei auszulagern und abstrakte Klassen zu schreiben, die Grundvoraussetzungen bereits abprüfen, z.B. ob die geforderte Seite wirklich schon offen ist.

Je mehr ich mich mit der Materie beschäftige und vertrauter sie mir wird, desto mehr freue ich mich darauf unsere Qualitätssicherung mithilfe von Selenium aufzustocken. Momentan träume ich von einem zusammenhängenden Netz aus Selenium-Tests, mit denen unser gesamtes Projekt auf Knopfdruck durchgetestet wird.
Allerdings muss ich erstmal einen Fuß vor den anderen setzen; meine nächste Etappe wird sein, mir Gedanken darüber zu machen, wann welches Tool zum Einsatz kommt – ob Aufzeichnung mit Selenium-IDE oder direkt über Selenium WebDriver – und ich werde einen tieferen Blick in die Masse an Befehlen werfen.

Ihr dürft also gespannt sein.

Share this

Leave a reply