The Internet of Things (IoT) bridges the divide between physical and digital worlds. It’s a system of interconnected devices which have the ability to collect and transfer data over a network without (in the successful use cases) requiring manual administration. Enterprises are getting leverage in shifting markets by implementing IoT Solutions in their business models to reduce time-to-market, boosts productivity and improve customer experiences.
Nonetheless, every technology has its own challenges. The Internet of Things faces a major challenge in terms of testing. To build a world-class IoT product, an end-to-end IoT solution needs to undergo significant amounts of QA throughout its lifecycle. That means every component, such as a sensor, gateway, user interface and the web services that bind them need to be tested before, during and often after delivery to the end-customer.
We’ll call such end-to-end IoT testing multistage validation. Let’s explore the concept of multistage validation in more detail.
An end-to-end IoT solution consists of multiple components including (in descending order of abstraction):
- User Access Component: Mobile Application or Web Application
- Cloud Infrastructure
- IoT Gateway
- IoT Embedded Devices/Sensors
Each of the above components plays a very critical role in the functioning of the IoT solution. Such a multilayered stack requires multistage validation. Multistage validation ensures that each component should perform its designated action correctly.
It advocates the process of validating each component of an IoT solution while doing the system testing with closed-loop tests where the forward path (from the mobile application to IoT device) and reverse path (from IoT device to the mobile application) is considered.
Use Case: An IoT System for a Smart Air Conditioner
Let’s say a user wants to set the temperature of their bedroom AC from a mobile application while leaving from the office, then the AC unit sends a notification to a mobile application when the desired temperature is achieved.
The IoT solution for the above use case would have the following components:
Mobile Application: User can set the AC temperature on his/her mobile application.
User Access Cloud: The mobile application sends the temperature value to a user access cloud using Rest APIs and also updates the database.
IoT Cloud and Gateway Device: The IoT cloud delivers the “change temperature” commands to the IoT gateway device installed at a user’s home.
Smart AC: The gateway device sends the desired temperature on the bedroom AC, and the AC sends a notification on the mobile application once the desired temperature is achieved.
For end-to-end IoT testing, multistage validation plays a critical role as the verification at each component level is required to ensure full system functionality.
Stage – 1: The validation requires the mobile application level to check the mobile application functionality. In this case, the validation would be whether the temperature of the AC unit is changed to the desired level.
Stage 2: The validation checks the user access cloud where the mobile application or web application accesses the cloud using the resource APIs. It’s mandatory to ensure that the functional requirements meet those at the API and database level. It must also make sure that the changes made by the mobile application, which are reflected in the database, are sent to the gateway device through the IoT cloud logs validation. This validation would be done to ensure that the APIs are working as expected and that the changes made to the database for AC are as expected for the desired device.
Stage 3: Here, the verification is needed at the gateway stage where the IoT cloud sends the “temperature change” command using an IoT communication protocol like MQTT, XMPP, XML or JSON. The validation is done to ensure that the correct message is received by the IoT gateway device and that the message is getting forwarded to the intended end device via a communication protocol such as Zigbee®, BLE or Wi-Fi, whichever is available. This validation would be done to ensure that the temperature change action is made for the intended AC device over a supported communication protocol.
Stage 4: The last validation required is at the end embedded device level which checks that the action received from the IoT gateway is reflected in the embedded device.
This validation would be done to make sure that the temperature gets set to the desired level on the AC unit. The AC unit should send the “desired temperature achieved” notification to the mobile device via the gateway and the cloud. The mobile application, cloud and gateway all get validated as soon as the mobile notification is generated from the Smart AC.
The Importance of Multistage IoT Solution Testing
- It enables testing, validation and verification of application architecture as well as integration between all the components and business requirements.
- It enables catching bugs at the integration level and also finds issues at the component level.
- It enables solution testing in end user and real-time use cases.