Union54
Union54 ist ein Fintech-Startup, das Kartenausgabedienste für Unternehmen in Afrika anbietet. Ihre RESTful-API ermöglicht es Fintech-Unternehmen, programmierbare virtuelle und physische Debitkarten selbst auszugeben, ohne eine Bank oder einen Drittanbieter-Prozessor.
Alle KundenTesten von Web-Apps
Mit unserer professionellen Unterstützung können Unternehmen sicher sein, dass sich ihre Web-Lösungen, einschließlich Web-APIs, wie vorgesehen verhalten. Wir haben Union54 dabei geholfen, ihre RESTful-API gründlich zu testen, um sicherzustellen, dass sie die gewünschten Ergebnisse liefert, über eine angemessene Authentifizierung und Zugangskontrolle verfügt und eine gute Leistung erbringt.
Mehr erfahrenAutomatisierte Tests
Wir haben Union54 dabei unterstützt, eine umfassende Regressionssuite zu entwickeln und zu automatisieren, die stabil, skalierbar und einfach zu warten ist. Unsere QA-Ingenieure haben 90% der API-Endpunkte mit Testautomatisierung abgedeckt und automatisieren weiterhin neue Datenbank-Trigger-Szenarien und Front-End-Funktionen.
Mehr erfahrenEinleitung
Union54 ist ein Spin-off von Zazu, Afrikas Challenger-Bank, die als Mastercard Principal Membership ausgezeichnet wurde. Nachdem die Gründer von Zazu die Unkooperativität der afrikanischen Banken und die veralteten Prozesse beobachtet hatten, entwickelten sie eine Lösung, die anderen Fintechs hilft, den Prozess der Kartenausgabe zu beschleunigen. Bei Union54 dauert die Herstellung und Ausgabe von Karten drei bis neun Tage.
Die Union54-APIs ermöglichen es Unternehmen, unter anderem physische und virtuelle Debitkarten auszugeben, Karten in jeder beliebigen Währung zu erwerben, sie nach eigenen Wünschen zu programmieren und eine Kartenverwaltungsplattform für verschiedene digitale Bankaktivitäten zu nutzen.
Herausforderung
Die Zusammenarbeit mit Union54 war ein reines Vergnügen: Wir kannten ihr Team, ihre Arbeitsabläufe und Qualitätsstandards bereits aus dem Zazu-Projekt.
Im Folgenden sind einige der wichtigsten Aspekte aufgeführt, die wir zu beachten hatten:
- Zeitbeschränkungen. Da Union54 am Sommerprogramm von Y Combinator teilnahm, hatten sie etwa zwei Monate Zeit, um ein voll funktionsfähiges MVP zu entwickeln, bevor sie es am Demo-Tag einem ausgewählten Publikum von Investoren und der Presse vorstellten. Unsererseits waren wir für das rechtzeitige Testen der API-Endpunkte verantwortlich, während sie erstellt wurden.
- Stabilität der Testautomatisierung. Fintech-Projekte wie Union54 kommen ohne Testautomatisierung nicht aus. Solche Lösungen erfordern einen doppelten Testaufwand, da manuelle Tests allein keine hundertprozentige Abdeckung der Testszenarien gewährleisten. Unsere Aufgabe war es, eine stabile Testautomatisierungssuite zu entwickeln, die sowohl umfassend als auch einfach zu warten und zu skalieren ist.
- Fehlende UI. Unser Kunde war auf der Suche nach technisch versierten QA-Ingenieuren, die in der Lage sind, API-Endpunkte ohne Benutzeroberfläche zu testen. Diese Anforderung war für uns keine Herausforderung, da wir über ein Team von Experten verfügen, die sich mit API-Tests auskennen.
Fintech-Lösungen wie Union54 dulden keine Versäumnisse, daher waren wir vom ersten Tag an mitverantwortlich für den Erfolg des Projekts.
Lösung
Um eine ausreichende Testabdeckung bereits in frühen Entwicklungsphasen zu gewährleisten und die Fristen einzuhalten, haben wir uns für eine Kombination aus automatisierten und manuellen Tests entschieden. Durch eine solche Ressourcenzuweisung konnten wir etwa 90% der Testszenarien für die Endpunkte und die wichtigsten Datenbank-Trigger automatisieren.
Der manuelle Tester hingegen schreibt positive und negative Testszenarien, die dann vom Testautomatisierer überprüft werden, und kümmert sich um die übrigen Funktionen, die noch nicht automatisiert sind oder kein Automatisierungspotenzial haben. Die geschäftskritischen Testszenarien wurden sowohl von einem Testautomatisierungsingenieur als auch von einem manuellen Tester geprüft, um ein Höchstmaß an Softwarequalität zu gewährleisten.
Ein weiterer Aspekt, der als Grundlage für eine erfolgreiche Testautomatisierungsstrategie dient, ist die richtige Wahl der Test-Frameworks. Für manuelle Tests haben wir uns auf Postman verlassen, da dieses Tool speziell für API-Tests entwickelt wurde und das Testen von Apps mit fehlendem Frontend erleichtert – genau das, womit wir es zu tun hatten. Die Testautomatisierungsskripte wurden mit Cypress geschrieben, das sich für kontinuierlich wachsende Testautomatisierungsprojekte wie Union54 eignet.
Wir testeten die API-Endpunkte, während sie entwickelt wurden, so dass unser Testplan das Testen neuer Funktionen, Integration und Regressionstests umfasste.
Testautomatisierung
Die Stabilität der Testautomatisierung ist die größte Herausforderung für jeden QA-Automatisierungsingenieur. Warum ist das so wichtig? Die Überprüfung, welche Tests aufgrund von Fehlern oder Codeänderungen fehlgeschlagen sind und welche Tests auf eine instabile Umgebung zurückzuführen sind, gehört zur täglichen Praxis eines QA-Automatisierungsingenieurs. Wenn die automatisierten Tests instabil sind, wird die Zahl der Falschmeldungen mit dem Wachstum des Projekts weiter ansteigen. Infolgedessen wird viel Zeit damit vergeudet, Falschmeldungen aus wirklich fehlgeschlagenen Tests herauszufiltern.
Bevor wir mit der Arbeit an dem Projekt begannen, hatte das Union54-Team bereits einige Tests mit dem Mocha-Framework geschrieben, so dass wir beschlossen, es auszuprobieren. Als neue Testszenarien immer aufwändiger wurden und die Testsuiten an Umfang zunahmen, stellten wir erhebliche Stabilitätsprobleme fest und teilten dem Kunden unsere Bedenken mit. Um dieses Problem zu lösen, wechselten wir zu einem anderen Framework, schrieben alle bestehenden Tests in Cypress neu und legten sie in einem separaten Repository ab.
Wir haben uns für Cypress entschieden, weil es zahlreiche Vorteile bietet. Cypress ermöglicht es Ihnen, fehlgeschlagene Tests automatisch zu wiederholen und eine benutzerdefinierte Anzahl von Wiederholungsversuchen festzulegen, entweder für alle Tests oder nur für einen bestimmten Test. Diese Funktion ist sehr nützlich, um die Fehleranfälligkeit von Tests und die Fehler bei der CI-Entwicklung zu verringern, die durch die vorübergehende Nichtverfügbarkeit von Diensten Dritter oder zufällige Netzwerkfehler verursacht werden. Weitere Vorteile von Cypress sind logische und einfache Muster, hohe Lesbarkeit der Testszenarien und skalierbarer Code; die bereits geschriebenen Muster können in zukünftigen Tests weiterverwendet werden. Cypress eignet sich auch gut zur Durchführung komplexer, mehrstufiger Testszenarien.
CI für die automatisierten Tests wird mit Hilfe der Bitbucket Pipeline implementiert. Jede Nacht um 2 Uhr morgens werden die neuesten Commits aus dem Entwicklungszweig in die CI-Pipeline gezogen. Daher decken unsere Tests alle Änderungen an der Codebasis ab, auch wenn die Entwickler bis spät in die Nacht arbeiten. Dank der Bitbucket-Integration mit Slack werden wir sofort über alle Commits, Pull-Requests und den Status der Pipeline benachrichtigt, sowohl über erfolgreiche als auch gescheiterte.
Ein kompletter Testlauf mit 1500 Testszenarien in der CI-Pipeline dauert etwa 1,5 Stunden, was angesichts der Komplexität und Anzahl der Testszenarien recht gut ist. Nachdem wir die Stabilität der automatisierten Tests erreicht haben, sehen wir jeden Morgen ein klares Bild und verbringen nur noch wenig Zeit mit der Fehlersuche.
Da der Union54-Website neue Funktionen hinzugefügt werden, decken wir auch den Front-End-Teil mit automatisierten Funktionstests ab.
Fehlermeldungen
Alle kritischen Fehler, die wir fanden, gelangten dank einer umfassenden Testautomatisierungssuite, die durch manuelle Tests ergänzt wurde, nie in die Produktionsumgebung. Die meisten Probleme, auf die wir stießen, betrafen unbehandelte oder falsch behandelte Ausnahmen, falsche Autorisierung verschiedener Benutzertypen, falsche Inhalte des Response-Objekts und das Fehlen einiger Attribute in der Datenbank.
Tatsächliches Ergebnis: Daten in der Antwort: “balance”: 0, “status”: “issued”, Tatsächliche Daten in der DB: “balance”: 100, “status”: “stopped”, (da Guthaben und Status der Karte geändert wurden)
Erwartetes Ergebnis: Die Daten in der Antwort entsprechen den tatsächlichen Daten (funktioniert so, wenn nur der Abfrageparameter „card“ (Karte) angegeben wird).
Tatsächliches Ergebnis: Antwortcode 1 Genehmigt, neue TRANSACTION_CARD wird in die DB-Tabelle mit dem Float-Wert 15,577777 geschrieben.
Erwartetes Ergebnis: Antwortcode -19 (ungültiger Betrag), kein neuer TRANSACTION_CARD-Eintrag sollte in die DB-Tabelle geschrieben werden. Nur ganzzahlige Beträge sollten erlaubt sein.
Tatsächliches Ergebnis: Antwort 400 Validierungsfehler, Meldung “message”: “card has been stopped” (Karte wurde gestoppt) HINWEIS: Ich habe festgestellt, dass die Antwort 200 Erfolg (wie erwartet) liefert, wenn man die Eigenschaft „stopReason“ manuell aus dem DB-Kartensatz entfernt.
Erwartetes Ergebnis: Antwort 200 OK, der Status der Karte wurde auf „issued“ (ausgestellt) geändert.
Ergebnis
Mit unserer kontinuierlichen Unterstützung von der frühen Entwicklungsphase an hat das Union54-Team sein Produkt vor dem entscheidenden Demo-Tag gründlich getestet und ausgefeilt. In etwa zwei Monaten haben wir Union54 dabei geholfen, kritische Fehler zu entdecken und eine robuste automatisierte Regressionssuite zu entwickeln, um ähnliche Probleme zu erkennen, bevor sie in die Produktentwicklung gelangen. Das Ergebnis unserer erfolgreichen Zusammenarbeit ist spektakulär: Union54 erhielt kurz nach seinem Abschluss bei Y Combinator eine Startfinanzierung in Höhe von 3 Mio. US-Dollar.
In der Presse
Möchten Sie Ihre Entwicklung mit Testautomatisierung beschleunigen?
Sprechen Sie mit ExpertenTools
Kommentar des QAwerk-Teams
Aliaksei
QA automation engineer
Das Projekt Union54 hat mich in mehrfacher Hinsicht herausgefordert. Ich musste einen neuen Tech-Stack beherrschen, um Autotests zu schreiben, zunächst mit Typescript + Mocha und dann mit Cypress, und habe außerdem unschätzbare Erfahrungen mit einer Reihe von AWS-Tools gesammelt.
Um die Architektur des Produkts besser zu verstehen, führte ich einige manuelle QA-Aufgaben durch. Es half mir, das Produkt zu verstehen, und trotz seiner Komplexität hat es mir wirklich Spaß gemacht, seine Struktur zu erkunden.
Obwohl das Projektteam über verschiedene Länder und Kontinente verteilt ist, war die Kommunikation hervorragend – dank der hohen Professionalität aller Teammitglieder und ihrer ergebnisorientierten Einstellung.
Valentyn
QA automation engineer
Vor allem die hohe Komplexität des Systems und der gesamten Architektur selbst machen Union54 zu einem der interessantesten Projekte, an denen man im Rahmen von Entwicklungs- und Testzyklen mitwirken kann. Ihre API ermöglicht die Ausgabe virtueller/physischer Karten, die mit den Konten der Kunden verknüpft sind, sodass diese an jedem Geldautomaten oder Online-Zahlungsgateway Zugang zu ihren Guthaben haben.
Beeindruckt?
Engagieren Sie unsWeitere Fallstudien
Evolv
Erhöhte die Geschwindigkeit der Regressionstests dieser digitalen Wachstumsplattform um 50 % und stellte sicher, dass die Plattform rund um die Uhr optimal läuft
Keystone
Unterstützung des norwegischen Studienportals Nr. 1 bei der Verbesserung von 8 inhaltslastigen Websitesdie von 110 Millionen Studenten jährlich genutzt werden
Zazu
Unterstützung der Finanzmanagement-App Nr. 1 in Afrika bei der Beseitigung von Fehlern und der Aufnahme in die Mastercard Principal Member