IoT and Testing
What is the Internet of Things(IoT)?
IoT stands for the Internet of Things. It refers to the interconnection of uniquely identifiable computing like devices with the internet. IoT allows users to remotely control the devices over the network. Per McKinsey’s report, around 30 billion objects may be connected through IoT by 2020. The main reasons for IoT adoption by enterprises – Operations Optimization, Cost reduction, Improvement in efficiency and Generating revenues from IOT products and services.
Wearable gadgets, devices (E.g. Fitbit, Apple Watch), Infrastructure apps (E.g. Lightings and Traffic Controls), Home automation devices, Patient health monitoring devices are some of the examples of IoT. It’s heavily used in Healthcare, Pharma, Retail, Manufacturing, Logistics, Agriculture, Oil, Mining, Infrastructure Industries and Home/Retail building automation.
The IoT architecture consists of 4 layers – Device, Transformation, Data Processing and Application layers. The Device layer consists of the devices such as Wearables, Smart Meters, GPS, Drones, Smart Phones, Sensors, Connected Machines, and Barcodes. The Transformation Layer includes the Data Transformation and Protocol Adapters. The Data Processing Layer processes the data, Images, device management, data analytics, reporting, communication, and dashboards. The Application Layer includes Remote monitoring, Resource efficiency, Tracking, Remote visualization, Predictive analytics, and eTraceability.
Technologies Used in IoT
- RFID – Radio Frequency Code – supply chain, inventory tracking, race timing, attendee tracking, material management, libraries, kiosks
- NFC – Near Field Communications – 2-way interactions with the electronic devices, e.g. smartphones
- Z Wave – Wireless communication protocol for home automation – control lighting, security system, home cinema
- Bluetooth – Wireless technology for exchanging data – mobile phones, PC’s, gaming consoles
- WIFI – Wireless local area networking
IOT Testing Types
Testing plays an important role in IoT applications and Devices. Organizations should develop a detailed testing strategy to perform functional, security, connectivity, compatibility, performance and load, integration, regulatory, upgrade, device and acceptance testing
- Functional – Functionality, Usability
- Security – Penetration Testing, Certifications, Encryption/Decryption, Privacy
- Connectivity – Network, Size, Topology, and Environment conditions
- Compatibility – Multiple OS, Devices, Browsers, Communication modes, Forward and Backward compatibility
- Performance – Average, Peak, Double Peak and Endurance, Extreme data volume
- Integration – All the integration points, Upstream and Downstream apps
- Regulatory Testing – Regulatory/Compliance checks
- Upgrades – OTA upgrades, Device, Firmware, OS, Hardware upgrades
- Acceptance Testing – Functional, Non-Functional, User experience
IOT Testing Challenges
IoT Testing has many challenges. Real-time complexity is one of the main challenges. The IoT apps can have real-time scenarios with complex use cases and test data. The other challenge is the dynamic nature of the environment. There could be hundreds and thousands of sensors, devices, user interface from different devices and communication between these devices. The hardware and software components will be different. The complexity and accuracy may vary from one hardware to another. Finally, setting up a reliable test environment with system scalability is another challenge. In addition to these challenges, you need to ensure the security and privacy issues. How do we overcome these challenges? The below section highlights the high-level testing approach for IoT apps
IOT Testing Approach (High level)
IoT Testing Tools
There is NO single testing tool for IoT. You need to identify the right toolsets for testing the hardware, software, devices, API/Integration points, network and communication channels. You need simulators and protocol converters. There are many commercial and open source tools (HPE, IBM, Microsoft, Zephyr, REST/SOAPUI, etc) in the market. However, for IoT applications testing you need a combination of multiple toolsets which can cover the software, hardware, network, devices, etc. Wireshark is used for network protocol analysis and monitors the traffic while MQTT Spy is very similar. JTAG Dongle is another tool used for hardware testing, mainly for debugging target platform code.