Testautomatisierungs-Frameworks als Continuous Testing

7. April 2021 | #LuckeSkills

Lesezeit ca. 8 Minuten

Praxisbeispiel: Testframework-POM und Robot-Framework mit Python

In unserem Beispiel werden wir das Framework Page Object Model(POM) und das Robot-Framework sowie die Integration mit GitHub und Jenkins verwenden. Die Testskripte werden mit Python geschrieben.

Die Testautomatisierung bringt viele Vorteile mit sich, dazu zählen unter anderem eine erhöhte Testabdeckung, ein effizienteres Testen – aber auch die Durchführung von Regressionstests zu jeder beliebigen Zeit und die Entwicklung von nachhaltigen und wiederverwendbaren Skripten. Ein derart erstelltes Skript reduziert die Ausführungs- und Berichtszeit.

Um das alles zu realisieren ist ein Testautomatisierung-Framework bei der Projektplanung unabdingbar, denn dadurch werden alle erforderlichen Werkzeuge und Bibliotheken organisiert und erhalten eine transparente Struktur. Vor allem wird aber auch die Wartbarkeit, Skalierbarkeit und Wiederverwendbarkeit für die einmal erstellten Automatisierungstests sichergestellt.

Der Vollständigkeit halber sei natürlich erwähnt, dass Selenium neben den beiden von uns hier verwendeten Frameworks POM und Robot, viele weitere unterstützt wie Data Driven Testing, Hybride Automation Framework, oder Key Word Driven Framework

1. POM-Framework Projekt

Das Page Object Model (POM) ist eine Lösungsschablone für wiederkehrende Entwurfsprobleme, welches häufig in der Testautomatisierung verwendet wird und ein Objekt-Repository für Web-UI-Elemente erstellt. Der Vorteil dieses Modells ist, dass es die Codeduplizierung reduziert und die Testwartung verbessert.

Nach diesem Modell sollte für jede Webseite eine eigene Klasse definieren werden.
Die Klasse enthält die Locators und die Methoden, die diesen Locator aufrufen. Die Namen dieser Methoden sollten entsprechend der Aufgabe, die sie ausführen, vergeben werden.


Konfiguration

Es wird ein POM-Projekt unter IDE-Pycharm für die Webseite „https://letskodeit.teachable.com“ erstellt. Es werden Tests für die Login-Maske und eine „Autokonfiguration“ erstellt. Mit der Klasse unittest wird bestimmt und ermittelt, ob die Qualität des Codes fehlerfrei ist. Mit der Klasse HtmlTestRunner werden die Reports erstellt. Das Projekt wird in GitHub hochgeladenen und über Jenkins integriert.

  1. Bevor mit dem Skripten der Tests begonnen wird, müssen einige Installationen und Konfigurationen auf dem Rechner durchgeführt werden:
    1.1 Python Installieren unter https://www.python.org/downloads/

    1.2 Die Entwicklungsumgebung IDE-Pycharm installieren unter
    https://www.jetbrains.com/de-de/pycharm

    1.3 Windows Eingabeaufforderung CMD starten
    Wenn Python installiert ist, kann die Python Version unter CMD mit
    Python –Version geprüft werden

1.4 Python lib –Selenium
Mit dem Befehl pip install selenium können die Selenium WebDriver
Libs installiert werden.

1.5 Python lib Html test runner
Mit dem Befehl pip install html –testRun kann der HTML-Report
installiert werden.

1.6 Mit dem Befehl pip freeze kann geprüft werden, welche Bibliotheken in
Python installiert sind.

1.7 Jenkins
Jenkins installieren und in CMD den Befehl java –jar jenkins.war
starten

1.8 GitHub
Einen GitHub Account erstellen.

2. Es wird für jede Webseite eine Klasse erstellt. Beispiel für die Login-
Klasse

3. Eine Klasse für die Web Elemente, in der die Locators definiert sind.

4. Eine Testklasse mit unittest und HtmlTestRunner implementieren, die die Methoden der einzelnen Masken aufruft und testet. Nach der Ausführung der Klasse, werden die Ergebnisse als Reports erzeugt.

5. Damit das POM-Testframework in einer DevOps-Umgebung kompatibel wird, wird dieses als Continuous Testing konfiguriert.  Für diesen Zweck wird das Projekt in einem GitHub-Repository hochgeladen und mit Jenkins integriert.

6. In Jenkins wird der Git-Repository URL kopiert und für die Ausführung des Programms der Windows CMD Befehl Python -m PMOProject.Tests.Login  unter „Buildverfahreneingegeben. Somit kann ein Build erstellt werden.

7. Mit HTML Report Plugin werden die Ergebnisse des Testes angezeigt.


2. Robot-Framework Projekt

Wer das Keyword-Driven Testing bereits verwendet hat, wird vermutlich die Erfahrung gemacht haben, dass der Aufbau des Frameworks zu Beginn mit einigen Hürden verbunden ist und eine komplexe Konfiguration erforderlich ist, bevor eine funktionierende Testumgebung für die Testskripte vorliegt.

Keyword Driven Framework wird als tabellengesteuertes Testen oder als Action Word-basiertes Testen bezeichnet.

Das Modell bietet viele Vorteile, wie z.B., dass wiederkehrende Aktionen und Abläufe in Keywords gekapselt werden. Tests können früh, ohne Zugang zu der zu testenden Anwendung, entwickelt werden. Neue Testfälle können bestehende Schlüsselwörter wiederverwenden.

Robot-Framework wurde entwickelt um die Vorteile der Keyword-Driver weiter zu entwickeln und zu optimieren und mit wenig Konfigurationen Keyword Driven Framework zu benutzen.

Robot-Framework ist eine Open Source-Software basierend auf Python und unterstützt Selenium WebDriver. Robot-Framework kann unter Eclipse installiert werden. Die Syntax ist sehr einfach und baut sich auf Keywords auf:

Beispiel: Open Browser, Click Element, Input Text.

Es wird mit diesem Praxisbeispiel demonstriert, wie das Robot-Framework unter Eclipse funktioniert und welche Konfigurationen beachtet werden müssen. Darüber hinaus wird das Projekt in GitHub hochgeladen und mit Jenkins integriert.


Konfiguration

  1. Python Installieren unter https://www.python.org/downloads/
  2. Mit Windows CMD Befehl pip install robotframework eingeben, und mit pip freeze prüfen, ob Robot Framework erfolgreich installiert wurde.

3. In Eclipse unter Marketplace nach RED (red robort editor) suchen und
installieren.
4. Gehe zu Perspective und öffne Robot View.

5. In diesem Beispiel wird ein Test  für „Login“ und die „Auswahl einer Automarke“ für die Webseite https://letskodeit.teachable.com demonstriert. Das Robortframework-Projekt besteht aus den folgenden Komponenten:

Settings:  Hier wird SeleniumLibrary aufgerufen und Tags für die Testsuite
definiert.
Test Cases: LoginTest und lookingForCarTest Testfälle werden
implementiert.
Variables: Hier werden Variablen definiert, es ist damit möglich, diese an
anderen Stellen im Test zu verwenden.

Keywords: Hier werden die Keywords und Locators für die Webseite definiert.

Das gesamte Projekt sieht dann bei Eclipse folgendermaßen aus:

6. In GitHub wird das Projekt hochgeladen, um von dort das Projekt für das Team zugänglich zu machen. Mit der erstellen Git-Repository wird eine Integration mit Jenkins gebildet.

7. Das Projekt Robot-Framework wird genau wie POM-Project in Jenkins konfiguriert. Der Windows CMD Befehl robot test\TestSuite1.robot muss unter „Buildverfahren“ hinzugefügt werden.

8. Das Plugin Robot Framework in Jenkins herunterladen und unter Post-Build-Aktionen die Option „Publish Robot Framework test results“ auswählen. Zusätzlich einen Ordner um die Reports zu speichern eingeben.


Fazit

Die Testautomatisierung ist mittlerweile in den meisten Softwareprojekten angekommen. Bei den automatisierten Tests von Webapplikationen ist Selenium seit vielen Jahren die „state-of-the-art“ UI-Testautomatisierungslösung für Anwendungen im Web. Große und innovative Unternehmen, wie Apple und Facebook nutzen die vielfältigen Vorteile von Selenium. Durch den Einsatz der Testautomatisierungs-Frameworks kann die Wartbarkeit und Nachhaltigkeit von Automatisierungslösungen zusätzlich verbessert werden.

Das Framework Page Object Model POM und das Robot-Framework zählen zu den meist verwendeten Selenium Frameworks. Durch Verwendung des Page Object Modells, können Änderungen an der Oberfläche direkt an den Page-Object-Klassen nachgezogen werden. So muss lediglich eine Methode angepasst werden und die fachliche Testfallspezifikation bleibt unangetastet. Ebenfalls werden irrelevante Testdaten abstrahiert und die Testfallspezifikation ist damit von konkreten Testdaten unabhängig.

Das Robot-Framework bietet im Gegensatz dazu eine einfache Syntax und nutzt das Keyword–Driven-Prinzip. Diese Keywords abstrahieren die Logik, um mit dem Zielsystem zu kommunizieren und können in unterschiedlichen Einzeltestfällen wiederverwendet werden. Zum Öffnen des Browsers wird beispielsweise das Schlüsselwort „Browser öffnen“ verwendet.

Ob man nun das Page Object Model oder Robot-Framework verwendet, hängt von der Landschaft eines Projektes und der Komplexität der Anwendung. Beide Frameworks können leicht in einem Continuous Integration Projekt CI/CD integriert werden.


Ihr Ansprechpartner:

Jamal Oubaouih – Senior QA Consultant – jamal.oubaouih@lucke-edv.de

Lucke EDV GmbH | Zurück