"Rubicon's test automation resources all had a strong software development background, which resulted in well-structured test scripts that our in-house developers found easy to maintain and extend. Rubicon's automation of a lengthy manual testing process reduced our time spent for each development cycle, standardized our process and resulted in a higher quality product for our customers."
(COO, Fintech company)
In 2018, RUBICON began collaborating with the fintech company to help them support and deliver a web app designed for professionals in the financial industry. RUBICON’s dedicated team wrote and implemented automated tests that provided a safety net for the development process and ensured a high-quality product.
The London-based client is a major player in the fintech industry with a focus on data analytics software. The company targets global financial institutions providing them with software that presents all financial data on one platform. The web app allows professionals to have insight into real-time financial data to help them make both fast and smart business decisions.
The Client’s Request
The client requested for RUBICON to dedicate a quality assurance team to write and generate end-to-end automation tests with the goal of confirming usability, stability, and reliability for the software product.
Challenge #1: The tests contained large quantities of data
A large part of the software’s functionality was to display data (sometimes manipulated directly on the frontend) either by text or visualized graphically. It was the software development team’s job to ensure that all of the displayed data was correct and consistent day in and day out, down to the last pixel.
The solution consisted of two parts. One solution was provided by the client and the other was engineered by RUBICON. Firstly, the client made sure that the data in the testing environment was always constant even with the exception of the time-based data which shifted daily. Therefore, the data from “yesterday” was always the same.
RUBICON’s solution was a custom-designed architecture product that was modeled specifically for the client’s project. In conclusion, the data was loaded into the tests and then matched with the data that was collected from the application.
Challenge #2: Tests needed to be able to run on multiple environments
The tests needed to be able to run on multiple environments that were configured differently from one another and consisted of different data and functionalities. The client had multiple environments, each with their own set of data and enabled/disabled features. These environments effectively multiplied the number of tests the software team had, as well as drastically increased the time needed to perform the run of a test set.
Serenity-Grid and Jenkins were used to distribute test runs allowing the software team to run tests in parallel. Using these tools allowed them to hasten the development workflow by reducing the amount of time a developer has to wait for a test run to be completed.
Challenge #3: A large number of tests required optimizing code for speedy executions
Having tests run in parallel to save time can be nice, but the screenplay pattern was used in which tests are made up of building blocks, called tasks and questions, that are reusable between tests. Having even one unoptimized task or question that is used everywhere would mean that every single test would waste precious time when being executed.
Optimizing the tasks and questions since they are the building blocks of tests was the highest priority for the software development team. Serenity’s report feature allowed the team to check the execution time for every task and action so they could identify the slow performing ones and focus on them.
RUBICON’s dedicated team was composed of one tech lead and two quality assurance automation engineers who worked on writing, running, and maintaining tests for the client’s software.
The framework the team used to write the end-to-end automation tests was Serenity.
Serenity works by producing an end report which presents the behavior of the web app such as the user’s series of steps on the web app, screenshot for each step, the outcome and duration. Serenity uses abstraction to make the tests more humanly readable so each person on the client’s team can easily read and understand the tests.
Since the software was constantly changing during the project with new features, tweaks, and updates, RUBICON’s team decided to use the kanban methodology due to its flexibility. Using Kanban, RUBICON’s team ran daily standups where the team members synced their current status with each other and exchanged ideas. In addition, weekly meetings and retrospectives were held where tickets were refined and both the process and performance were evaluated.
Testing, running, and maintaining the end-to-end automation tests ensured that the client's software performed and behaved as it was expected. In case there was a failure, the software team was able to provide a quick feedback loop back to the client to minimize downtime.
RUBICON’s software team helped the client keep their software product high-quality and seamless, guaranteeing a positive user experience for customers in the financial industry.
Region: London, England
Project Duration: 2018-2020
Project: Quality Assurance Testing