Referenz Uelzener VersicherungenAufbau einer Testautomatisierungslandschaft bei den Uelzener Versicherungen 

Die Uelzener Versicherungen stehen seit über 150 Jahren an der Seite von Mensch und Tier. Mit über 300 Mitarbeitenden und mehr als 500 000 Kundinnen und Kunden ist der Spezialversicherer einer der beliebtesten Anbieter bei Versicherungen rund um Hunde, Pferde und Katzen, vor allem in den Bereichen Haftpflicht-, Krankheits- und Unfall-Risiken. Neben Tieren privater Kundinnen und Kunden versichert das Unternehmen auch Betriebe wie Tierpensionen, Tierheime und Hundeschulen sowie Landwirte mit Viehhaltung.

Uelzener-Versicherungen-Gebaeude.

Ausgangslage und Zielstellung

2017 entschied sich die Uelzener, das interne Bestandssystem komplett zu erneuern. Die Wahl fiel auf eine in Java entwickelte Softwarelösung, die bereits in der Schweiz ihren Einsatz bei verschiedenen Krankenversicherungen findet. Die Software bietet die Möglichkeit, durch Parametrierung tief in das System einzugreifen und die Software auf die individuellen Bedürfnisse der Uelzener maßzuschneidern. Vorteilhaft bei dieser Vorgehensweise sind umfassende Individualisierungsmöglichkeiten, die bei einem Spezialversicherer definitiv notwendig sind. Eine Herausforderung besteht darin, dass die Verantwortung für die korrekte Funktionsweise des Bestandssystems allein bei der Uelzener liegt. Um die Qualitätssicherung der selbst vorgenommenen Parametrierung vornehmen zu können, sollte diese unter anderem mit automatisierten Testfällen sichergestellt werden. Zur Unterstützung der Einführung der Testautomatisierung bei der Uelzener wurde die proficom GmbH als Dienstleister beauftragt.

Ziel war es, ein Testautomatisierungs-Framework und eine Testinfrastruktur aufzubauen, die den manuellen Testaufwand verringert und frühzeitig zu bestimmten Test-Zyklen eine Aussage über die Qualität der Software liefern kann. Das einzige Tool, das bereits gesetzt war, kommt ebenfalls aus der Schweiz und heißt „Oryon“. Oryon ist ein proprietäres Test-Framework zum automatisierten Steuern von JavaFX- und Swing-Anwendungen.

Zum Start: Überarbeitung bestehender manueller Tests

Eine Kernfunktionalität des Bestandsystems ist die Anlage neuer Versicherungsverträge für die unterschiedlichsten Produkte der Uelzener. Gleichzeitig dienen diese Versicherungsverträge als Grundlage aller weiterführenden Prozesse. Aus diesem Grund setzte man bei der Umsetzung der Testautomatisierungs-Lösung bei den Versicherungsverträgen an. Grundlage eines guten automatisierten Testfalls ist ein detailliert beschriebener manueller Testfall. Dies stellte sich als erste Hürde für das Testmanagement heraus. Bei der Beschreibung der manuellen Testfälle kommt es auf größtmögliche Detailtreue an. Da die vorhandenen Testfälle von erfahrenen Fachexpert:innen geschrieben wurden, fehlte diesen verständlicherweise mitunter die notwendige Detailliertheit. Daher wurden im ersten Schritt präzisere Testfallbeschreibungen verfasst. Außerdem mussten bestimmte Vorbedingungen in den Testfallbeschreibungen berücksichtigt werden. Ein Versicherungsvertrag kann beispielsweise nur angelegt werden, wenn ein Vertriebspartner und eine natürliche Person existieren. So wurden nach und nach manuelle Testfälle aufgearbeitet, um weitere Schritte ergänzt und mit fachlichen Details versehen. Hierzu wurde das Open Source Tool Managementsystem TestLink verwendet.

Umsetzung der ersten automatisierten Testfälle

Technologisch gesehen handelt es sich bei dem Bestandsführungssystem um eine JavaFX-Anwendung. Somit lag die Entscheidung nahe, bei der Programmiersprache im Java-Kontext zu bleiben. Das Tool Oryon bietet die Möglichkeit, über ein Build Management Tool eingebunden zu werden. Hier fiel die Wahl auf Maven. Des Weiteren kam im internen Entwicklungsteam der Uelzener Jenkins als Build-Server für verschiedene Aufgaben zum Einsatz. Damit waren auch schon die wichtigsten Eckpfeiler gesetzt und ein erster Testfall konnte prototypisch umgesetzt werden.

Bei der Umsetzung orientierte man sich an einer klassischen Automatisierung mit TestNG, Selenium und dem Page-Object-Pattern. Im vorliegenden Anwendungsfall wurde lediglich Selenium durch Oryon ersetzt. Das Grundkonzept blieb gleich und wird hier stichpunktartig aufgezeigt:
 

  1. Definition von verschiedenen Testklassen als Testbaustein
  2. Zusammenfügen mehrerer Testbausteine zu einer TestNG-TestSuite
  3. Implementierung von PageObjects, die entsprechende Masken im Bestandsführungssystem abbilden
  4. Erstellung eines Reports mit Hilfe von Extent Reports

Höhere Testabdeckung durch Einführung verschiedener Variationen

Bei der Automatisierung der Vertragsanlagen für die verschiedenen Produkte wurde deutlich: Es gibt eine Reihe von Daten, die Auswirkungen auf den zu leistenden Beitrag und interne Versicherungsprozesse haben. Je nach Produkt ist beispielsweise auschlaggebend, welche Hunderasse versichert und welche Tarif-Optionen ausgewählt werden sollen.

Aus diesem Grund musste eine Lösung geschaffen werden, die in der Lage war, bereits erstellte Testfälle für die Vertragsanlage mit Input-Parametern zu versehen. Hierzu wurden zunächst alle variablen Daten in einer MySQL-Datenbank gesammelt und in entsprechenden Tabellen hinterlegt.

Diese spezifischen Tabellen werden nun bei jeder Testausführung ausgelesen und in ein Datenmodell überführt. Das Datenmodell wiederum kann dann in einer beliebigen Testklasse verwendet werden. Technisch kam hier das Spring Data JDBC Framework zum Einsatz.

Übrigens läuft die MySQL Datenbank bis heute in einem Docker Container. Dieser Mechanismus der Container-Virtualisierung wurde auch für die nächste Herausforderung herangezogen.

Herausforderungen bei der Testausführung über Jenkins

Aufgrund des breiten Produktportfolios von ca. 80 verschiedenen Produkten und der Möglichkeit, unterschiedliche Varianten zu hinterlegen, entstand in kürzester Zeit eine Menge von ca. 1.000 Testfällen für die Vertragsanlagen.

Zusammen mit dem internen Uelzener Entwicklungsteam wurde hierzu ein eigenes Docker Container Image entworfen. Dieses Image basiert auf Ubuntu und wurde um verschiedene Packages erweitert, sodass das Bestandsführungssystem in dem Container mit Hilfe eines X-Window-Systems laufen konnte.

Dadurch war es uns möglich, bis zu zehn Build Agents gleichzeitig laufen zu lassen. Bis heute ist dieser Mechanismus stabil und ermöglicht uns, ca. 100 Testfälle (mit unterschiedlicher Komplexität) pro Stunde laufen zu lassen - aktuell werden über Nacht ca. 900 Tests in neun Stunden ausgeführt.

Typische Testausführung über Jenkins.
Typische Testausführung über Jenkins

Erweiterung der automatisierten Testfälle um die Dokumentenprüfung

Nachdem sich die Grundzüge der Testautomatisierung allmählich bei der Uelzener etabliert hatten, kamen die ersten Fachbereiche mit verschiedenen Anforderungen auf uns zu. Das Output Management bearbeitet unter anderem die Erzeugung verschiedener vertragsrelevanter Dokumente. Das heißt beispielsweise, wenn ein Kunde einen Versicherungsvertrag abschließt, bekommt er auch entsprechende Unterlagen per Post oder per E-Mail zugeschickt. Die Daten, die in diese Dokumente fließen, werden zum Teil aus dem Bestandsführungssystem ausgelesen und zum Teil selbst von der Uelzener spezifiziert. Dazu entwickelte das Testautomatisierungsteam einen Mechanismus, der darauf aufmerksam macht, wenn sich zwei Dokumente unterscheiden, um Unstimmigkeiten zu identifizieren Den Lösungsansatz lieferte dabei pdfcompare (ein Open-Source Framework, welches auf Apache PDF Box basiert). Mit Hilfe dieses Framework war es uns möglich, Dokumente detailliert miteinander zu vergleichen, aber auch dynamische Daten gezielt vom Vergleich auszuschließen.

Bei der Ausführung der Testfälle unterscheiden sich einige Daten im Dokument (z. B. Datumsangaben oder fortlaufende Nummern), diese werden in dem Dokumentenvergleich ausgeklammert bzw. nicht berücksichtigt. Ein Fehler innerhalb des Dokumententextes wird jedoch beim Textvergleich erkannt. Die Abweichungen im Dokument sind farblich markiert.

Erzeugtes Dokument für die Unterschiede.
Erzeugtes Dokument für die Unterschiede

Abschluss von Verträgen über verschiedene Web-Portale

Die Uelzener überarbeitet aktuell einen Teil ihrer Produktpalette, die über verschiedene Web-Portale angeboten wird. Auch hier unterstützt unser Team nun bei der Überführung von manuellen zu automatisierten Tests. Tool der Wahl ist hier hauptsächlich das Open-Source-Framework Selenium. Mit diesem Framework ist es möglich, verschiedene Browser automatisiert zu steuern. Der Aufbau ähnelt dem Testautomatisierungsprojekt des Bestandssystems, jedoch mit einigen Verbesserungen, die durch unsere Erfahrungswerte entstanden sind.

Website der Uelzener Versicherungen.
Website der Uelzener Versicherungen


Es kam hier nicht nur ein weiteres Testobjekt hinzu, sondern wir haben nun auch die Möglichkeit, komplexere End-to-End-Testfälle zu entwerfen und zu automatisieren. Beispielsweise wird überprüft, ob Verträge, die über das Web-Portal abgeschlossen werden, korrekt im Bestandssystem ankommen. Dazu werden verschiedene Systeme im Hintergrund durchlaufen und entsprechende Events getriggert. 

Systemlandschaft und Umfang der automatisierten Testfälle

Über den Zeitraum der letzten fünf Jahre haben wir in unserem Team insgesamt über 2080 Testfälle automatisieren können. Damit konnten wir die wichtigsten Grundfunktionalitäten aus den Fachbereichen abdecken, die mit dem Bestandssystem arbeiten. Wie die Komplexität der zu testenden Systemlandschaft gestiegen ist, veranschaulichen die folgenden Schaubilder:

Systemlandschaft zu Beginn-400x265.
Systemlandschaft zu Beginn
Systemlandschaft2-612x566.
Systemlandschaft aktuell


Diese Vielzahl an Testfällen mit verschiedenen Schwerpunkten bringt aber auch neue Herausforderungen mit sich. Der Aufwand an Wartungs- und Monitoring-Arbeiten sollte hierbei nicht unterschätzt werden. 

Resümee

Die Testautomatisierung ist ein wichtiger Bestandteil der Arbeitsabläufe bei der Uelzener geworden. Insbesondere zu jeder Testphase werden die automatisierten Testfälle herangezogen, um frühzeitig eine Einschätzung zu der Qualität der gelieferten Softwarepakete geben zu können. Erst nachdem wir „grünes Licht“ geben, folgen weitere Schritte in der Prozesskette, wie das manuelle Testen. Es können zwar nie alle Testfälle automatisiert werden, jedoch spart die Uelzener pro Testphase aktuell drei Wochen an manuellem Testaufwand. Auch bei der Erfüllung der Vorgaben, die von der Versicherungsaufsicht der BaFin gegeben werden, ist die Testautomatisierung hilfreich. Die Ergebnisse der einzelnen Test-Zyklen können damit schneller und effizienter geliefert werden.

Von Beginn an hat die proficom die Uelzener bei der Erstellung der automatisierten Testfälle sowie beim Aufbau einer entsprechenden Testinfrastruktur unterstützt. Auch in Zukunft wird diese Zusammenarbeit fortgesetzt, um sich gemeinsam den bevorstehenden Herausforderungen zu stellen.

Testteam Uelzener und proficom.
Das Projektteam traf sich im April 2023 auf einem Kundenevent der proficom.
Background Image Mobile Version