Like “the cloud” before it, the Internet of Things (IoT) is fast becoming one of the hottest new trends. Like it or not, there’s a good chance you’ll soon be developing IoT apps.
By extension, you’ll also probably have to develop a plan for testing IoT apps. That may sound intimidating if you’ve never done IoT tests before.
But it doesn’t have to be. Here’s an overview of the special considerations to bear in mind when planning for the IoT-centric future and the software tests that will come with it.
First, though, let’s be clear about what we mean by IoT.
To understand IoT testing, you have to understand that there is no single IoT. Instead, there are many different kinds of IoT devices, environments and apps.
Software running on an IoT-enabled traffic light will require very different sorts of tests from an IoT app on your smartwatch.
That means that the IoT testing landscape will be much more diverse than what we’re used to today, and so will the toolset that will have to accompany it.
Yet, despite the diversity of the IoT landscape, IoT environments in general are characterized by certain features that affect testing. They include:
Lack of constant connectivity. The IoT is a network of devices, but some of them may not always be online. Devices will power on and off, which means they join and leave the network. Mobile devices can go in and out of range.
Lack of power. IoT devices like sensors may not have a strong or always-on power source.
Lack of “smarts.” While “smart” devices may be the first things that come to mind when you think of IoT, in reality, many of the devices on the IoT are not very smart. Many may have very limited computing power and memory.
These three characteristics set IoT devices (and the apps that run on them) apart from most traditional environments.
As a result, IoT testing routines need to take these additional factors into account. In order to ensure that an app works as expected across a range of IoT environments, it’s not enough to only test how the app interacts with the software features of those environments.
Instead, you also have to find ways to test for variables like network connectivity and power. One way to build these factors into a testing environment is to use a tool like Vaurien, which simulates unreliable infrastructure for testing purposes.
Selenium also provides a way to control networking variables via the NetworkConnection interface, although it was not designed with IoT in mind.
As for testing for IoT devices with low resource profiles, that’s not fundamentally different than the mobile device testing that you’re probably already familiar with. But because IoT device profiles are likely to be even more diverse than those for mobile devices, and they’re also likely to vary more widely in terms of the resources available, simulated devices will be key for effective IoT testing.
Real-device testing will still have its role in IoT environments, of course. But don’t expect to be able to count on it as much as you can when doing mobile testing.
For now, software developed specifically for IoT testing remains limited. Most existing testing tools were created long before IoT became a part of the mainstream conversation.
The good news for developers interested in IoT, however, is that this trend will likely change as IoT moves from buzzword to actual practice.
Keep in mind that developers didn’t have good tools for testing cloud apps circa 2006, either. But they can now take that for granted.
It’s a safe bet that developers will be able to do the same for IoT testing by, say, 2020, the year in which the number of IoT devices will hit 50 billion, if Cisco has it right.
Chris Tozzi has worked as a journalist and Linux systems administrator. He has particular interests in open source, Agile infrastructure and networking. He is Senior Editor of content and a DevOps Analyst at Fixate IO.