Qualitätssicherung XING

Testautomatisierung für die Micro Focus Automatisierungstools

Das profi.com Cloud-Team beschäftigt sich mit der Frage: "Wir automatisieren den ganzen Tag Flows and Services, warum dann nicht auch unsere Tests?"

In unserem Cloud-Team entwickeln wir jeden Tag zahlreiche neue Flows in dem Tool Micro Focus Operations Orchestration (OO). Diese kommen dann entweder direkt zum Einsatz oder bilden die Basis für bestellbare Services, die in Form von sogenannten Offerings mit dem Tool Micro Focus Cloud Service Automation (CSA) bereitgestellt werden. Damit werden immer gleichartige und wiederkehrende Arbeitsschritte, zum beispiel für die Bereitstellung einer virtuellen Maschine, automatisiert ausgeführt. All diese Neuentwicklungen müssen natürlich getestet werden. Dazu werden, je nach Änderung, alle betreffenden Services bestellt, das bedeutet Bestellformular ausfüllen, Lifecycle kontrollieren und das am besten für alle möglichen Bestelloptionen. Dieser Aufwand steigert sich mit jedem neuen Service in dem die Neuentwicklung / Anpassung zum Einsatz kommt. Da drängt sich doch die Frage auf: "Wir automatisieren den ganzen Tag Flows and Services, warum dann nicht auch unsere Tests?" Weil einer damit anfangen muss!

Dieser Anfang ist nun gelegt und soll in diesem Beitrag vorgestellt werden.

Der Testautomatisierungsansatz ist so gewählt, dass sich sowohl für OO- als auch CSA-Testautomatisierung die Logik in einem OO-Flow befindet. Dieser kann von einen beliebigen Scheduler (z.B. OO selbst, Jenkins...) mit entsprechenden Input-Parametern gestartet werden. Das Testresultat wird als Flow-Output zurückgegeben und kann von der jeweiligen Testumgebung weiterverwendet werden.

Testautomatisierung für Operations Orchestration

Für die OO Testautomatisierung nutzen wir dessen REST API "https://<host>:<port>/oo/rest/v2/executions". Dem REST-Call geben werden die UUID des zu testenden Flows und die entsprechenden Input-Parameter mitgegeben und wir erhalten eine RunID zurück. Mit dieser lassen sich über "https://<host>:<port>/oo/rest/v2/executions/<RunID/execution-log" alle benötigten Informationen abfragen. Neben dem Status, ob der Flow erfolgreich durchgelaufen ist oder nicht, sind für uns die Flow-Output-Parameter interessant. Diese werden dann mit der Liste der zu erwarteten Outputs verglichen und im Falle von Abweichungen zusammen mit dem Flow-Status dokumentiert.

Weiterhin ist es auch möglich, Listen von Flows und zugehörigen Inputs zu übergeben und diese auszuwerten.

Testautomatisierung für Cloud Service Automation

Der automatisierte Test eines CSA Services ist etwas komplexer. Zunächst einmal wird ein XML benötigt, welches die Struktur des Service Offerings mit seinen Subscriber Options widerspiegelt. Dieses kann über einen Hilfs-Flow erstellt werden. Dazu werden zunächst die Details des zu testenden Service Offerings über die CSA REST API "https://<host>:<port>/csa/rest/catalog/<catalogId>/offering/<serviceOfferingId>?userIdentifier=<userIdentifier>" abgeholt und mittels XSLT-Stylesheet in ein XML zur Bestellung dieses Services umgewandelt. In diesem sind die dem Offering hinterlegten Standardwerte vordefiniert. Für die jeweiligen Testfälle kann dieses XML dann angepasst werden.

Der OO-Flow der CSA-Testautomatisierung erwartet als Input solch ein XML, welches alle für den Service benötigen Informationen enthält. Über den Endpunkt "https://<host>:<port>/csa/rest/catalog/<catalogId>/request?userIdentifier=<userIdentifier>" der CSA REST API wird die Bestellung dann veranlasst und wir erhalten eine Request-ID zur Nachverfolgung zurück. Über diese wird der Lifecycle (siehe Abbildung 1) abgefragt. Im Falle einer fehlgeschlagenen Lifecycle Action wird deren Namen und die zugehörige Statusinformation dokumentiert. Weiterhin werden am Ende des Lifecycles alle Service Properties ausgelesen.

Mit diesem Testautomatisierungsansatz ergeben sich verschiedene Vorteile:

  • Test des aktuellen Entwickelungstands in regelmäßigen Intervallen
  • 24/7 Testen
  • Schnellere Testdurchführung
  • Größere Testabdeckung durch Parametrisierung der Flow-Inputs
  • Statistische Auswertemöglichkeiten, z.B. wie oft sind bestimmte Umsysteme nicht erreichbar

Dieser Testautomatisierungsansatz für CSA und OO legt den Grundstein für das automatisierte Testen von OO-Flows und CSA-Service Offerings und wartet nun auf den ersten Use Case. Daraus werden sich mit Sicherheit neue Anforderungen ergeben um die Testautomatisierung weiter zu verfeinern.

Autor

Eric MüllerAssociate IT-Consultant
Eric Müller