Measuring and analyzing driving behavior using an AWS Cloud IoT solution.
Our client wants to offer a platform to insurance companies that maps the driving behavior of potential and current customers in order to perform better risk analysis.
The hardware solution was already provided by the customer. It involves a dongle that can be hung in the car and reads the necessary registrations. However, they lacked the knowledge about developing a Cloud IoT platform that can handle all data registrations & make it manageable for the insurance companies.
Our client needed a custom development company that could set up the right backend platform and provide the necessary enrichments with weather information and location data. In addition, gamification would also need to be set up whereby the driver would receive a score per trip & tips on how to improve driving behavior through the app.
Development of the backend platform via AWS IoT. The dongle in the car transmits its data to our backend and it is released to a third party front-end.
This backend was technically extended with a serverless architecture based on lambda’s to increase the scalability of the platform. This way up- & downscaling is extremely efficient and without sky-high infrastructure costs.
Last but not least, the backend platform was integrated with external parties to retrieve location data and weather information.
Refleqt was responsible for test automation and performance testing during this project:
From Refleqt we provided a fully automated end-to-end solution with test coverage from dongle to app. Quality gateways were built in the CI/CD pipeline so that fast feedback on a code change is offered to the developers.
The test automation came about through Behavior Driven Development where we described the functional behavior of the application and used these functional requirements as input to develop the necessary test cases.
Due to the lack of tools to thoroughly test IoT platforms, we used Mosquitto (the MQTT protocol) to send & receive messages. In this way, we were able to test all incoming data in an automated way. Incidentally, this tool could also be used for the rest of the test automation.
For testing the external integrations for weather & location and the dongle itself, we created a mocking service that ensured the tests could take place quickly and reliably.
There was also no tool available for performance testing of the IoT platform. We extended the existing tool JMeter with open source plug-ins so that JMeter could be used for the necessary performance testing.
To set up the automatic functional tests, we used the OpenAPI documentation. In combination with Swagger Codegen we generated DTO (Data Transfer Objects) that took care of the communication with the backend.
First, the tests were performed on one dongle. Then we scaled up to thousands of dongles to see if the performance of the platform was still stable. The goal was to go to 10 million dongles with an average of 2 to 3 trips per day, so the platform should be able to register 20 to 30 million trips worldwide.
This geographical spread was very important given the global platform of our customer. Load testing was also handled globally by Refleqt. Load testing was done from Asia, Europe & USA using Blazemeter.
Tools & Technologies
- Test automation: Cucumber, Swagger Codegen, Mosquitto, Java, AWS IoT, Maven, JUnit
- CI/CD Pipeline: Jenkings
- Performance Testing: Blazemeter/JMeter
- Documentation: Atlassian suite
Due to the serverless architecture of the platform, no problems were encountered in terms of performance.
The platform with IoT integration and the necessary enrichments in terms of weather and location was delivered to our customer. In addition, it was also possible to link the backend platform to the mobile application. Refleqt also provided the necessary support for the mobile developers in using the platform.