Although “things” is the term used in the Internet of things (IoT), the reality is that consumers and enterprises aren’t interested in just things or devices. The real promise of IoT is in the data these devices produce and the actions they take. Even the smallest sensor is providing a useful service, and although embedded device developers tend not to think in terms of services, it’s important to change that mindset in order to meet the functional, quality, performance, and security requirements demanded in the fully-connected world of IoT.
Despite the name that has stuck in IoT, the “things” themselves are not the star of the show. More key to IoT are the information gathering, control of key infrastructure, and the sensing of the real world that these devices provide.
Consumers aren’t interested in just the temperature of one room in their house or the video feed from a single camera. They are interested in the next level — making sure their security system detects movement all around the house or that their air conditioning is maintaining a comfortable temperature. Enterprises aren’t interested in the output of a single logic controller in a factory but rather production throughput of an assembly line. This is an important change in perspective because it forces device developers to better appreciate the context of their product and its use cases.
Individual embedded devices may not be considered part of a service; however, connectivity into larger systems means they should be. For example, in an automobile, the role of the engine control unit (ECU) alone is to ensure proper combustion and emissions in the engine, but the car is tracking fuel economy, using the ECU, and reporting it to a central server over a wireless connection. This mileage data is then being used to plan routes and estimate operating costs. All of a sudden, the ECU is a critical leaf node in a business decision making process.
Adopting this perspective widens the context of an individual device and its scope of operation, affecting the approach of overall system design, as we move from device-centric thinking to service-centric:
Once adopting a service-centric approach, it makes sense that design, implementation, and testing follow suit. Realizing that the service provides the business value, it becomes critical to ensure that devices are meeting requirements in this respect. Obviously, testing functional operation at unit, subsystem, and system level are still important, but broadening the scope of testing provides immediate benefits.
Instead of viewing system quality in terms of meeting individual device requirements, the scope is broadened to consider the quality of the services provided. In the HVAC example, a new temperature sensor might be lighter, lower cost, with long battery life, and have excellent wireless range. But how well it works with the building-wide control system is just as important as all of the new features.
Testing at the service level ensures non-functional requirements are met. For example, performance and reliability are difficult to assess at the device level or during software unit testing. Service-based testing can simulate the operational environment of a device to provide realistic loads. In the HVAC example, the new temperature sensor can be tested with varying request rates to see if it meets performance requirements.
Cyber attacks against IoT systems will originate from the network itself, by attacking the exposed APIs. Service-based testing can create simulated environments for robust security testing, either through fuzzing (random and erroneous data inputs) or denial-of-service attacks. A new temperature sensor in the HVAC example might operate correctly with expected requests but crash when overloaded. An attacker might be able to exploit this to overload the system and cause an outage.
Realizing that IoT is really about the services, results in better, differentiated embedded devices in the new connected world they operate in. Manufacturers that focus on the services are less likely to be interchanged with equivalent hardware. In order to achieve the required performance, quality of service, and security that IoT systems require, service-based testing is essential.
Parasoft’s industry-leading automated software testing tools support the entire software development process, from when the developer writes the first line of code all the way through unit and functional testing, to performance and security testing, leveraging simulated test environments along the way.