MOBI-FIT – Testautomation bei der Mobiliar

Mit dem Projekt Mobi FIT (Future IT) will die Mobiliar ihre IT modernisieren. Ein Aspekt davon ist das automatisierte Testing. Obwohl bereits sehr viele Unit- und Integration-Tests existieren, fehlten vor dem Projekt für einige Systeme noch durchgängige Systemtests sowie System-Integrationstests. Puzzle ITC durfte die Mobiliar bei der Erstellung dieser Tests unterstützen.

Ausgangslage und Lösung

Die B2E-Plattform der Mobiliar ist als Micro-Service-Landschaft aufgebaut. Neben bereits bestehenden, umfangreichen Unit- und Schnittstellen-Tests wurden nun Systemtests aufgebaut. Diese testen mehrere Komponenten im Zusammenspiel miteinander. Das heisst, dass die als zusammengehörend definierten Komponenten als Einheit getestet werden.

Um dies zu ermöglichen, werden die zu testenden Services zusammen in einer eigenen Umgebung installiert und miteinander verbunden. Alle Schnittstellen zu Services, die nicht zu diesem Verbund gehören, werden mit zuvor aufgezeichneten Daten simuliert.

Zu den zu testenden Komponenten gehört auch das Web-GUI der zentralen Applikation. Direkt über dieses Web-GUI wird dieses Teil-System dann mittels End-to-End-Tests automatisch auf dessen Funktionalität geprüft. Die Eingaben im GUI werden mittels Frontend-Test (Protractor) simuliert und so der Business-Prozess auf Schnittstellen-Funktionen und Durchgängigkeit geprüft.

Diese End-to-End-Tests werden auch auf die „echten“ bzw. „vollständigen“ Testsysteme angewendet. Ab diesem Schritt werden die Tests als System Integrationtests bezeichnet.

Die Rolle von Puzzle

Puzzle ITC hat einzelne Komponenten so vorbereitet, dass sie in einem Docker-Container/Kubernetes Namespace laufen und über AMW/Liima konfiguriert und deployed werden können. Der Namespace wird so konfiguriert, dass die „live“-Komponenten miteinander verbunden sind und alle von ihnen ausgehenden Schnittstellen von einem Mock-Service beantwortet wurden.

Dieser Mock-Service bestand bereits, musste aber stark erweitert werden, um den Anforderungen zu genügen. Diese bestand darin, dass der Mock-Service im Aufzeichnungsmodus als Proxy zu den echten umliegenden Systemen verbindet und die Anfragen und Antworten aufzeichnet, um sie später wieder so zurückgeben zu können. Dazu musste sich der Mock-Proxy auch bei den umliegenden Systemen authentifizieren können, was mit Client-Zertifikat-Authentisierung nicht ganz trivial war. Zusätzlich musste der Mock-Proxy neben REST- auch SOAP-Schnittstellen simulieren können. Weiter bauten wir auch ein Mock-Message-Bean, das auf einer JMS-Queue auf alle eingehenden Nachrichten umgehend eine Antwort im richtigen Format zurück sendete. Zum Schluss wurden mit Protractor die End-to-End-Tests implementiert und diese in die Build-Pipeline aufgenommen.

Das MockMe-Objekt liefert für das GUI (.js) sowie die einzelnen Services die Testdaten innerhalb des Geschäftsprozesses.

In mehreren Meetings und Workshops haben wir laufend das erarbeitete Know-how zurück an die Entwickler der Mobiliar transferiert. Aus diesem Projekt entstand zudem ein Folgeauftrag in einem anderen Projekt zum Thema End-to-End-Testautomatisierung mit Protractor.

Technologien

  • Docker & Kubernetes
  • Liima
  • TeamCity
  • REST, SOAP
  • TLS, PKI/Client-Cert
  • Protractor, Selenium
  • Grunt