Union54
Union54 is een fintech startup die kaartuitgiftediensten levert aan bedrijven in Afrika. De RESTful API stelt fintechbedrijven in staat om zelf programmeerbare virtuele en fysieke debetkaarten uit te geven, zonder tussenkomst van een bank of derde partij.
Alle klantenWeb app testen
Met onze professionele ondersteuning kunnen bedrijven erop vertrouwen dat hun weboplossingen, waaronder web-API’s, zich gedragen zoals verwacht. We hebben Union54 geholpen hun RESTful API grondig te testen om ervoor te zorgen dat deze de gewenste output retourneert, correcte authenticatie- en toegangscontroles heeft en goed presteert.
Meer wetenGeautomatiseerd testen
We hebben Union54 geholpen bij het bouwen en automatiseren van een uitgebreide regressietestsuite die stabiel, schaalbaar en gemakkelijk te onderhouden is. Onze QA-ingenieurs hebben 90% van de API-endpoints gedekt met testautomatisering en blijven nieuwe scenario’s voor database triggers en front-end functionaliteit automatiseren.
Meer wetenIntroductie
Union54 is een spin-off van Zazu, Africa’s challenger bank die Mastercard Principal Membership heeft ontvangen. Zazu’s oprichters, na getuige te zijn geweest van de onwelwillendheid en verouderde processen van Afrikaanse banken, kwamen met een oplossing die andere fintechs helpt het kaartuitgifteproces te versnellen. Met Union54 duurt kaartproductie en -uitgifte drie tot negen dagen.
De Union54 API’s stellen bedrijven in staat om fysieke en virtuele debetkaarten uit te geven, kaarten in elke valuta te financieren, ze naar eigen voorkeur te programmeren, een kaartbeheerplatform te gebruiken voor diverse digitale bankactiviteiten, naast andere functies.
Uitdaging
Samenwerken met Union54 is niets anders dan een plezier geweest: we waren al bekend met hun team, workflows en kwaliteitsnormen door het Zazu-project.
Hier zijn enkele van de belangrijkste aspecten waarmee we moesten voldoen:
- Tijdsdruk. Aangezien Union54 deelnam aan de Y Combinator zomerbatch, hadden ze ongeveer twee maanden de tijd om een volledig functionele MVP te leveren voordat deze op de demo day werd gepresenteerd aan een geselecteerd publiek van investeerders en pers. Vanuit ons perspectief waren wij verantwoordelijk voor het tijdig testen van API-endpoints naarmate ze werden gebouwd.
- Stabiliteit van Testautomatisering. Fintechprojecten zoals Union54 kunnen niet zonder testautomatisering. Dergelijke oplossingen vereisen een dubbele hoeveelheid testinspanning, en handmatig testen alleen biedt geen 100% testscenario-dekking. Onze taak was om een stabiele testautomatiseringssuite te ontwikkelen die zowel uitgebreid als gemakkelijk te onderhouden en schalen is.
- Ontbrekende UI. Onze klant zocht naar zeer technische QA-ingenieurs die API-endpoints konden testen zonder gebruikersinterface. Deze eis was geen uitdaging voor ons, aangezien we een team van experts hebben die bedreven zijn in API-testen.
Fintechoplossingen zoals Union54 tolereren geen enkele nalatigheid, dus we deelden vanaf dag één de verantwoordelijkheid voor het succes van het project.
Oplossing
Om vanaf de vroege ontwikkelingsfasen voldoende testdekking te garanderen en de deadlines te halen, hebben we besloten testautomatisering te combineren met handmatige test QA. Deze toewijzing van middelen stelde ons in staat om ongeveer 90% van de testscenario’s met betrekking tot endpoints en de meest essentiële database triggers te automatiseren.
De handmatige tester schrijft daarentegen positieve en negatieve testscenario’s, die vervolgens worden beoordeeld door de testautomatiseringsingenieur, en zorgt voor de rest van de functionaliteit die nog niet is geautomatiseerd of geen automatiseringspotentieel heeft. De missiekritieke testscenario’s werden zowel door een testautomatiseringsingenieur als een handmatige tester gecontroleerd om de uiterste softwarekwaliteit te bereiken.
Een ander aspect dat de basis legt voor een succesvolle testautomatiseringsstrategie, is de juiste keuze van testframeworks. Voor handmatige testen vertrouwden we op Postman, aangezien deze tool specifiek is ontworpen voor API-testen en het gemakkelijk maakt om apps te testen met een ontbrekende frontend – precies waarmee we te maken hadden. Testautomatiseringsscripts werden geschreven met Cypress, wat geschikt is voor continu groeiende testautomatiseringsprojecten zoals Union54.
We testten API-endpoints naarmate ze werden gebouwd, dus ons testplan omvatte het testen van nieuwe functies, integratie en regressietesten.
Testautomatisering
De stabiliteit van testautomatisering is de belangrijkste uitdaging voor elke QA-automatiseringsengineer. Waarom is het zo belangrijk? Het valideren van wat tests mislukt zijn vanwege bugs of wijzigingen in de code, en welke tests het resultaat zijn van een onstabiele omgeving, is de dagelijkse praktijk van een QA-automatiseringsengineer. Als geautomatiseerde tests instabiel zijn, zal het aantal false positives blijven stijgen naarmate het project groeit. Hierdoor gaat er enorm veel tijd verloren aan het filteren van false positives uit werkelijk mislukte tests.
Voordat we met enige werkzaamheden aan het project begonnen, had het Union54-team al enkele tests geschreven met het Mocha-framework, dus besloten we het een kans te geven. Naarmate nieuwe testscenario’s uitgebreider werden en de testsuites groter, merkten we aanzienlijke stabiliteitsproblemen en deelden we onze zorgen met onze klant. Om dit probleem op te lossen, stapten we over op een ander framework, herschreven we alle bestaande tests in Cypress en plaatsten we ze in een aparte repository.
We kozen voor Cypress vanwege de vele voordelen die het biedt. Cypress stelt u in staat om mislukte tests automatisch opnieuw uit te voeren en een aangepast aantal opnieuw uitvoerpogingen in te stellen, hetzij voor alle tests, hetzij voor een specifieke test. Deze functie is zeer handig voor het verminderen van testflakiness en CI-buildfouten die worden veroorzaakt door de tijdelijke onbeschikbaarheid van externe services of willekeurige netwerkfouten. Andere voordelen van Cypress zijn logische en duidelijke patronen, hoge leesbaarheid van testscenario’s en schaalbare code; de reeds geschreven patronen kunnen worden hergebruikt in toekomstige tests. Cypress is ook zeer geschikt voor het uitvoeren van complexe, meerstaps testscenario’s.
CI voor de geautomatiseerde tests wordt geïmplementeerd met behulp van Bitbucket Pipeline. Elke nacht om 2 uur ‘s nachts worden de laatste commits van de develop-branch naar de CI-pipeline gehaald. Daarom dekken onze tests alle wijzigingen in de codebase, zelfs als ontwikkelaars tot laat in de nacht werken. Dankzij de Bitbucket-integratie met Slack worden we direct op de hoogte gesteld van alle commits, pull requests en pipeline-statussen, zowel succesvol als mislukt.
Een volledige testrun met 1500 testscenario’s in de CI-pipeline duurt ongeveer 1,5 uur, wat behoorlijk redelijk is, gezien de complexiteit en het aantal testscenario’s. Nu we de stabiliteit van geautomatiseerde tests hebben bereikt, hebben we elke ochtend een duidelijk beeld en besteden we minimale tijd aan probleemoplossing.
Nu er nieuwe functionaliteiten aan de Union54-website worden toegevoegd, dekken we ook het front-end gedeelte met geautomatiseerde functionele tests.
Bugs Gevonden
Alle kritieke bugs die we vonden, bereikten de productieomgeving nooit dankzij een uitgebreide testautomatiseringssuite, ondersteund door handmatige testen.
De meeste problemen die we tegenkwamen, hadden betrekking op niet-afgehandelde of incorrect afgehandelde uitzonderingen, onjuiste autorisatie van verschillende soorten gebruikers, incorrecte inhoud van het respons-object en het ontbreken van bepaalde attributen in de database.

Werkelijk resultaat: Gegevens in de respons: “balance”: 0, “status”: “issued”, Werkelijke gegevens in de DB: “balance”: 100, “status”: “stopped”, (aangezien het saldo en de status van de kaart zijn gewijzigd)
Verwacht resultaat: Gegevens in respons komen overeen met daadwerkelijke gegevens (zoals het werkt als alleen de ‘card’ query parameter wordt meegegeven).

Werkelijk resultaat: Respons code 1 Approved, een nieuwe TRANSACTION_CARD wordt geschreven naar de DB-tabel met een float bedrag van 15.577777.
Verwacht resultaat: Respons code -19 (ongeldig bedrag), geen nieuwe TRANSACTION_CARD entry geschreven naar de DB-tabel. Alleen gehele bedragen mogen worden toegestaan.

Werkelijk resultaat: 400 Validatiefout, bericht: "card has been stopped". Opmerking: Handmatig verwijderen van de "stopReason" property uit het DB-kaartrecord resulteert in een succesvolle 200-respons, zoals verwacht.
Verwacht resultaat: Respons 200 OK, de status van de kaart is gewijzigd naar ‘issued’.
Resultaat
Met onze continue ondersteuning vanaf de vroege ontwikkelingsfase, heeft het Union54-team hun product grondig getest en gepolijst voor de levensveranderende demo day. In ongeveer twee maanden hebben we Union54 geholpen kritieke bugs te ontdekken en een robuuste geautomatiseerde regressietestsuite ontwikkeld om vergelijkbare problemen te signaleren voordat ze in productie gaan. Het resultaat van onze vruchtbare samenwerking is spectaculair: Union54 ontving kort na het afronden van Y Combinator $3 miljoen aan seed financiering. Zes maanden later haalde Union54 $12 miljoen op in een seed-vervolgrond.
De Union54 API wordt momenteel verkend door meer dan 50 Afrikaanse fintechbedrijven en blijft wereldwijd interesse wekken bij investeerders. Met vertrouwen in de kwaliteit van haar product heeft Union54 meer dan een half miljoen virtuele debetkaarten uitgegeven en zag de maandelijkse omzet gestaag groeien met 50%. Ons QAwerk-team zal met hetzelfde enthousiasme en toewijding blijven werken om Union54 de volgende mijlpalen te zien bereiken en tractie te krijgen in Afrika en daarbuiten.
In de pers
Wilt u de ontwikkeling versnellen met testautomatisering?
Praat met expertsHulpmiddelen
QAwerk Team Commentaren
Aliaksei
QA automation engineer
Het Union54-project heeft me op verschillende aspecten uitgedaagd. Ik moest een nieuwe technologiestack beheersen om autotests te schrijven, eerst met Typescript + Mocha en daarna met Cypress, en deed ook waardevolle ervaring op met een reeks AWS-tools.
Om de architectuur van het product beter te begrijpen, was ik betrokken bij het uitvoeren van enkele handmatige QA-taken. Dit hielp me de binnenkant van het product te leren kennen, en ondanks de complexiteit genoot ik ervan om de structuur ervan te verkennen.
Hoewel het projectteam verspreid is over verschillende landen en continenten, is de communicatie op een uitstekend niveau geweest – dankzij de hoge professionaliteit van alle teamleden en hun resultaatgerichte houding.
Valentyn
QA-ingenieur
Voornamelijk maken de hoge complexiteit van het systeem en de gehele architectuur zelf Union54 tot een van de interessantste projecten om aan deel te nemen binnen ontwikkelings- en testcycli. Hun API maakt het mogelijk om virtuele/fysieke kaarten uit te geven die gekoppeld zijn aan de rekeningen van klanten, waardoor ze toegang krijgen tot hun geld bij elke geldautomaat of online betaalpoort.



Gerelateerd op de Blog
Web- en mobiele app-testautomatisering: hoe kiest u de meest geschikte open source tools?
Geautomatiseerd software testen is belangrijk voor softwareproducten om kernfunctionaliteit te verifiëren, regressietests uit te voeren en veel tests in korte tijd te helpen uitvoeren....
Lees meer
Kwaliteitsborging (QA) in softwareontwikkeling: rol en belang
Hoge kwaliteit. Dit zijn de ultieme «heilige graal»-woorden in elke bedrijfsniche, projectlevenscyclus, service-implementatie, enz. Het is gemakkelijk om op een of twee «kleine» dingen te besparen – de langdurige resultaten van dergelijke «kosten-effectiviteit» zijn echte...
Lees meerOnder de indruk?
Huur ons inAndere casestudy's
Evolv
Verhoogde de snelheid van regression testing van dit digitale groeiplein met 50% en zorgde ervoor dat het platform 24/7 optimaal draait
Keystone
Heeft Noorwegens #1 studeerportaal geholpen bij het verbeteren van 8 van hun content-rijke websites, die jaarlijks door 110 miljoen studenten worden gebruikt
Zazu
We hebben de #1 financiële beheertoepassing in Afrika geholpen hun bugs te elimineren en een Mastercard Principal Member te worden

