Uelzener Versicherungen
Uelzener Versicherungen
Development of a test automation landscape at Uelzener Versicherungen
Uelzener Versicherungen has been at the side of people and animals for over 150 years. With over 300 employees and more than 500,000 customers, the specialist insurer is one of the most popular providers of insurance for dogs, horses and cats, particularly in the areas of liability, illness and accident risks. In addition to animals belonging to private customers, the company also insures businesses such as boarding kennels, animal shelters and dog schools, as well as farmers who keep livestock.

Initial situation and objectives
In 2017, Uelzener decided to completely renew its existing internal system. The choice fell on a software solution developed in Java, which is already being used by various health insurance companies in Switzerland. The software offers the possibility of intervening deeply in the system through parameterization and tailoring the software to the individual needs of Uelzener. The advantage of this approach is the extensive customization options, which are definitely necessary for a specialist insurer. One challenge is that the responsibility for the correct functioning of the existing system lies solely with Uelzener. In order to be able to carry out quality assurance of the self-made parameterization, this should be ensured with automated test cases, among other things. To support the introduction of test automation at Uelzener, accompio PrimeTec (formerly proficom GmbH) was commissioned as a service provider.
The aim was to set up a test automation framework and a test infrastructure that would reduce the manual testing effort and provide an early indication of the quality of the software for certain test cycles. The only tool that was already in place also comes from Switzerland and is called “Oryon”. Oryon is a proprietary test framework for the automated control of JavaFX and Swing applications.
To start: Revision of existing manual tests
A core functionality of the portfolio system is the creation of new insurance contracts for a wide range of Uelzener products. At the same time, these insurance contracts serve as the basis for all further processes. For this reason, the implementation of the test automation solution started with the insurance contracts. The basis of a good automated test case is a detailed manual test case. This proved to be the first hurdle for test management. When describing the manual test cases, it is important to be as detailed as possible. As the existing test cases were written by experienced technical experts, they understandably lacked the necessary level of detail. Therefore, the first step was to write more precise test case descriptions. In addition, certain preconditions had to be taken into account in the test case descriptions. For example, an insurance contract can only be created if a sales partner and a natural person exist. Manual test cases were gradually processed, supplemented with additional steps and provided with technical details. The open source tool management system TestLink was used for this purpose.
Implementation of the first automated test cases
From a technological point of view, the inventory management system is a JavaFX application. It was therefore an obvious decision to stick to the Java context for the programming language. The Oryon tool offers the option of being integrated via a build management tool. The choice fell on Maven. Furthermore, the internal development team at Uelzen used Jenkins as a build server for various tasks. This meant that the most important cornerstones were already in place and an initial test case could be implemented as a prototype.
The implementation was based on classic automation with TestNG, Selenium and the page object pattern. In this use case, only Selenium was replaced by Oryon. The basic concept remained the same and is outlined below:
- Definition of different test classes as test modules
- Combining several test modules into a TestNG test suite
- Implementation of PageObjects that map the corresponding masks in the inventory management system
- Creation of a report with the help of Extent Reports
Higher test coverage through the introduction of different variations
When automating the contract systems for the various products, it became clear that there is a range of data that has an impact on the premium to be paid and internal insurance processes. Depending on the product, for example, the breed of dog to be insured and the tariff options to be selected are crucial.
For this reason, a solution had to be created that was able to provide already created test cases for the contract creation with input parameters. To this end, all variable data was first collected in a MySQL database and stored in corresponding tables.
These specific tables are now read during each test execution and transferred to a data model. The data model can then be used in any test class. Technically, the Spring Data JDBC framework was used here.
Incidentally, the MySQL database still runs in a Docker container today. This container virtualization mechanism was also used for the next challenge.
Challenges in test execution via Jenkins
Due to the broad product portfolio of approx. 80 different products and the possibility of storing different variants, a quantity of approx. 1,000 test cases for the contract systems was created in a very short time.
Together with the internal Uelzen development team, a separate Docker container image was designed for this purpose. This image is based on Ubuntu and was extended with various packages so that the inventory management system could run in the container with the help of an X-Window system.
This enabled us to run up to ten build agents simultaneously. This mechanism is still stable today and enables us to run around 100 test cases (of varying complexity) per hour – currently around 900 tests are executed overnight in nine hours.

Extension of the automated test cases to include document checking
After the basic features of test automation had gradually become established at Uelzener, the first specialist departments approached us with various requirements. Among other things, Output Management processes the generation of various contract-relevant documents. This means, for example, that when a customer concludes an insurance contract, they also receive the corresponding documents by post or e-mail. The data that flows into these documents is partly read from the policy management system and partly specified by Uelzener itself. To this end, the test automation team developed a mechanism that draws attention to any differences between two documents in order to identify discrepancies. The solution was provided by pdfcompare (an open source framework based on Apache PDF Box). With the help of this framework, we were able to compare documents in detail, but also exclude dynamic data from the comparison.
When executing the test cases, some data in the document differs (e.g. dates or consecutive numbers); these are excluded or not taken into account in the document comparison. However, an error within the document text is recognized during the text comparison. The deviations in the document are highlighted in color.

Conclusion of contracts via various web portals
Uelzener is currently revising part of its product range, which is offered via various web portals. Here too, our team is now supporting the transition from manual to automated tests. The tool of choice here is mainly the open source framework Selenium. This framework makes it possible to control various browsers automatically. The structure is similar to the test automation project of the existing system, but with some improvements based on our experience.

Not only has another test object been added here, but we now also have the opportunity to design and automate more complex end-to-end test cases. For example, we check whether contracts that are concluded via the web portal arrive correctly in the inventory system. This involves running through various systems in the background and triggering corresponding events.
System landscape and scope of automated test cases
Over the last five years, our team has been able to automate over 2080 test cases in total. This has enabled us to cover the most important basic functionalities from the specialist departments that work with the existing system. The following diagrams illustrate how the complexity of the system landscape to be tested has increased:


However, this large number of test cases with different focal points also brings new challenges. The amount of maintenance and monitoring work involved should not be underestimated.
Summary
Test automation has become an important part of the work processes at Uelzener. In particular, the automated test cases are used for each test phase in order to provide an early assessment of the quality of the delivered software packages. Only after we give the “green light” do further steps in the process chain follow, such as manual testing. Although it is never possible to automate all test cases, Uelzener currently saves three weeks of manual testing per test phase. Test automation is also helpful in meeting the requirements set by the BaFin insurance supervisory authority. The results of the individual test cycles can be delivered faster and more efficiently.
From the very beginning, accompio PrimeTec (formerly proficom) has supported Uelzener in the creation of automated test cases and the development of a corresponding test infrastructure. This cooperation will continue in the future in order to face the upcoming challenges together.

