Background: The Hungarian National Bank made a proposal to implement instant payment solutions in Hungary and launched it in March 2020. The purpose was to make payments available between Hungarian payment accounts within seconds, on a 24/7/365 basis. In our bank, we had already implemented this functionality by the end of 2019, but we needed a solution to test it. There were strict acceptance criteria that our solution should be able to handle a certain number of requests during working hours, another amount of requests during the evening, even fewer requests at night, and so on.
Goals: The goal of this project was to test the performance of instant payments.
"I think this project would not have been possible without automation and Jenkins was the perfect fit."
Solution & Results:
We chose Gatling as the load testing tool and used Maven as the build tool. In the beginning, we ran these tests by hand but it was not sufficient, and since we wanted the tests to run after working hours, we needed an automated way. The other aspect is that we wanted to save test summary reports and it was difficult if every developer ran tests on his or her own machine.
We also needed to run these daily performance tests more frequently and in a distributed way. Determining that the jobs should be parametrized, we located the Parameterized Scheduler in the Jenkins Plugins index, with which we can schedule and run these tests for months. Hat-tip to the awesome community of Jenkins for that suggestion. We have eight Jenkins slaves, so the test distribution was easy with this setup. With the Jenkins Gatling plugin, every test summary was shown on the job’s page, so our non-technical coworkers can easily view the latest results, as well as the previous reports and previous builds summary.
Key capabilities used include:
Parameterized Scheduler — a useful plugin if you need to run a parametrized job on a particular schedule.
Gatling plugin -- this plugin is also awesome because it displays the result of the test on the job’s overview page.
The results are typical of many other Jenkins installations:
improved product quality was improved
test cycles were shortened
test summaries are easily and automatically stored