Internet of Things (IoT):
When someone asked, “what are the basic necessities of our life?”, we would answer them “Food, Shelter, Clothing”. But that was the case a long time ago. Nowadays we have developed a handful of extra necessities for living. We have evolved to make our life, simpler, better, easier.
We have stopped using switches to control lights, we have been monitoring our health status smartly, tracking vehicle movements more efficiently and a lot in the list.
How do we do it now? How is it so different?
The IoT is the connection of vehicles, home appliances, medicinal equipment using embedded electronics, microchips etc. to collect and exchange data of a different kind is called as IoT. This technology allows the user to control devices remotely over a network.
Technologies used in IoT
Following are the few technologies used in IoT,
- RFID [Radio Frequency Code] tags and EPC [Electronic Product Code]
- NFC [Near Field Communication] is used to enable two-way interactions between the electronic devices. This is basically for the smartphones and is mostly used to do the contactless payment transactions.
- Bluetooth: This is used where short-range communications are enough to get away with the problem. This is mostly used in wearable technologies.
- Z-Wave: This is a low power RF comm technology. This is primarily used for home automation, lamp controlling etc.
- WiFi: This is the most commonly used choice for IoT. When on a LAN, this helps in transferring files, data and messages seamlessly..
Testing IoT
Testing of the IoT system is quite challenging owing to the variety and volume of data it generates, heterogeneity of the environment, as well as due to the complexity in the working of a number of components.
This is the key to ensure that the IoT devices work accurately for the intended environment. However, IoT testing has its own set of challenges. Let's take a look at some of the key challenges in testing IoT devices and how the testers can address those issues.
IoT Testing Challenges
#Too Many Hardware & Software
IoT is an architecture which is coupled among various hardware and software components. It is not only the software applications that makes the system but also the hardware ones, sensors, communication gateways etc. plays a vital role. So, functionality testing alone does not ensure the IoT system is certified. There is always a dependency on each other in terms of the environment, data transfer etc. So, it becomes a tedious job as compared to testing a generic system.
How to Address this:
The best approach to deal with the hardware-software mesh is- gather information from the end users to understand which devices and software versions they’re using and analyze it to determine the most popular combinations. Once you know which devices and operating systems to test, you can focus most of your testing on these combinations and run smaller sanity tests on less common combinations.
#Network Configuration
IoT is all about the data being communicated in faster speeds all the time. So, Network connection plays a major role in IoT. However, sometimes devices experience troubles with network configurations like inconsistent internet connections, encumbering channels, etc. Testers need to test the IoT devices in all kinds of network connectivity/speeds.
How to Address this:
To test this, virtual network simulators can be used by testing teams to emulate different network conditions of stability, load and connectivity. Communicate with virtualization vendors to find out how they validate the performance of their products and facilitate those approaches in testing to avoid any bottleneck in the long run.
#Device Diversity
As this is an architecture between different set(s) of hardware and software, it becomes mandatory that they talk to each other in real time/near real time. When they both integrate with each other, things such as security, backward compatibility, upgrade issues become a challenge for the testing team.
How to Address this:
Testers must have a strong Test strategy, have a clear understanding of IoT architecture, and ensure that the devices and software under test are always configured with the correct version. If the system depends on third-party services, tests may fail if that third-party service changes. Automated tests that run as part of a continuous testing pipeline will detect this very quickly.
If the third-party service is unavailable, we can virtualize the service, and remove the dependency on the actual service. If the service is down, we can still test by using the virtualized service. A customizable service virtualization tool will let us configure the expected responses from the service, so that we can test the application’s response to various situations.
#IoT Security Threats
IoT is data centric where data flows between different devices. The amount of data collected and communicated by IoT devices is often huge. While transferring from one device to another, data is prone to get accessed by unauthorized users. Since IoT devices are vulnerable to security threats, it is very critical to test and identify security loopholes and address them immediately.
How to Address this:
IoT testers should perform strong penetration testing and vulnerability scans to detect security flaws. Application code reviews protects the application against any SQL injection, cross-site scripting and buffer overflow attacks.
#Real-time data testing
Testing in Lab makes sure the product/system works fine. But this may backfire badly when exposed to real-time conditions/steps/scenarios. Also, for any healthcare system needs to pass through multiple regulatory/compliance checkpoints. Think of a scenario where the product passes through all the testing steps but fails in the final compliance checklist when the testing performed by regulatory body. It’s tough to get such real time data for testing.
How to Address this:
Pilot testing/regulatory testing is mandatory. During pilot testing, the system is exposed to a limited number of users in the real field. They use the application and give feedbacks on the system. These comments come in handy making the application robust enough for the production deployment.
Also, It is a better practice to get the regulatory requirements in the starting of the development cycle itself.
Rounding It Off:
The number of devices and software in IoT is rapidly increasing and testers are required to test more and more to find bugs and provide end users a quality product. IoT testing approach can be different based on the system/architecture involved. Testers should concentrate more on the Test-As-A-User [TAAS] approach rather than testing based on the requirements. IOT testing may be a tough/challenging job but, it is also very exciting as well for the testing team to certify such a complicated mesh of devices, protocols, hardware, operation systems, firmware etc.