A comprehensive QA strategy is essential to cover the dimensions of IoT testing. The strategy should include the types of testing, test lab setup, testing tools and simulators/emulators that are to be deployed.
Considering the practical hiccups in generating big data from the thing (device) in a testing environment, it is crucial to evaluate data simulation and virtualization methods.
Stubs can be considered as an option during early stages, whereas, data recorders can assist as an alternative at the later stages.
Beyond test planning and data simulation, metrics-driven exhaustive test execution is performed to achieve a stable system.
QA team can split IoT test area into two layers i.e. device interaction layer and user interaction layer. However, QA has to be performed across both the layers. It is actually easier to identify techniques and the types of testing that can be adapted to each layer to enhance the QA strategy.
The device interaction layer
This layer acts as the connectivity between the software and the hardware components of a real-time ‘IoT environment interact’.
A typical example will be a Bluetooth device transmitting real-time data to a mobile device application. Sometimes, a lot of interaction testing will be done on the functional side of QA.
However, other types of testing could also be required. IoT testing will cover the spectrum of other required elements listed below, in addition to typical software testing:
Conformance with standards
These are mostly device performance traits that are precise to the devices and sensors. These attributes must be validated against the standards of the device and its communications protocol.
Hardware vendors perform most of these tests, but there could be a certain domain or use-case specific requirements such as the use of such devices in an environment that was not tested.
Interoperability: The ability of different devices to support the required functionality among themselves, other external devices and implementations.
Security: With billions of sensors in the making, it’s crucial to tackle data privacy and the security concerns across the IoT ecosystem.
The following are the different types of security testing requirements:
- Identity and authentication
- Data protection
- Data encryption
- Storage data security in local
- Remote clouds
The user interaction layer:
This layer is the touch point between the thing (IoT Device) and the user. The success of the overall system depends on the seamless user experience.
Key testing areas in this layer include:
Network capability and device level tests: The specific aspects of network communication such as connectivity are validated by simulating different network modes in addition to device-level validation such as energy consumption tests, etc.
Usability and user experience: Usability and user experience are important in terms of the real-time usability; it involves both human and machine interaction and also the real-time experience that the IoT system provides.
For example, contactless payments compared with a physical card-based payment.
The IoT services and back-end IoT environment:
While integration testing of the interfaces is a key, there is a complex data layer that comes into play.
For example, a classic IoT system boxes a complex analytical engine to ensure an exceptional user experience.
This creates a QA environment to assist validation of such interface by addressing the growing data volume, velocity, and variety challenges.
The front-end validation environment can be done by assembling data recorders and simulators.
The service and data layer validations will involve complex simulation such as the generation of millions of sensor hits, machine-learning algorithms and the time-boxed traffic. There are a few methods to create such an ecosystem;
For example, leveraging sandboxes of development services or creating mock environments using virtualization tools.
However, numerous implementation synergies are required to establish a working set of environments for through services and back-end validation platform.