Union54
Union54 is a fintech startup providing card issuing services for businesses in Africa. Its RESTful API allows fintech companies to issue programmable virtual and physical debit cards on their own, without a bank or third-party processor.
All CustomersWeb App Testing
With our professional support, businesses can rest assured their web solutions, including web APIs, behave as intended. We helped Union54 thoroughly test their RESTful API to ensure it returns the desired output, has proper authentication and access controls, and performs well.
Learn moreAutomated Testing
We helped Union54 build and automate a comprehensive regression suite that is stable, scalable, and easy to maintain. Our QA engineers covered 90% of API endpoints with test automation and continue automating new database trigger scenarios and front-end functionality.
Learn moreIntroduction
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.
Challenge
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.
Solution
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.
We tested API endpoints as they were being built, so our test plan included testing new features, integration, and regression testing.
Test Automation
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.
Bugs Found
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: 400 Validation Error, message: "card has been stopped". Note: Manually removing the "stopReason" property from the DB card record results in a successful 200 response, as expected.
Expected result: Response 200 OK, card’s status changed to ‘issued”.
Result
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.
In Press
Looking to speed up development with test automation?
Talk to expertsTools
QAwerk Team Comments
Aliaksei
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.
Valentyn
QA engineer
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
Web and Mobile App Testing Automation: How to Choose the Most Suitable Open Source Tools?
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....
Read MoreQA in Software Development: Role and Importance
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 MoreImpressed?
Hire usOther Case Studies
Evolv
Increased this digital growth platform’s regression-testing speed by 50%, and ensured the platform runs optimally 24/7
Keystone
Helped Norway’s #1 study portal improve 8 of their content-heavy websites, which are used by 110 million students annually
Zazu
We helped the #1 finance management app in Africa eliminate their bugs and become a Mastercard Principal Member