Durch Agile- und DevOps-Methoden werden die Releasezyklen immer kürzer und in diesem Kontext ist ein aktives Testdatenmanagement zwingend erforderlich. Das Gesamtvorhaben funktioniert nur durch „Continuous Testing“. Das heißt, dass der Test frühzeitig eingebunden wird und die Testdaten bei Bedarf „auf Knopfdruck“ zur Verfügung stehen. Dafür ist zum Beispiel eine hohe Automatisierungsrate sehr wichtig. Grundsätzlich geht es aber um den Shift-left-Ansatz, das heißt, um die Fragestellung, wie die Test(daten)prozesse beschleunigt beziehungsweise verschlankt werden können, um schneller auf Marktveränderungen zu reagieren.
Erschwerend kommt die Datenschutzgrundverordnung EU-DSGVO hinzu, die am 25. Mai 2018 in Kraft getreten ist. Seitdem ist ein noch sensiblerer Umgang mit personenbezogenen Daten notwendig. Die anfängliche Schonfrist scheint vorbei zu sein, denn mittlerweile wurden Sanktionen im zweistelligen Millionenbereich ausgesprochen. Nun sollte auch der allerletzte ITler die neuen gesetzlichen Regelungen beachten. Dies gilt natürlich auch für die Entwicklungsteams, denn Echtdaten haben im Test nichts verloren, da die Verwendung nicht zweckgemäß wäre. Diese Problematik lässt sich im Rahmen von Testdatenmanagement lösen. Die Datenschutzbrisanz löst sich nämlich bei der Nutzung von synthetischen Testdaten komplett auf. Eine Alternative ist die Verfremdung von Produktionsdaten, wobei sichergestellt werden muss, dass der Verfremdungsalgorithmus nicht zurückverfolgt werden kann.
Im Folgenden wird die Testdaten-Thematik beleuchtet und einige Best Practices aus der Praxis erläutert.
Die Signifikanz von synthetischen Testdaten
Von synthetischen Testdaten ist die Rede, wenn in der Testumgebung künstliche Testdaten erzeugt werden, um das Verhalten von Echtdaten in der Produktion zu simulieren. Je realitätsnaher der Test ist, desto aussagekräftiger sind auch die Testergebnisse. Die synthetischen Testdaten werden so geformt, dass möglichst alle Korrelationen der realen Daten abgebildet werden.
Die Erstellung der Testdaten kann entweder manuell über die Anwendung erfolgen oder automatisiert über ein geeignetes Testdaten-Tool. Die initialen Aufwände, um die Skripte für die Automatisierung zu erstellen, lohnen sich insbesondere ab einer gewissen Anzahl an Test-Wiederholungen. Synthetische Testdaten sind besonders wertvoll, um zum Beispiel ein strukturiertes Regressionstestset aufzubauen oder aber um spezielle Konstellationen zu testen, die produktiv noch nicht erhoben werden können. Bei der Weiterentwicklung einer Anwendung können somit unter anderem neue Funktionalitäten durch synthetische Testdaten getestet werden. Dies inkludiert auch die Einbeziehung von negativen Testfällen.
Theoretisch ist es möglich, jegliche Testdatenkonstellation synthetisch zu erstellen. Für die Erreichung einer hohen Testabdeckung ist das hervorragend. Es ist sehr wichtig, sorgfältig zu testen, um vor der Freigabeerteilung beziehungsweise -empfehlung Transparenz zu haben bezüglich der Funktionsfähigkeit der Anwendung. Zum Beispiel müssen die Sachbearbeiter vor dem Go-Live geschult werden, wie sie mit der neuen Version der Anwendung zu arbeiten haben. Sie müssen wissen, welche Funktionalitäten korrekt umgesetzt wurden, welche Einschränkungen (ggf. Workarounds) es gibt und welche Funktionalitäten gar nicht erst lauffähig sind, sodass beispielsweise gewisse Vorgänge händisch erfasst werden müssen. Um diese Informationen übergeben zu können, wird eine hohe Testabdeckung benötigt sowie eine ausgezeichnete Testdaten-Qualität.
Frühzeitige Schnittstellentests durch Service-Virtualisierung
Mit steigender Komplexität in der Anwendung, zum Beispiel durch erhöhte Anzahl an Schnittstellen, wird das Testen entsprechend aufwendiger oder schwieriger. Dadurch verkompliziert sich auch die Testdatenbereitstellung. Angenommen, ein Schnittstellenpartner ist im Test blockiert oder noch nicht bereit für den Test, so kann der Test durch einen Mock trotzdem ermöglicht werden. Hierbei wird das Schnittstellen-Verhalten für die Partner-Anwendung über eine Test-Attrappe simuliert. Dafür müssen die zugehörigen Eingabe- und Ausgabewerte bekannt sein. Falls der Ausgabewert unabhängig ist vom Eingabewert und beliebig sein darf, so kann ein fixer Dummywert definiert werden. Diese Technik wird als Stub bezeichnet und ist eine vereinfachte Form.
Datenbankmanipulation zur Erfüllung von Vorbedingungen
Für bestimmte Testfälle gibt es Vorbedingungen, die erfüllt sein müssen. Diese notwendigen Testdatenkonstellationen lassen sich in manchen Fällen synthetisch, über eine Datenbankmanipulation, schneller erzeugen als direkt über die Anwendung. Wenn zum Beispiel Testdaten benötigt werden, die in einem Vorgang einen gewissen Status erreicht haben, so verläuft der Prozess wesentlich effizienter, wenn der gewünschte Status direkt in der Datenbank eingetragen wird.
Für Tester mit Datenbank-Skills sollten diese kleineren Anpassungen in der Datenbank ein leichtes Spiel sein. Wichtig ist es, die Szenarien zu identifizieren, bei denen dieser Ansatz sinnvoll ist.
Automatisierte Generierung von Testdaten
Einer der größten Schmerzpunkte im Testdatenprozess sind die hohen manuellen Aufwände. Deshalb spielt die Automatisierung in diesem Zusammenhang eine sehr wichtige Rolle. Sie hilft, die Geschwindigkeit und Qualität im Test zu steigern, sofern eine sinnvolle Strategie dafür entwickelt wurde. Die Automatisierung ist ein Hebel um, die „Time-to-Market“ zu verringern, weil die Tests nach Entwicklungsende ohne Zeitverluste durchgeführt werden können. Durch den Aufbau eines entsprechenden Frameworks ist es sogar möglich, die automatisierten Tests über Nacht laufen zu lassen.
Auf dem Markt herrscht großer Konkurrenzkampf zwischen den Toolherstellern. Die Entscheidung, welches Tool zur Automatisierung implementiert werden sollte, hat nach genauer Prüfung der projekt-spezifischen Faktoren zu erfolgen. Hierzu sollte unbedingt die gesamte Testdatenstrategie herangezogen werden, um gegebenenfalls weitere Synergieeffekte durch die Tool-Funktionalitäten zu erzielen.
Abb. 1: Zentrales Testdatenmanagement-Team
Gold Copy als Testdaten Baseline
Bei diesem Ansatz wird einmalig (bzw. in vorbestimmten Intervallen) eine repräsentative Untermenge aus der Produktion extrahiert (Data Subsetting), verfremdet und in die Testumgebung eingespielt. Mit der Erstellung von synthetischen Testdaten sollten fehlende Konstellationen ergänzt werden. Diese fixierten Testdaten bilden die Baseline und können bei Bedarf zur Wiederverwendung zurückgesetzt werden. Alle Entwicklungsteams können somit auf denselben Stand der Testdaten zugreifen.
Die Gold Copy kann durch die Entwicklungsteams bestimmt werden, die alle Konstellationen, die für den Test benötigt werden, zentral anfordern. Andererseits können Machine Learning-Algorithmen eingesetzt werden (Data Profiling), um die Datenstrukturen
in der Produktion zu analysieren und entsprechend die repräsentative Untermenge an Daten zu bestimmen.
Mithilfe von künstlichen neuronalen Netzwerken ist es heutzutage auch möglich, aus einem kleinen Datensatz aus der Produktion synthetische Testdaten abzuleiten, in denen alle Korrelationen der realen Daten berücksichtigt sind.
Am Rande sei hier auch erwähnt, dass durch Machine Learning-Algorithmen Erkenntnisse darüber gewonnen werden können, welche Anwendungs- beziehungsweise Geschäftsprozesse im Echtbetrieb besonders häufig genutzt werden. Diese Abläufe können im Test intensiver geprüft werden.
Herausforderungen bei synthetischen Testdaten
Nicht zu unterschätzen sind die Komplexität und der zeitliche Aufwand, um synthetische Testdaten in entsprechender Qualität zu generieren. Die Integrität beziehungsweise Vollständigkeit kann nur erreicht werden, wenn exzellentes Wissen über die Anwendung im Team vorhanden ist.
Eine weitere Herausforderung ist es, Testdaten so zu generieren, dass sie nicht nur über Schnittstellen hinweg konsistent sind, sondern auch über mehrere Teststufen hinweg konsistente Testergebnisse liefern. Wenn beispielsweise Testdaten im Komponententest erfolgreich eingesetzt wurden, sollten diese Daten im Systemtest ebenfalls erfolgreich eingesetzt werden können. Sonst entstehen unnötige zeitliche Verzüge in der nächsten Teststufe. Insbesondere für den Fall, dass unterschiedliche Teams verantwortlich sind für die jeweiligen Teststufen, sollte der Einsatz konsistenter Testdaten vom Team der nächsten Teststufe durchaus aktiv gefordert werden.
Testdaten von schlechter Qualität sind nutzlos und können sogar unnötige hohe Aufwände erzeugen, wie bei sogenannten „false positives“. Hierbei handelt es sich um Fehlalarme, die auf mangelhafte Testdaten-Qualität zurückzuführen sind. Somit werden vermeidbare Aufwände durch unnötige Testdurchführung, Defect-Erstellung und Analyse des vermeintlichen Fehlers erzeugt.
Kontext zum Testumgebungsmanagement
Die Basis, um überhaupt testen zu können, ist eine stabile Testumgebung. Downtimes in der Testumgebung können aus unterschiedlichen Gründen auftreten. Wichtig dabei ist, dass diese sofort von den Testern an das Testumgebungsmanagement kommuniziert werden. Sobald eine Testumgebung (wieder) verfügbar ist, sollten die Tester umgehend informiert werden. Eine effektive Kommunikation bezüglich der Testumgebungen ist also auch elementar für den Shift-left-Ansatz.
Aus Kostengründen ist es auch bedeutend, dass die Kapazitäten der Testumgebung effizient genutzt werden. Die Testumgebung sollte deshalb nicht mit redundanten Testdaten überflutet werden und nicht mehr benötigte Testdaten sollten in regelmäßigen Abständen bereinigt werden.
Dediziertes Testdaten-Team
Hilfreich sind dedizierte und serviceorientierte Testdatenexperten im Projekt-Team, die sich nicht nur mit der Anwendung bestens auskennen, sondern auch technisch fit sind, das heißt, Wissen mitbringen für die notwendigen Tools, Skripte und Datenbanken. Wie die Testdaten-Experten in das Projekt-Team eingebettet werden, hängt ganz davon ab, in welchem Modell operiert werden soll. Beispielsweise könnte in einem besonders großen Projekt, als Startpunkt, ein zentrales Testdaten-Team aufgesetzt werden, das im Laufe der Zeit anfängt, hybrider zu agieren. Eine andere Debatte könnte zum Beispiel darüber geführt werden, ob das Projekt geeignet ist, um die Zusammenarbeit mit einem Delivery-Team aus Offshore oder Nearshore anzugehen.
Das Testdaten-Team trägt, unabhängig vom Modell, die Verantwortung dafür, dass die oben genannten Potenziale entfaltet werden. Darüber hinaus sind alle Testdaten-Prozesse angefangen von der Identifizierung der Testdaten, über Akquisition, Modifizierung, Bereitstellung bis hin zur Wartung der Testdaten in den Händen dieses Teams. Die Definierung von performanzbasierten Metriken ist essenziell, um den Erfolg messbar zu machen.
Fazit
Dieser Artikel beschreibt die aktuellen Trends im Testdatenmanagement. Der Leser sollte mitnehmen, dass die Komplexität in den Anwendungen steigt und dass die Rahmenbedingungen für die Softwareentwicklung sich verändern. Aufgrund von DevOps und Agile Praktiken gibt es kürzere Releasezyklen und auch die Datenschutzregelung bringt weitere Herausforderungen. Die Qualität der Software sollte nicht darunter leiden. Im Gegenteil, das ultimative Ziel ist es, seinen Kunden möglichst eine fehlerfreie Anwendung bereitzustellen. Deshalb sollten Qualitätsmaßnahmen in jede Phase der Softwareentwicklung integriert werden. Der Schlüssel für die erfolgreiche Integration ist die Einbettung eines professionellen Testdatenmanagements. Die Potenziale, zum Beispiel durch den Einsatz von synthetischen Testdaten, wurden anhand von Best Practices erläutert.