Internet of things (IoT) has become one of the most frequently used terms in the IT industry today; but what does IoT really mean? The answer to this question is not set in stone and everybody has a different view. Personally, I define the term IoT as smart objects that can interact and communicate with each other via the internet. The object here can range from the thermostat in our houses to a bedroom lamp, from a car to a mobile phone and even the egg tray in our refrigerators. Any physical object that you come across in your day to day life can be injected with intelligence and be made part of a smart, self-aware eco system by connecting it to the internet.
So what is IoT capable of? We can be extremely imaginative since the possibilities are limitless. On the flipside, implementation does come at a high cost and a ROI is never promised.
Why Quality Assurance (QA) is critical for IoT based systems?
In an IoT based system, any small malfunction can have unfavorable or even disastrous outcomes such as security lapses, physical accidents, unexpected outcomes and non-optimal use of resources. And therefore, it is very critical to test for service availability under various conditions as well for optimal performance. And to do, enterprises should focus on the essential components of a QA strategy for an IoT based system.
The simplest architecture for any IoT based system will have the following functionalities:
- Data Collection & Monitoring
- Data Processing
- Feedback Mechanism
A Quality Engineering (QE) team will be required to certify the system against requirements which includes both flavors, that is, functional as well as non-functional specifications. Along with these aspects, IoT Assurance requires certain other factors to be considered that are usually absent from the conventional Application Testing agenda:
- Data: Volume, frequency of collection and monitoring
- Environment in which the system is deployed: Monitoring of factors such as temperature, humidity, elevation, pressure etc.
- Velocity & Location
- Interfaces & Interoperability - The objects might interact with several other objects via a multitude of interfaces, as well as systems
- Backend system simulation: This is done to control the object behavior
- Reliability, Stability & Accuracy
- Calibration of objects: required before QA is carried out for accurate results
- Interruptions and Disruptions
- Network conditions: bandwidth etc. play an important role
What are the best practices for executing this strategy effectively?
- Setting up a dedicated lab: should have capabilities to measure the various vitals mentioned above.
- Skillset- IoT assurance requires skills different from that of a typical application/product tester. Quality Engineers might have to develop stubs and simulators to test various features and system behaviors as testing on real systems might not be feasible.
- Business Alignment: A thorough understanding of Business Objectives and associated use cases are critical in developing the optimal Test Suite.
- Continuous Integration/Continuous Deployment: IoT based solutions will require continuous Testing since system behavior can continuously vary, from time to time, based on external factors as well as internal; the state of other components that constitute the system.
- Automation: Automation will have a significant play in IoT Assurance. Since the number of test cases and data sets are much higher compared to typical software functionality, Automation is a must for any IoT Assurance project as it ensures better Test Coverage and faster release cycles. Quality Engineers will have to write "software" and not just "scripts" in IoT Assurance. This is due to the fact that most interactions with the backend systems will have to be simulated during QA. Reusable Assurance Simulators come in handy in these cases.