Union54
Union54 est une startup fintech fournissant des services d’émission de cartes pour les entreprises en Afrique. Son API RESTful permet aux sociétés fintech d’émettre elles-mêmes des cartes de débit virtuelles et physiques programmables, sans recourir à une banque ni à un processeur tiers.
Tous les clientsTests d’applications web
Grâce à notre soutien professionnel, les entreprises peuvent avoir la certitude que leurs solutions web, y compris les API web, se comportent comme prévu. Nous avons aidé Union54 à tester minutieusement son API RESTful pour s’assurer qu’elle retourne les sorties souhaitées, dispose d’une authentification et de contrôles d’accès appropriés, et fonctionne correctement.
En savoir plusTests automatisés
Nous avons aidé Union54 à construire et à automatiser une suite de régression complète qui est stable, évolutive et facile à maintenir. Nos ingénieurs QA ont couvert 90 % des endpoints API avec l’automatisation des tests et continuent à automatiser de nouveaux scénarios de déclencheurs de base de données et les fonctionnalités frontend.
En savoir plusIntroduction
Union54 est une scission de Zazu, la banque alternative africaine récompensée par le statut de Membre Principal Mastercard. Ayant été témoins de l’absence de coopération des banques africaines et de leurs processus archaïques, les fondateurs de Zazu ont conçu une solution aidant d’autres fintechs à accélérer le processus d’émission de cartes. Avec Union54, la production et l’émission de cartes prennent de trois à neuf jours.
Les API Union54 permettent aux entreprises d’émettre des cartes de débit physiques et virtuelles, de financer des cartes dans n’importe quelle devise, de les programmer selon leurs préférences, d’utiliser une plateforme de gestion des cartes pour diverses activités bancaires numériques, entre autres fonctionnalités.
Défi
Collaborer avec Union54 a été un vrai plaisir : nous connaissions déjà leur équipe, leurs workflows et leurs standards de qualité grâce au projet Zazu.
Voici quelques-uns des aspects les plus importants auxquels nous devions nous conformer :
- Contraintes de temps. Étant donné qu’Union54 participait au batch estival de Y Combinator, ils disposaient d’environ deux mois pour livrer un MVP entièrement fonctionnel avant de le présenter à un public sélectionné d’investisseurs et de presse lors du demo day. De notre côté, nous étions responsables du test des endpoints API au fur et à mesure de leur développement.
- Stabilité de l’automatisation des tests. Les projets fintech comme Union54 ne peuvent pas se passer de l’automatisation des tests. Ces solutions nécessitent un double effort de test, et les tests manuels seuls ne permettront pas d’atteindre une couverture de 100 % des scénarios de test. Notre mission consistait à développer une suite d’automatisation de tests stable, à la fois complète, facile à maintenir et à faire évoluer.
- Interface utilisateur absente. Notre client recherchait des ingénieurs QA hautement techniques capables de tester les endpoints API sans interface utilisateur. Cette exigence ne nous a pas posé de difficulté, car nous disposons d’une équipe d’experts qualifiés en tests d’API.
Les solutions fintech comme Union54 ne tolèrent aucune négligence, c’est pourquoi nous avons partagé la responsabilité du succès du projet dès le premier jour.
Solution
Pour assurer une couverture de test suffisante dès les premières étapes du développement et respecter les délais, nous avons décidé de combiner l’automatisation des tests avec les tests manuels QA. Cette allocation de ressources nous a permis d’automatiser environ 90 % des scénarios de test concernant les endpoints et les déclencheurs de base de données les plus essentiels.
Le testeur manuel, quant à lui, rédige des scénarios de test positifs et négatifs, qui sont ensuite examinés par l’ingénieur en automatisation des tests, et prend en charge le reste des fonctionnalités pas encore automatisées ou sans potentiel d’automatisation. Les scénarios de test critiques ont été vérifiés à la fois par un ingénieur en automatisation des tests et un testeur manuel pour atteindre la plus haute qualité logicielle.
Un autre aspect qui pose les bases d’une stratégie d’automatisation des tests réussie est le bon choix des frameworks de test. Pour les tests manuels, nous nous sommes appuyés sur Postman, car cet outil est spécifiquement conçu pour les tests d’API et facilite le test des applications sans frontend – précisément ce à quoi nous étions confrontés. Les scripts d’automatisation des tests ont été écrits avec Cypress, qui convient aux projets d’automatisation des tests en croissance continue comme Union54.
Nous avons testé les endpoints API au fur et à mesure de leur développement, de sorte que notre plan de test incluait le test des nouvelles fonctionnalités, les tests d’intégration et les tests de régression.
Automatisation des tests
La stabilité de l’automatisation des tests est le principal défi pour tout ingénieur en automatisation QA. Pourquoi est-ce si important ? Valider quels tests ont échoué en raison de bugs ou de modifications du code et quels tests résultent d’un environnement instable est la pratique quotidienne d’un ingénieur en automatisation QA. Si les tests automatisés sont instables, le nombre de faux positifs continuera d’augmenter au fur et à mesure que le projet grandit. En conséquence, un temps considérable est gaspillé à filtrer les faux positifs des vrais tests en échec.
Avant de commencer tout travail sur le projet, l’équipe Union54 avait déjà écrit quelques tests avec le framework Mocha, alors nous avons décidé de l’essayer. Au fur et à mesure que les nouveaux scénarios de test devenaient plus élaborés et que la taille des suites de tests augmentait, nous avons remarqué des problèmes de stabilité significatifs et communiqué nos préoccupations à notre client. Pour résoudre ce problème, nous avons changé de framework, réécrit tous les tests existants en Cypress et les avons placés dans un dépôt séparé.
Nous avons opté pour Cypress en raison des nombreux avantages qu’il offre. Cypress permet de relancer automatiquement les tests en échec et de définir un nombre personnalisé de tentatives, soit pour tous les tests, soit pour un test spécifique. Cette fonctionnalité est très pratique pour réduire l’instabilité des tests et les échecs de build CI causés par l’indisponibilité temporaire de services tiers ou des erreurs réseau aléatoires. Parmi les autres avantages de Cypress, on trouve des patterns logiques et simples, une haute lisibilité des scénarios de test et un code évolutif ; les patterns déjà écrits peuvent être réutilisés dans les futurs tests. Cypress convient également parfaitement à l’exécution de scénarios de test complexes et à plusieurs étapes.
Le CI pour les tests automatisés est mis en œuvre à l’aide de Bitbucket Pipeline. Chaque nuit à 2 h du matin, les derniers commits de la branche develop sont intégrés dans le pipeline CI. Ainsi, nos tests couvrent toutes les modifications de la base de code, même si les développeurs travaillent tard dans la nuit. Grâce à l’intégration de Bitbucket avec Slack, nous sommes instantanément notifiés de tous les commits, pull requests et statuts de pipeline, qu’ils soient réussis ou en échec.
Une exécution complète des tests incluant 1 500 scénarios de test dans le pipeline CI prend environ 1,5 heure, ce qui est tout à fait raisonnable compte tenu de la complexité et du nombre de scénarios de test. Ayant atteint la stabilité des tests automatisés, nous avons une vision claire chaque matin, en passant un minimum de temps à résoudre les problèmes.
Au fur et à mesure que de nouvelles fonctionnalités sont ajoutées au site Union54, nous couvrons également la partie frontend avec des tests fonctionnels automatisés.
Bugs détectés
Tous les bugs critiques que nous avons trouvés n’ont jamais atteint l’environnement de production grâce à une suite d’automatisation de tests complète soutenue par des tests manuels.
La majorité des problèmes rencontrés concernaient des exceptions non gérées ou mal gérées, une autorisation incorrecte de différents types d’utilisateurs, un contenu incorrect de l’objet de réponse et l’absence de certains attributs dans la base de données.

Résultat réel: Données dans la réponse : "balance": 0, "status": "issued", Données réelles en base de données : "balance": 100, "status": "stopped", (étant donné que le solde et le statut de la carte ont été modifiés)
Résultat attendu: Les données dans la réponse sont identiques aux données réelles (comme cela fonctionne si seul le paramètre de requête ’card’ est fourni).

Résultat réel: Code de réponse 1 Approuvé, une nouvelle TRANSACTION_CARD est écrite dans la table de la base de données avec le montant flottant 15.577777.
Résultat attendu: Code de réponse -19 (montant invalide), aucune nouvelle entrée TRANSACTION_CARD n’est écrite dans la table de la base de données. Seuls les montants entiers devraient être autorisés.

Résultat réel: 400 Erreur de validation, message : « la carte a été arrêtée ». Remarque : la suppression manuelle de la propriété « stopReason » de l’enregistrement de carte en base de données donne une réponse 200 réussie, comme prévu.
Résultat attendu: Réponse 200 OK, le statut de la carte a été changé en « issued ».
Résultat
Grâce à notre soutien continu dès les premières étapes du développement, l’équipe Union54 a minutieusement testé et peaufiné son produit avant le demo day décisif. En environ deux mois, nous avons aidé Union54 à découvrir des bugs critiques et avons développé une suite de régression automatisée robuste pour détecter des problèmes similaires avant qu’ils n’atteignent la production. Le résultat de notre fructueuse collaboration est spectaculaire : Union54 a reçu 3 M$ de financement en seed peu après avoir obtenu son diplôme de Y Combinator. Six mois plus tard, Union54 a levé 12 M$ dans un tour de prolongation seed.
L’API Union54 est actuellement explorée par plus de 50 sociétés fintech africaines et continue de susciter l’intérêt des investisseurs du monde entier. Forte de sa confiance dans la qualité de son produit, Union54 a émis plus d’un demi-million de cartes de débit virtuelles et a vu ses revenus mensuels croître régulièrement de 50 %. Notre équipe QAwerk continuera à travailler avec le même zèle et le même engagement pour être témoin des prochaines étapes d’Union54 et de son essor à travers l’Afrique et au-delà.
Dans la presse
Vous souhaitez accélérer le développement grâce à l’automatisation des tests ?
Parlez à nos expertsOutils
Commentaires de l’équipe QAwerk
Aliaksei
ingénieur en automatisation QA
Le projet Union54 m’a mis(e) à l’épreuve sur plusieurs aspects. J’ai dû maîtriser un nouveau stack technique pour écrire des autotests, d’abord avec Typescript + Mocha puis avec Cypress, et j’ai également acquis une expérience précieuse avec une gamme d’outils AWS.
Pour mieux comprendre l’architecture du produit, j’ai été impliqué(e) dans l’exécution de certaines tâches QA manuelles. Cela m’a aidé(e) à comprendre les rouages du produit, et malgré sa complexité, j’ai vraiment apprécié en explorer la structure.
Même si l’équipe projet est répartie dans différents pays et continents, la communication a été à un excellent niveau – grâce au grand professionnalisme de tous les coéquipiers et à leur attitude orientée résultats.
Valentyn
QA engineer
Avant tout, la grande complexité du système et de l’architecture dans son ensemble font d’Union54 l’un des projets les plus intéressants auxquels participer dans les cycles de développement et de test. Leur API permet d’émettre des cartes virtuelles/physiques liées aux comptes des clients, leur donnant accès à leurs fonds dans n’importe quel distributeur automatique ou passerelle de paiement en ligne.



Impressionné(e) ?
Recrutez-nousAutres études de cas
Evolv
Nous avons augmenté de 50 % la vitesse des tests de régression de cette plateforme de croissance numérique et nous nous sommes assurés de son fonctionnement optimal 24h/24 et 7j/7
Keystone
A aidé le portail d’études n° 1 en Norvège à améliorer 8 de ses sites web riches en contenu, qui sont utilisés par 110 millions d’étudiants chaque année
Zazu
Nous avons aidé l’application de gestion financière n° 1 en Afrique à éliminer ses bugs et à devenir membre principal de Mastercard

