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.
The standard use of automated integration testing in an IMS (IP Multimedia Subsystem)
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:
- Handsets from different vendors employed by the end-user
- The deployed EPC (Evolved Packet Core)
- Other IMS from different vendors for roaming
However, this approach to IMS testing comes with a couple of drawbacks, such as:
- Tests using genuine handsets are performed manually, which is time-consuming and can be error-prone depending on the tester, leading to longer release cycles and a more fragile product, respectively.
- An EPC, an eNodeB (Evolved Node B), and – in case of roaming – an external IMS are required.
- All IMS components must be available in the shape of either a real component or an emulator.
- Localizing issues can be challenging due to multiple components being involved.
- Specification compliance between components within the IMS is not tested explicitly. Therefore, otherwise failing scenarios might succeed due to the same incorrect assumptions present in multiple components or the latter being tolerant to messages not conforming to the specification.
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.
ng-voice’s platform for automated integration testing of IMS components
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.
What are the benefits of an automated integration testing platform seen at ng-voice?
Testing one or multiple components in isolation before integrating them into a complete system yields the following benefits:
- All communication between components can be checked for specification compliance to ensure seamless integration with different IMS, EPC, and handset vendors.
- Errors can be detected and fixed early during the development of a particular component – without requiring its dependencies for testing – leading to a faster release cycle and a more stable product.
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.
Share this article via:
Brings his expertise in test automation, Python, SIP, and Diameter to ng-voice. As a software engineer at ng-voice, Matthias uses his skill sets to design and develop a test automation framework to ensure specification-conformity and correct functional behaviour of our IMS components.
Benedikt joined ng-voice as a Python Software Engineer with over five years of experience developing full-stack Java applications and Python-based development tools. He now uses his development expertise as part of our QA team to improve our test automation tools and help us ensure the high reliability of our IMS solution. He is passionate about Linux and open-source projects.