Automatisierter Testprozess zum Testen der Streaming-Data-Pipelines in der Produktion.
Einführung
Ermöglichte die Testausführung bei Bedarf und reduzierte unseren Regressionszyklus auf 70 %, indem er ihn in die KI integrierte.
Über die Ultimate Kronos Group
Ultimate Kronos Group (UKG) ist ein amerikanisches multinationales Technologieunternehmen mit zwei Hauptsitzen in Lowell, Massachusetts, und Weston, Florida. Sie erbringt Dienstleistungen im Bereich Personalmanagement und Personalverwaltung. Als führender globaler Anbieter von HCM-, Lohn- und Gehaltsabrechnungs-, HR-Service- und Workforce-Management-Lösungen unterstützt UKG mit seinen preisgekrönten Pro-, Dimensions- und Ready-Lösungen Zehntausende von Unternehmen in allen Regionen und Branchen dabei, bessere Geschäftsergebnisse zu erzielen, die HR-Effizienz zu verbessern, den Lohnabrechnungsprozess zu rationalisieren und die Arbeit zu einem besseren und vernetzten Erlebnis für alle zu machen.
Auswirkungen
- Ein Plug-and-Play-Framework zur Testautomatisierung, mit dem UKG die Tests der Entwickler beschleunigen und die Testabdeckung um 230 % erweitern kann.
- Verringerung der Regressionszeit um 70 % und Ermöglichung der Testausführung bei Bedarf.
- Minimieren Sie die Abhängigkeit von vorgelagerten Quellteams durch dynamische Ereignisgenerierung.
Die Herausforderung
Um dies zu erreichen, sah sich das Team mit zahlreichen Herausforderungen konfrontiert, die im Folgenden aufgeführt sind:
- Mangel an Testdaten
Da wir keinen Zugriff auf das vorgelagerte System haben, haben wir mit den nachgebildeten Ereignissen aus dem vorgelagerten System getestet, aber diese begrenzten Ereignisse sind nicht gut genug, um die Qualität der Produktionsdaten-Pipelines zu gewährleisten.
- Begrenzte Testabdeckung
Da wir mit Scheinereignissen testeten, war auch unsere Testabdeckung begrenzt; wir führten nur funktionale Tests mit einigen begrenzten positiven und negativen Szenarien durch.
- Datenquelle außerhalb unserer Kontrolle
Das vorgelagerte Quellsystem ist für die Freigabe der nachgebildeten Ereignisse verantwortlich. Da wir mehrere vorgelagerte Quellensysteme haben, führt dies zu Schwierigkeiten bei der Kommunikation und Zusammenarbeit. So ist es beispielsweise schwierig, mit jedem Team zu kommunizieren, wenn es um kleine Aktualisierungen bei simulierten Ereignissen geht. Dies führte zu spröden Testfällen und Fehlern, wenn Upstream-Systeme Änderungen vornahmen.
- Mischen der Testdaten mit dem Produktionsdatensatz.
Dies ist eine weitere große Herausforderung: Da wir nur eine GCP-Instanz für das Entwicklungs- und das Testteam hatten, verwendeten wir dasselbe Dienstkonto für den Zugriff auf dieselbe GCP-Ressource. Da es sich bei der entwickelten Pipeline um eine Streaming-Pipeline handelt, zieht sie einige Echtzeit-Ereignisse zusammen mit gespiegelten Ereignissen aus den vorgelagerten Systemen. Manchmal ist es etwas mühsam, gespiegelte Daten aus Echtzeit-Entwicklungsdaten herauszufiltern.
- Höhere Regressionszeit
Da wir uns hauptsächlich auf die manuellen Funktionstests der Pipeline verließen, führte dies zu einer höheren Regressionszeit, sobald wir eine kleine Änderung im Pipeline-Verhalten vornahmen.
Die Lösung
Einführung der Testautomatisierung im SDLC
Manuelle Tests der Pipelines halfen uns, das Verhalten der Pipelines zu verstehen und die verschiedenen Szenarien zu identifizieren und zu dokumentieren, um voranzukommen. Zu diesem Zeitpunkt hatten wir eine klare Vorstellung davon, was unsere Pipeline leisten sollte. Wie sehen die verschiedenen Szenarien aus? Deshalb haben wir beschlossen, die Testautomatisierung in den SDLC aufzunehmen.
Ein hybrider Rahmen mit Pact.io
Bei den Vertragstests haben wir den Integrationspunkt getestet, indem wir jede Anwendung isoliert überprüft haben, um sicherzustellen, dass die Nachrichten, die das vorgelagerte System sendet oder das nachgelagerte System empfängt, einem gemeinsamen Verständnis entsprechen, das in einem “Vertrag” dokumentiert ist. Dieser Vertrag ist die Quelle der Wahrheit für uns, um das von vorgelagerten Quellen erhaltene Ereignisschema zu validieren. Auf diese Weise minimieren wir unsere Abhängigkeit vom Quellsystem.
Das funktioniert folgendermaßen. Da wir die Verbraucher der Ereignisse aus dem vorgelagerten System waren, haben wir einige verbrauchergesteuerte Vertragstests geschrieben und einen Pakt oder Vertrag erstellt, um zu erklären, was wir vom Quellsystem erwarten, und diesen mit dem Anbieter oder dem Quellteam geteilt. Nun strukturierte das Beschaffungsteam die Rohdaten gemäß dem von uns gemeinsam ausgearbeiteten Vertrag.
Testautomatisierungs-Framework-Komponenten
-
Wir haben einen hybriden Rahmen entwickelt, um den Testaufwand zu automatisieren. Das Test-Framework bestand aus mehreren Komponenten, die wir im Folgenden erläutern:
- Extent-Berichte: Eine Java-Bibliothek, die zur Erstellung von benutzerdefinierten Testausführungsberichten verwendet wird.
- Benutzerdefinierte Dienstprogramme: Eine Java-Klasse, die Java-Methoden enthält, um verschiedene Aktionen wie die Überprüfung von Daten in einem BigQuery Data Lake und mehr durchzuführen.
- Unit Testing Framework Junit 5: Junit 5 als Test-Runner, Junit Assertion half uns, das erwartete und tatsächliche Verhalten nach der Testausführung zu überprüfen.
- Rahmen für Vertragstests: Einführung von Vertragstests, um unsere Abhängigkeit vom Upstream-Team zu verringern. Entwicklung von erweiterten Integrationstests mit Pact.Io.
- Verbrauchergesteuerte Vertragstests: Da wir uns in erster Linie auf Rohdaten aus dem Quellenteam verlassen, konnten wir mit diesen Tests sicherstellen, dass die Quellendaten mit unseren Erwartungen übereinstimmen. Es minimiert unsere Abhängigkeit vom Quellenteam.
- Pact Broker: Ist eine zentralisierte App, um die Verträge und Prüfergebnisse mit dem Datenquellenteam zu teilen.
- CI-Integration mit Concourse CI: Wir haben Concourse CI als zentrale CI/CD-Plattform verwendet. Wir haben unseren Test in Concourse CI integriert, um eine bedarfsgerechte Testausführung und schnelleres Feedback zu ermöglichen.
Das Ergebnis
Am Ende entwarfen wir ein wiederverwendbares Plug-and-Play-Automatisierungsframework zum Testen der Streaming-Ingestion-Datenpipeline, das uns ein schnelleres Feedback ermöglichte und uns half, die roten Blöcke in der Produktion zu finden.
- Dieser Rahmen ermöglichte es uns, unsere dynamischen Ereignisse durch Umstrukturierung der Beispielereignisse zu erzeugen.
- Erhöhte Testabdeckung und ermöglichte es uns, mehr negative Szenarien zu testen, indem wir die gemeinsamen Musterereignisse manipulierten.
- Ermöglichte uns die Ausführung von Tests bei Bedarf und reduzierte unseren Regressionszyklus durch die Integration mit CI auf 70 %.
- Unterstützung des Entwicklungsteams bei der Beschleunigung der Entwicklertests.
- Verkürzte Lieferzykluszeit.
“OMNI ist eine analytische Plattform, die mit mehreren vorgelagerten Systemen interagiert, so dass wir bei den Testdaten in hohem Maße von ihnen abhängig sind. Das Automatisierungsframework hilft uns, unsere Abhängigkeit von den Quellsystemen zu minimieren, um die Entwicklung und die Testausführung bei Bedarf zu beschleunigen.”
Senior Engineering Manager
Weitere Fallstudien lesen
Vom Überwinden von Widrigkeiten zum Reiten der Welle der digitalen Transformation im Bildungssektor
Erfahren Sie, wie NashTech dem Trinity College London hilft, die Welle der digitalen Transformation im Bildungssektor zu reiten
Migration und Modernisierung der virtuellen Lernumgebung auf AWS für ein verbessertes Erlebnis
Das migrierte und modernisierte Moodle Infrastruktur bedeutet, dass The Open Die Universität kann nun folgende Vorteile nutzen Cloud-Vorteile.
Ein Einblick in eine einjährige RPA-Reise mit einem führenden digitalen Werbedienst
Ein Einblick in eine einjährige RPA-Reise mit einem führenden Anbieter von digitalen Werbedienstleistungen und -lösungen und wie NashTech ihnen geholfen hat.
Lassen Sie uns über Ihr Projekt sprechen
- Themen:
Unsere Partnerschaften
![docker-white-png](https://www.nashtechglobal.de/wp-content/uploads/2023/03/docker-white.png.png)
![ibm-white-png](https://www.nashtechglobal.de/wp-content/uploads/2023/03/ibm-white.png.png)
![microsoft-logo](https://www.nashtechglobal.de/wp-content/uploads/2023/04/Microsoft-logo.png)
![umbraco](https://www.nashtechglobal.de/wp-content/uploads/2023/03/umbraco.png)
![confluent-white-png](https://www.nashtechglobal.de/wp-content/uploads/2023/03/confluent-white.png.png)
![databricks-white-png](https://www.nashtechglobal.de/wp-content/uploads/2023/03/databricks-white-.png.png)
![hashicorp-white-png](https://www.nashtechglobal.de/wp-content/uploads/2023/03/hashiCorp-white.png.png)
![lightbend-white-png](https://www.nashtechglobal.de/wp-content/uploads/2023/03/lightbend-white.png.png)
![microsoft-modernization](https://www.nashtechglobal.de/wp-content/uploads/2023/07/Microsoft-Modernization.png)
![aws-partner](https://www.nashtechglobal.de/wp-content/uploads/2023/07/AWS-partner-1.png)
![ms-solutions-partner-logo](https://www.nashtechglobal.de/wp-content/uploads/2023/07/MS-Solutions-partner-logo-2.png)
![ms-data-and-ai](https://www.nashtechglobal.de/wp-content/uploads/2023/07/MS-Data-and-AI-1.png)
![ms-digital-and-app-innovation](https://www.nashtechglobal.de/wp-content/uploads/2023/07/MS-Digital-and-App-innovation-1.png)