Union54 is a spinoff from Zazu, Africa’s challenger bank awarded Mastercard Principal Membership. Having witnessed African banks’ uncooperativeness and legacy processes, Zazu’s founders came up with a solution helping other fintechs speed up the card issuing process. With Union54, card production and issuance take three to nine days.
The Union54 APIs allow businesses to issue physical and virtual debit cards, fund cards in any currency, program them as per one’s preferences, use a card management platform for various digital banking activities, among other features.
Cooperating with Union54 has been nothing but a pleasure: we were already familiar with their team, workflows, and quality standards through the Zazu project.
Here are some of the most important aspects we were required to comply with:
- Time Constraints. Since Union54 participated in the Y Combinator summer batch, they had about two months to deliver a fully functioning MVP before presenting it to a selected audience of investors and press on the demo day. From our end, we were responsible for timely testing of API endpoints as they were being built.
- Test Automation Stability. Fintech projects like Union54 cannot do without test automation. Such solutions require a twofold amount of testing effort, and manual testing alone won’t provide 100% test scenario coverage. Our task was to develop a stable test automation suite that is both comprehensive and easy to maintain and scale.
- Missing UI. Our client was looking for highly technical QA engineers capable of testing API endpoints without a user interface. This requirement was not a challenge for us as we have a team of experts skilled in API testing.
Fintech solutions like Union54 do not tolerate any oversights, so we shared the accountability for the project’s success from day one.
To ensure sufficient test coverage from early development stages and meet the deadlines, we decided to combine test automation with manual testing QA. Such an allocation of resources allowed us to automate about 90% of test scenarios concerning endpoints and most essential database triggers.
The manual tester, on the other hand, writes positive and negative test scenarios, which are further reviewed by the test automation engineer, and takes care of the rest of the functionality not yet automated or with no automation potential. The mission-critical test scenarios were checked both by a test automation engineer and a manual tester to achieve the utmost software quality.
Another aspect that lays the foundation for a successful test automation strategy is the right choice of testing frameworks. For manual testing, we relied on Postman as this tool is specifically designed for API testing and makes it easy to test apps with missing frontend – precisely what we were dealing with. Test automation scripts were written with Cypress, which is suitable for continuously growing test automation projects like Union54.
Test automation stability is the primary challenge for any QA automation engineer. Why is it so important? Validating what tests failed because of bugs or changes to the code and what tests are the result of an unstable environment is the daily practice of a QA automation engineer. If automated tests are unstable, the number of false positives will continue to rise as the project grows. As a result, an enormous amount of time is wasted on filtering false positives from truly failed tests.
Before we started any work on the project, the Union54 team had already written a couple of tests with the Mocha framework, so we decided to give it a try. As new test scenarios became more elaborate and the test suites increased in size, we noticed significant stability issues and communicated our concerns to our client. To resolve this issue, we switched to a different framework, rewrote all the existing tests in Cypress, and placed them into a separate repository.
We agreed on Cypress because of the numerous benefits it offers. Cypress allows you to automatically retry failed tests and set a custom number of retry attempts, either for all tests or just for a specific one. This feature is super handy for reducing test flakiness and CI build failures caused by the temporary unavailability of third-party services or random network errors. Other Cypress advantages are logical and straightforward patterns, high readability of test scenarios, and scalable code; the already written patterns can be reused in future tests. Cypress is also a good match for running complex, multi-step test scenarios.
CI for the automated tests is implemented with the help of Bitbucket Pipeline. Every night at 2 a.m., the latest commits from the develop branch are pulled into the CI pipeline. Therefore, our tests cover all changes to the codebase even if developers work late into the night. Thanks to the Bitbucket integration with Slack, we are instantly notified of all commits, pull requests, and pipeline statuses, both successful and failed.
A complete test run including 1500 test scenarios in the CI pipeline takes about 1.5 hours, which is quite decent, considering the test scenario complexity and number. Having achieved the stability of automated tests, we see a clear picture every morning, spending minimum time on troubleshooting.
As new capabilities are being added to the Union54 website, we also cover the front-end part with automated functional tests.
All the critical bugs we found never reached the production environment thanks to a comprehensive test automation suite backed by manual testing. The majority of issues we encountered concerned unhandled or incorrectly handled exceptions, incorrect authorization of various types of users, incorrect contents of the response object, and absence of some attributes in the database.
Actual result: Data in response: “balance”: 0, “status”: “issued”, Actual data in DB: “balance”: 100, “status”: “stopped”, (since balance and status of the card have been changed)
Expected result: Data in response equals to actual (as it works if only ‘card’ query parameter is provided).
Actual result: Response code 1 Approved , new TRANSACTION_CARD is written to DB table with float amount 15.577777.
Expected result: Response code -19 (invalid amount), no new TRANSACTION_CARD entry written to DB table. Only integer amounts should be allowed.
Actual result: Response 400 Validation Error, message “message”: “card has been stopped”NOTE: I noticed, that if you manually remove “stopReason” property from DB card record, response returns 200 Success (as expected).
Expected result: Response 200 OK, card’s status changed to ‘issued”.
With our continuous support from early development, the Union54 team thoroughly tested and polished its product before the life-changing demo day. In about two months, we helped Union54 discover critical bugs and developed a robust automated regression suite to spot similar issues before they travel to prod. The result of our fruitful cooperation is spectacular: Union54 received $3 mln in seed funding soon after graduating from Y Combinator. Fast forward six months, and Union54 raised $12 mln in a seed extension round.
The Union54 API is currently explored by over 50 African fintech companies and keeps raising interest among investors worldwide. With confidence in the quality of its product, Union54 issued over half a million virtual debit cards and saw monthly revenues steadily growing at 50%. Our QAwerk team will continue working with the same zeal and commitment to witness Union54 achieve the next milestones and gain traction across Africa and abroad.
Zambian card-issuing fintech Union54 has raised $12 million in a seed extension round led by Tiger Global. The company also claims to have processed volumes now reaching double digits in millions of dollars.
Zambian fintech startup, Union54, whose APIs facilitate the issuance of debit cards in Africa, has finalized a $3 million seed funding round which was led by Tiger Global.
I worked with QAWerk’s team during the build out of Union54's card issuing API product, where they supplied manual and automated test engineers. The team were diligent, skilled and enthusiastic about the project, always willing to go the extra mile. The product quality was excellent as a result of the team, with 99% of bugs or missed requirements caught well before they hit the production system. And this, despite the ongoing issues faced by Ukraine where the resources were based. Would thoroughly recommend the team and wouldn’t hesitate to use them again.
Looking to speed up development with test automation?Talk to experts
QAwerk Team Comments
QA automation engineer
The Union54 project has challenged me in several aspects. I needed to master a new tech stack to write autotests, first with Typescript + Mocha and then with Cypress, and also gained invaluable experience with a range of AWS tools.
To better understand the product’s architecture, I was engaged in performing some manual QA tasks. It helped me get under the hood of the product, and despite its complexity, I really enjoyed exploring its structure.
Even though the project team is distributed across different countries and continents, communication has been at an excellent level – thanks to the high professionalism of all teammates and their result-focused attitude.
Primarily, the high complexity of the system and whole architecture itself make Union54 one of the most interesting projects to participate in within development & testing cycles. Their API allows issuing virtual/physical cards linked to customers’ accounts, giving them access to their funds at any ATM or online payment gateway.
Related in Blog
Automated software testing is important for software products in order to verify key functionality, perform regression tests and help to run a lot of tests in a short period of time. For a long time testing of the web-based user GUI and mobile applications have been more challe...Read More
High quality. These are the ultimate “holy grail” words in any business niche, project life-cycle, service implementation, etc. It’s easy to save on a “small” thing or two - the long-standing results of such “cost-effectiveness”, however, are truly nasty in 9 out of...Read More
Other Case Studies
Helped increase regression testing speed by 50% and ensure the platform runs 24/7
Helped Norway #1 study portal improve 8 content-heavy websites used by 110 mln students annually
Helped #1 finance management app in Africa eliminate bugs and become Mastercard Principal Member