© Excellent backgrounds/Shutterstock.com
Teil 2: Das Robot Framework implementiert in Java

Robot meets Java


Komplexe Abläufe in einfache Keywords für Keyword-driven Testing zu verpacken, ist nicht einfach. Ziel muss es sein, dem Benutzer anwenderfreundliche Keywords zur Verfügung zu stellen. Komplexe Keywords können im Robot Framework schnell unübersichtlich werden. Und das beeinträchtigt Wartbarkeit und Benutzbarkeit. Aus diesen Gründen bietet es sich an, die Strukturen in Java abzubilden. Als Bonus erhält man noch einen Schutz vor unbefugten Änderungen an der Implementierung der Keywords.

Bei der Implementierung des Robot Frameworks in Java gibt es verschiedene Anforderungen an die Architektur, wie das Vereinen von verschiedenen Wissensständen, Zugriffskontrolle auf sensible Teile der Software sowie einen hohen Grad an Flexibilität. Betrachten wir nochmal das Schraubenzieherbeispiel aus dem ersten Teil des Artikels. Gehen wir nun davon aus, dass die Kommunikation mit dem Testobjekt über eine Netzwerkschnittstelle erfolgt. Die Dokumentation des Application Programming Interface (API) ist rudimentär vorhanden. Sie ermöglicht das Setzen und Lesen von Werten. Um die Implementierung unserer Keywords durchführen zu können, müssen wir einen direkten Einblick in die Software des Schraubenziehers haben. Somit betreiben wir kein Blackbox Testing, sondern ein Greybox Testing. Um die genannten Forderungen an die Einfachheit der Keywords umzusetzen, teilen wir die benötigten Komponenten in eigene Projekte auf. Durch diesen simplen Schritt können wir für Zugriffskontrolle und eine hohe Flexibilität sorgen. Damit sind wir in der Lage, neue Keywords hinzuzufügen, bestehende zu verändern, zu erweitern oder grundlegende Kommunikationsstrukturen zu verändern.

Java und das Robot Framework

Die Implementierung der Keywords in einer Java-Klasse und die Integration dieser im Robot Framework bilden die Verbindung zwischen diesen beiden Komponenten. Bei der Ausführung eines Robot-Skripts verwendet das Robot Framework die dem Keyword entsprechende Funktion. Dazu muss beim Starten der Robot-Framework-JAR-Datei mithilfe des Classpath-Imports jede Keyword-definierende JAR-Datei angeben werden (Listing 1). Ebenfalls ist in Listing 1 der generelle Aufruf der Java-Version des Robot Frameworks mit den gängigsten Parametern zu sehen. Alle JAR-Dateien werden dabei über den Parameter cp importiert. Eine bereits gepackte JAR-Datei für eine bestimmte Robot-Framework-Version lässt sich direkt von der Webseite herunterladen [1].

Listing 1: Bash-Befehl zum Starten des Java Robot Frameworks

FOLDER_NAME="NameOfTheTestToExecute" # put the java call together javaCall="java -cp robotframework-3.0.jar:keywords.jar org.robotframework.RobotFramework testVariables -C ansi --outputdir ${FOLDER_NAME} testName"

Um die Java Keywords letztendlich verwenden zu können, muss zusätzlich zum Import der JAR-Dateien an einer beliebigen Stelle im ausgeführten Robot-Skript die Main-Methode (Klassenpfad) mithilfe des Keywords Library importiert werden (Listing 2). Listing 3 zeigt einen Auszug der Java-Repräsentation einer Keyword-Klasse. Diese Klassen müssen vorgegebene Variablen mit den Modifiern final und public definieren. Alle Funktionen, die dem Robot Framework zur Verfügung stehen sollen, müssen mit dem Modifier public gekennzeichnet sein.

Listing 2: Deklaration der Klassenimporte in Robot-Skripten

 *** Settings *** Documentation User keywords for preparing test runs and other general tasks. Library keywordDef.camera.CameraKeywords Library keywordDef.general.GeneralKeywords

Listing 3: Deklaration benötigter Robot-Framework-Variablen in Java-Klassen

public static final String ROBOT_LIBRARY_SCOPE = "TEST SUITE"; public static final String ROBOT_LIBRARY_VERSION = "0.0.1"; public static final String ROBOT_LIBRARY_DOC_FORMAT = "ROBOT";

In Listing 4 ist eine Java-Funktion dargestellt, die als Keyword vom Robot Framework verwendet wird. Ansonsten gibt es keinerlei Einschränkungen bei der Verwendung von Java-Funktionen als Keywords für das Robot Framework. Die genaue Funktion der Schnittstelle zwischen Java und dem Robot Framework lässt sich an Listing 4 nachvollziehen. Des Weiteren sind die klare Struktur sowie der Gewinn an Übersichtlichkeit für die Robot-Skripte ersichtlich. Die Aufgabe des Beispiels ist es, eine Aufnahme auf einem der Testobjekte zu starten. Denn unser Lohn und Brot ist es, Kameras zu testen. Hierbei wird auf Robot-Framework-Ebene lediglich das Keyword benutzt, also Start Recording. Die dazu passende Java-Funktion wird aufgerufen und einige Checks werden durchgeführt, bevor die eigentliche Aufnahme gestartet wird. Ist es nicht möglich, im aktuellen Status des Testobjekts eine Aufnahme zu starten, wird die korrekte Fehlermeldung geworfen und das Robot Keyword bricht mit der entsprechenden Meldung ab. Dieses Beispiel erscheint noch recht übersichtlich, zeigt aber, wie au...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang