Software testing is regularly subject to trade-offs - that is, attempting to cover as much of a codebase as is possible given time and resource constraints. Sometimes known bugs slip through to release and go unfixed because they are deemed low-risk. Within fintech, even small bugs can have serious repercussions for a development team… and for the entire business. Trust is paramount when dealing with people’s finances, so software testing in fintech is held to a higher standard than most other apps.
Fintech application challenges
Fintech is a large and diverse industry that can represent many different types of software. These range from providing app-based retail banking services to generating trading algorithms for brokerages that automatically make trades based on analyzing market movements and trading patterns. What they tend to have in common is the need to process vast amounts of data rapidly while being absolutely sure to maintain data integrity and correctness at all times. The Mark Zuckerburg “move fast and break things” approach to software development that was popular in the early to mid-2010s definitely does not apply to fintech.
The ideal fintech approach to “move fast and break things” would simply be “move fast and never break anything.” A bug or mistake in a fintech app can be disastrous for a company and can have serious financial consequences. Code that makes it to a live environment in fintech needs to have gone through an extensive testing process to make sure that it does not contain any bugs.
Despite this, the fintech industry also emphasises rapid development. Fintech is a competitive industry, with many different companies and applications vying for market dominance. Keeping pace with the markets and competition requires constant development, which can clash with the need for extensive testing and poses an interesting challenge to software testing in fintech.
What does good testing look like for web software in general?
Though fintech poses some interesting challenges to software testing, it is not wholly unique in the processes used to develop and run tests for it. Most web software shares the same structure and approach to testing as fintech software. Testing should be embedded during the development process, either using continual testing and integration or as a distinct phase in the development process.
Whether testing takes place before, during, or after code has been written (or all three!), test code follows a similar pattern. Assertions are written around units of code - such as a class method - that mock particular inputs and assert the expected outputs. Test data is generated to use for inputs and then these tests are bundled up into a test suite that is run against the codebase.
Other forms of testing may also take place, such as UI/UX testing. These assert whether particular layout elements exist where they are supposed to, that they display correctly across different resolutions and devices, and that the software works as expected. User stories may be developed to describe a series of events that testers follow to mimic the expected behaviors of real users when using the software. While advances have been made to automate parts of UI/UX and general front end testing, it is still largely a manual process for many companies.
All of these test cases take time to develop and must be maintained, which takes additional time and resources. Very often, trade-offs are made, and test cases are only developed for areas in code that are deemed high risk or of particular importance. Bugs that don’t adversely affect the user experience may stay in production builds because it is not worth the time for a developer to fix the issue rather than work on new features.
How testing in fintech needs to be different
Fintech testing has a much more stringent requirement on code coverage and correctness than general web software. The “move fast and break things” approach used by apps targeting many other areas is not suitable for fintech, so fintech software needs to be comparatively more structured. This begins with changing how products are designed and built. Whereas social media apps can afford to experiment and ‘build as they go along’, the need for functional quality is something that cannot be sidelined in fintech.
Testing can sometimes be something of an afterthought to development teams eager to get their software out the door and find an audience for their product, but in fintech, a well-structured testing and QA process must be integrated very early on during the discovery phase. This is so that the software can be designed and developed using software patterns that are well-suited to testing. Fintech software that moves fast but breaks things does not last very long in a competitive market.
How great QA creates a comparative advantage for fintech
Fintech software relies on rock-solid testing and QA processes to ensure product quality in a competitive and fast-paced industry. The languages and design patterns that are popular in fintech reflect this need for testing - languages like Scala feature strong, static typing with both functional programming and object-oriented programming supported, which break code down into units that are comparatively easy to write tests for.
In addition to this, QA processes often take advantage of cutting-edge DevOps techniques, such as continuous testing. This means that software is tested throughout the development and deployment process, rather than as its own discrete phase after development. This also encourages developers and QA testers to become more tightly involved with each other and work together, rather than working against each other.
A comparative advantage for fintech is that there is very often no legacy code or systems to work with. Unlike more traditional financial institutions that have to adapt to software and processes that were designed decades ago, many fintech development teams start from a clean slate. By utilizing the best practices of modern-day software design and development, fintech can more easily integrate new ideas and features into its software package at a more rapid pace. This lets fintech companies break new ground and enter new markets dominated by traditional financial institutions by developing software at a rapid pace but without compromising on security or stability.