In this blog post, we are going to discuss what automated integration testing is and how we exercise it at ng-voice. This blog will provide a brief overview of the usage of automated integration testing in an IMS, possible challenges faced, and the benefits of using this method. The testing process can be time-consuming and resource-intensive, so we’ll explain how automated integration tests are used at ng-voice to effectively reduce the required time and resources while retaining the reliability and quality standards of our fully containerized and cloud-native IMS.
Integration testing is an important aspect of testing a software product – our IMS solution in this case. Using software to perform such integration tests in an automated manner is called automated integration testing. It ensures that multiple independent components – possibly even developed by separate teams – each function as expected when combined with others to form a complete system. The primary objective of such a test is to verify the correctness of a component’s external interfaces. Specifically, in the context of IMS, a large number of Call Flows must be covered with close attention to intricate technical details.
When it comes to testing an IMS (IP Multimedia Subsystem), using genuine handsets (UE, short for User Equipment) is the obvious choice. The goal of such tests is to ensure compatibility between the IMS and:
However, this approach to IMS testing comes with a couple of drawbacks, such as:
Even though the first two drawbacks can be remediated by using a handset simulator, the latter three still persist. To solve these challenges, ng-voice developed a platform for automatically testing one or multiple IMS components in isolation without using auxiliary components or emulators.
The concept behind this testing platform is to launch the component(s) to be tested and simulate all their immediate dependencies via entities we call User-Agent Mocks (see the diagram below). The purpose of a User-Agent Mock is similar to that of an emulator; both imitate the behavior of a real component for the purpose of testing. The major difference is that User-Agent Mocks can be configured to send arbitrary messages to the System Under Test (SUT), as well as validate incoming ones. Furthermore, all User-Agent Mocks are controlled by the testing platform itself, causing a test scenario to fail as soon as a message fails validation at any of them.
Testing one or multiple components in isolation before integrating them into a complete system yields the following benefits:
As an industry disruptor, we’re always looking at how to improve our solution and development processes to give our clients the best possible experience. Using automated integration tests aids us in these efforts by saving time and resources in the testing process, as well as helping us retain the excellent reliability and quality standards of our fully containerized and cloud-native IMS. To know more about our solution, get in touch with us and schedule a meeting.