Introduction:
In this case study, we delve into the implementation of scenario-based development in a fintech insurance company during its scale-up phase. The primary focus is on leveraging scenario-based development to drive automated testing, addressing the challenges faced by the testing team in handling a large volume of functionalities and diverse data combinations related to customer communications.
Pension and Insurance Company Context: The company had an in-house development and manual testing team responsible for testing their products and internal applications. However, the testing team struggled to cope with the extensive volume of functionalities, prompting the need for automated testing to cover a vast array of data combinations for customer letters. The scope of testing also encompassed different types of content for PDF files, emails, web applications, and internal applications.
Key challenges:
During the diagnosis phase, it was discovered that the testing team relied solely on manual testing, using a limited amount of data. However, the testers displayed a strong willingness to understand and implement complex database queries, despite lacking coding skills.
Company’s challenges: The main goals were to develop an automation framework that would lead to:
- The creation of a customizable and user-friendly automated testing solution
- Empowering the client’s testing team to easily add or modify test scenarios without relying on development skills
- Achieving high test scenario coverage across various technologies and data sources
- Establishing a dynamic solution that leverages extensive information and logic stored in databases, coupled with customization capabilities offered by the testing framework.
Our challenges:
The primary challenge involved developing a custom automated testing framework, as this approach was relatively uncommon in the industry, resulting in limited documentation.
The framework aimed to intelligently navigate different paths based on data stored in the database, necessitating the use of reverse engineering techniques.
Additionally, ensuring ease of use and expandability by the client’s testing team posed an additional challenge.
Solution identified:
We employed our scenario-based development approach to clearly define the scenarios the automation would have to consider.
In this, we met with product, development and testing teams to understand their pains and their needs. We evaluated their skills, strengths and wants moving forward. We identified supporters of the automation and we involved them in the decision making process and the development phases.
Together, we leveraged their strengths and included all of this in our framework.
We defined clearly the scenarios they needed covered and we discovered the patterns which helped in our design.
We then spearheaded the development of customized automation framework focusing on the following:
- navigation in the web interfaces of both internal and external applications – utilizing Selenium WebDriver and custom Java libraries
- validation of the content of the web application, PDF files, and emails – a method was devised to dynamically generate expected content based on static text and dynamic data retrieved from the database at runtime
- the generated content was then compared with the actual content in the tested application using the automated framework
- navigation in web application was based on generated data to enhance the paths took by users – decisions of paths were made during runtime depending on the generated data
The implementation of this framework significantly reduced testing time from days or weeks to just a few hours, while also increasing test scenario coverage from 5-10% to 90%.
Following the implementation, the testing team’s responsibilities primarily focused on testing edge cases and creating new and complex database queries for new functionalities.
Key lessons learned:
- Effective Communication: Improving communication of requirements and expectations from clients is crucial to prevent misunderstandings and frequent changes during the development phase.
- Scenario-Based Development: Implementing a scenario-based development approach allows for a comprehensive understanding of the product, facilitates alignment with client expectations, minimizes assumptions, and identifies requirements gaps early on.
- Early Issue Identification: By identifying issues early in the analysis and design phases, major system failures can be prevented from reaching the development stage, saving costs and reducing rework.
- Test Automation: Developing a custom automated testing framework tailored to the specific needs of the company significantly reduces testing time, increases test scenario coverage, and enables the testing team to focus on edge cases and new functionality.
- Collaboration and Involvement: Collaborative efforts between development, testing, and product teams, as well as active involvement of clients, lead to enhanced quality, reduced frustrations, and improved client satisfaction.
- Comprehensive Testing Practices: Embracing comprehensive testing practices, including scenario-based development and test automation, helps ensure a shared understanding of requirements and expectations, leading to higher operational efficiencies and increased confidence in software products.
These lessons highlight the importance of effective communication, scenario-based development, test automation, collaboration, and comprehensive testing practices in successfully navigating the challenges faced during a scale-up phase in the fintech insurance industry.
Conclusion:
By harnessing scenario-based development, the fintech insurance company successfully integrated automated testing into its scale-up phase. The customized test automation framework provided extensive coverage and rapid testing for diverse functionalities across various applications. Automation became the cornerstone of the testing process, reducing manual efforts and ensuring comprehensive test coverage. This case study demonstrates the value of scenario-based development in driving automated testing, resulting in notable operational efficiencies and increased confidence in software products.