Klika enhanced testing practices and processes and product quality
Why is end-to-end testing essential in banking and finance?
With digital transformation, banks are undergoing tremendous change to modernize their systems, and they rely heavily on technology-enabled products to handle all the data and the millions of transactions daily. Therefore, the banking sector must offer stable and high-performing apps and solutions to enable safe and secure transactions and ensure customers’ trust. Given the complicated nature of banking apps and software, with all the dependencies, the testing process:
a.) is essential with no workarounds
b.) requires in-depth understanding of the scope and deep analysis
c) ensures regulations and compliance criteria met, smooth payment integrations, privacy and security, stable transactions and improved user experience.
What market need was identified?
In addition to standard QA Automation challenges (high upfront investment, finding skilled people and choosing proper testing strategies), the banking sector has its’s own set of problems which are almost all related to having properly prepared data for the tests to be effective.
We see so many projects where automated tests failed on a regular basis, but not because behavior of product is changed but because test pre- requirements are not met.
This is particularly visible in banks mostly due to the fact that the Core Banking System (CBS) for lower environments is working with the same set of rules as in production. What does that mean? For example, if we want to test logic for making payment from one customer to another, we must be sure that the source account has enough money to make a transfer.
No matter how many tests we run, the source account must meet specific criteria. That can be quite hard to guarantee as money in CBS cannot be created from thin air (usually it’s transferred from other customers). The more products banks have (debit accounts, saving accounts, credit cards, etc.), the harder it is to keep all those accounts in a usable state for testing purposes.
Another approach is to create a new customer with a specific state (specific product in a specific state, with specific amount of money). However, this is far from simple – usually banks have more than 20-30 steps before a customer is created with a specific product. Implementing this logic inside tests will be hard to implement, as well as to maintain.
How we did it
Splitting tests into multiple suites
The technology we chose was TestNG testing framework, and we split tests into multiple suites – the most important ones are regression and smoke, while the rest of suites were split by functionality (e.g., transfers, transactions, account management, etc.). Since end-to-end tests are quite time- consuming, we opted to have nightly tests.
Writing tests in Java and Groovy
Once the QA team had a web service for creating customers, writing the rest of the tests was quite straightforward. Most of the teams were using Java, while others chose Groovy as the language for writing tests.
We implemented Gradle plugin for Xray for reporting back test results.