Nagler & Company: Expertise

Datenabstraktion als Grundlage für den effizienten Abgleich von Testdaten in Migrationsprojekten

von Dr. Andre Stoffel, 3 min. Lesezeit

Die Systemlandschaft von Finanzinstituten unterliegt stetigem Wandel und wird kontinuierlich weiterentwickelt. Regulatorik, wechselnde Geschäftsfelder und Produktinnovationen gehören zu den maßgeblichen Treibern von technologischen Entwicklungen der Finanzindustrie. Diese Themen wurden und werden stets mit den zum jeweiligen Zeitpunkt zur Verfügung stehenden Technologien, Ressourcen und Best-Practice Ansätzen umgesetzt. Zudem werden Altsysteme regelmäßig gepflegt, erweitert und ggf. durch neuere Alternativen ersetzt, wenn der wirtschaftliche Weiterbetrieb, beispielsweise durch veraltete Technologien und Ressourcenmangel, nicht mehr aufrecht zu erhalten ist. Dies bedingt die Durchführung von IT-Projekten zur Einführung neuer Systeme und beinhaltet regelmäßig die Migration großer Datenmengen.

Migrationsprozesse stellen häufig für alle Beteiligten eine große Herausforderung dar. Im Zentrum steht dabei die Notwendigkeit zur Sicherstellung von Kongruenz zwischen Daten in verschiedenen Systemen (z. B. Neu- und Altsystem). Da sich Datenstrukturen und -formate zwischen verschiedenen Systemen stark unterscheiden können, ist dies keine triviale Aufgabe. Ein unmittelbarer Vergleich der Daten ist häufig nicht möglich. Es besteht damit die besondere Herausforderung, die Daten aus verschiedenen Quellen vergleichbar zu machen (Normalisierung). Diese Problemstellung tritt in vielen Umsetzungsprojekten auf. Aus diesem Grund besitzen Finanzinstitute oft bereits Lösungen in Form von Testframeworks. In der Praxis sind diese Lösungen allerdings stark auf den jeweiligen Anwendungsfall und das spezifische Datenmodell zugeschnitten oder sehr komplex in der Benutzerführung. Dies führt dazu, dass für jedes Projekt Datenabgleiche und Tests neu entwickelt werden müssen.

Im Zuge von Implementierungsprojekten haben wir ein Framework zum generischen Abgleich von Daten aus verschiedenen Quellen entwickelt. Die wesentliche Weiterentwicklung im Vergleich zu bestehenden Anwendungen ist dabei die universelle Einsetzbarkeit unseres Frameworks unabhängig von Datenmodell, -strukturen und -formaten. Ein generisches Framework zum Datenabgleich soll in der Lage sein, ohne a-priori Kenntnisse über die Datenbeschaffenheit, (fast) beliebige Daten miteinander zu vergleichen. Dies bedarf einer Abstrahierung (Normalisierung), wodurch verschiedene Datenstrukturen aufeinander abgebildet werden können. Diese Normalisierung ist die notwendige Grundlage zur Konfiguration automatisierter Datenabgleiche. In diesem Artikel beschreiben wir Best-Practices für den Aufbau eines generischen Frameworks zum Datenabgleich. Im Folgenden verwenden wir den Begriff ‚Test‘ als Synonym für einen definierten ‚Vergleich‘ von Daten.

Der Benutzer steht im Vordergrund

Das Ziel unseres universellen Test-Frameworks ist, den Usern ein beherrschbares Tool an die Hand zu geben, mit dem Daten verschiedenster Formate aus unterschiedlichen Quellen verglichen werden können. Die Implementierung des Frameworks ermöglicht dem User die Konfiguration, Durchführung und Darstellung von Tests und deren Ergebnissen innerhalb einer Anwendung. Die Zielgruppe sind dabei Business Analysten, die, wenngleich sie nicht in einer technischen Rolle arbeiten, eine gewisse Technologieaffinität aufweisen, ohne weitreichende Programmierkenntnisse zu besitzen. Die Benutzeroberfläche muss auf die Bedürfnisse dieser Zielgruppe ausgerichtet sein. Der wesentliche Mehrwert unseres Frameworks ist dessen universelle Anwendbarkeit. Unser Framework ermöglicht auch Usern ohne Programmierkenntnisse die Erstellung komplexer Routinen zur Normalisierung und zum Abgleich von Daten. Im Folgenden beschreiben wir den Workflow zur Erstellung eines Tests im generischen Framework für Datenabgleiche.

Workflow und Funktionalitäten

Der Workflow für jeden vom User konfigurierten Test beinhaltet die folgenden Prozess-Schritte:


1. Datenbeschaffung

2. Definition der Daten-Normalisierung und des Tests

3. Durchführung

4. Auswertung und Visualisierung


Die Definition der Normalisierung stellt dabei die Kernkomponente unseres generischen Frameworks dar. In Bezug auf den Workflow ist hervorzuheben, dass es sich bei allen Schritten um testspezifische Konfigurationen handelt.

Die Datenbeschaffung ist ebenfalls Teil der spezifischen Testkonfiguration. Grundsätzlich soll es für den User im Hinblick auf die Datenquelle keine Einschränkungen geben. In der Regel werden jedoch bereits mit der Anbindung der gängigsten Datenformate die meisten Fälle abgedeckt. In der Praxis hat die Anbindung der folgenden Formate daher häufig Priorität:

  • SQL-Abfragen (PostgreSQL, Oracle, Sybase IQ, …)
  • CSV-Dateien
  • JSON-Dateien

Darüber hinaus stellen wir sicher, dass eine Anbindung weiterer Datenquellen mit Hilfe von Konfigurationsdateien unkompliziert möglich ist. Der User legt die Eingangsdaten für den Test mittels SQL-Query Abfrage oder einer eigens erstellten Python-konformen Query zum Einlesen von CSV-Dateien fest. Der User hat zusätzlich die Möglichkeit, Platzhaltervariablen in der SQL- oder CSV-Query zu definieren. Hierdurch können wichtige Parameter, wie z. B. das Setzen eines Datums, erst bei der Ausführung des Tests festgelegt werden. Somit werden manuelle Aufwände bei der Anpassung der Prozeduren zur Datenbeschaffung vermieden.

Im nächsten Schritt definiert der User die Normalisierung der Daten. Im Rahmen der Normalisierung werden die Daten mittels (mathematischer) Datentransformation, Konvertierung von Zelleninhalten und Umbenennung von Spaltennamen aufeinander abgebildet. Hierbei wird festgelegt, wie die Eingangsdaten transformiert, konvertiert und zusammengeführt (Konsolidierung) werden sollen. Aus theoretischer Sicht bedeutet Universalität bei der Normalisierung, dass „Turing Completeness“ gewährleistet sein muss. Um dies sicherzustellen, stellen wir den Usern standardisierte Kommandos zur Normalisierung der Daten bereit. Diese werden durch die Verwendung eines integrierten Syntaxparsers in Python-Code umgewandelt. Mit diesem Parser kann den Usern eine beliebige Anzahl von Befehlen zur Normalisierung der Daten bereitgestellt werden. Um Anforderungen an die Sicherheit zu entsprechen, verwenden wir in der Praxis eine Whitelist mit der eine bestimmte Anzahl von Kommandos sowie Kontrollflussstatements erlaubt sind und bedenkliche Befehle unzugänglich gemacht werden. Diese Liste kann aber bei Bedarf beliebig erweitert werden. Aufgrund des generischen Vorgehens entstehen hierbei keine Probleme bzgl. der Kompatibilität vergangener oder bestehender Testfälle. Analog zur Datenbeschaffung, ist es auch bei der Definition der Normalisierung möglich, Platzhaltervariablen zu verwenden.

Für die Definition der Normalisierung kann der User sowohl originäre Python-Befehle oder wahlweise eine vereinfachte Eingabemaske verwenden. Der Prozess der Datennormalisierung läuft selten linear ab. Stattdessen geht einer erfolgreichen Testdefinition in der Regel ein Trail & Error Prozess voraus. Während dieses iterativen Prozesses werden periodisch Testdaten eingelesen, aktualisiert und dem User als Preview bereitgestellt. Zusätzlich verwendet die Anwendung das so gewonnene Wissen über die Struktur der Daten, um dem User „smarte“ Hilfestellung bei der Eingabe von Transformationsanweisungen zu geben. Diese Funktionen erhöhen die allgemeine Akzeptanz des Frameworks und führen nach unserer Erfahrung zu durchweg positiver Resonanz. Die Eingabe komplexer Transformationsanweisungen über eine vereinfachte Eingabemaske sowie die genannten unterstützenden Funktionen erlauben es auch Usern ohne Programmierkenntnisse, umfangreiche Testfälle zu konfigurieren.

Durchführung: Nachdem der User einen Test erfolgreich definiert hat, kann dieser ad-hoc oder zu einem vom User festgelegten Zeitpunkt ausgeführt werden. Ein integrierter Scheduler erlaubt, periodische Tests zu einem festgelegten Zeitpunkt automatisiert durchzuführen. Dies kann nicht nur in Implementierungsprojekten, sondern auch bei laufenden Systemen verwendet werden, um automatisiert die Vollständigkeit und Qualität von Datenanlieferungen regelmäßig zu überprüfen.

Auswertung und Visualisierung: Die Ergebnisse der Tests werden in tabellarischer Form dargestellt. Dabei helfen die drei Ampelfarben Rot – Gelb – Grün, das Ergebnis von ganzen Testgruppen auf einen Blick schnell erfassen zu können. Im Hinblick auf die Auswertung und Darstellung der Testergebnisse lässt sich das Framework auch um weitere Funktionen erweitern. Hier ist beispielsweise die Konfiguration von Testgruppen sowie die Bearbeitung bestehender Tests (z. B. Verschieben, Kopieren) zu erwähnen. Darüber hinaus ist auch der automatisierte Versand der Testergebnisse per E-Mail denkbar. In der Praxis wird auch häufig die Definition von Ausnahmeregeln angefragt. In Teilen sind Differenzen im Datenabgleich erwartet und entstehen systembedingt (z. B. numerische Rundungsfehler). Diese erwarteten Fehler können mit Ausnahmeregeln vorab herausgefiltert werden.

Bewertung und Ausblick

Nach unserer Erfahrung bietet der Aufbau eines generischen Frameworks zum Abgleich arbiträrer Daten in der Praxis viele Vorteile. Durch die universelle Einsetzbarkeit können projektübergreifende Synergien realisiert werden. Dies ist nicht nur von Vorteil für das Unternehmen als Ganzes, sondern auch für die unmittelbar am Projekt beteiligten Mitarbeitenden. Insbesondere in Bereichen mit mehreren oder langlaufenden Projekten zahlen sich die anfänglichen Aufwände langfristig aus. Zusätzlich wird die Anwendung durch die universelle Einsetzbarkeit ggf. auch von anderen Teilen der Organisation nachgefragt.

Die Integration von Datenbeschaffung und Normalisierung in die Testdefinition ermöglicht die automatisierte und effiziente Durchführung von Datenabgleichen in Migrationsprojekten und zwischen laufenden Systemen. Wir haben dabei gesehen, dass die Einbindung einer Skriptsprache (mit eingeschränktem Funktionsumfang) eine wesentliche Voraussetzung zur Implementierung eines generischen Frameworks zum Vergleich arbiträrer Daten ist. Technologisch weniger versierte User sind nicht darauf angewiesen, diese Skriptsprache vollumfänglich zu erlernen, da eine vereinfachte Eingabemaske wesentliche Funktionen und Befehle der Skriptsprache abdeckt. So wird die Einstiegsschwelle für neue User deutlich gesenkt und die Akzeptanz sowie die Einsatzmöglichkeiten der Anwendung erweitert.

Nagler & Company verfügt über umfassende Erfahrung beim Aufbau generischer Frameworks zum Datenvergleich. Für die Automatisierung des Abgleichs großer Datenmengen haben wir beispielsweise die Anwendung NCDiff entwickelt.

In unseren Projekten arbeiten wir kontinuierlich an der Weiterentwicklung und Verbesserung unserer Konzepte für den Abgleich von Daten und die Durchführung entsprechender Tests.

Bei Interesse an einer weiterführenden Diskussion zu unserer Herangehensweise und Best-Practice-Ansätzen sprechen Sie uns gerne an!

Dr. Andre Stoffel

Dr. Andre Stoffel

Expertise