Load Testing For The Internet Of Things
Load Testing for Internet of Things
CES, the global consumer electronics and technology trade show that takes place every January in Las Vegas, Nevada, started this week. This is the place where companies of all sizes get to show off their shiny new toys and wow us with flashy baubles. But since we are not impressed with shiny and flashy we look beyond the lights to seek how these devices will impact our personal and professional lives. If there was one theme at this year’s CES it would undoubtedly be the Internet of Things (IoT). And, it seems, each year the noise around this term gets a little louder.
Do you remember watching the Jetson’s cartoon? Every household appliance was “smart” – connected to the network and automating everyday tasks to make life easier. However, IoT devices will not only be in homes, but will be embedded in every industry – transportation, energy, manufacturing, medical, etc. It’s estimated that by this year (2020) there will be billions of connected IoT devices – all exchanging and processing information. These devices will be logging data, alerting and making intelligent decisions – handling both services as well as its’ own maintenance by sensing situations which require remote control action. What an easy life!
At CES we have seen some amazing things along the years:
– LG showcase levitating speakers (yep levitating!) that automatically charge wirelessly when they detect that battery life is getting low
– Mayfield Robotics introduced Kuri a smart home robot. While Kuri is not yet Rosi from the Jetson’s, he can understand “if this, then that” instructions. Every year, we get a little bit closer to a virtual assistant doing all our chores
– Moen released a smart shower where you can control the water temperature and even automatically shut off the water after a specified time. All from a mobile app.
– The Hi-Mirror Plus is a smart mirror that helps assess skin conditions and even suggests makeup based on skin conditions
The IoT possibilities are limitless – but not the scalability of these IoT deployments. That fact creates a HUGE opportunity for the field of load and performance testing.
Companies that are rolling out these IoT devices are selecting light and fast network protocols to communicate with the backend deployments. Similar to web or native mobile applications, the load test requirements will be defined by the technologies, protocols, and behaviors. As always, it is not the load tool that ensures world-class performance. It’s the performance engineers’ assessment, implementation, and analysis skills.
Establishing IoT Load Project Requirements
When approaching an IoT load-testing project, it is important to select a tool that can realistically represent the IoT device. So the biggest mindset shift for IoT load projects is that load generation which typically consists of virtual users are now physical devices. Next, we need to understand the end-to-end network communication and messaging systems. These could be API calls over REST or websocket messages. Monitoring is key for methodical performance engineering. It is the best way to isolate resource bottlenecks. You need to select a tool that allows you to monitor, in real time, all of your servers.
The most important device characteristic is the behavior of the device. For example, does the device initially boot up and stay connected continuously? Do messages poll on a certain interval? Or is communication only reactive, due to sensors of certain situations? Or is there another unique behavior that needs to be emulated?
Generating load to simulate hundreds, thousands, perhaps millions of devices from around the world is much like virtual user testing. However, instead of creating virtual people, you create virtual devices. It is imperative that the system under test view these virtual devices as real. The scalability of the deployment can be limited by bandwidth, queuing messaging mechanisms, throughput of data processing, etc. Every device establishes at least one unique connection and if you envision millions of devices, then squeezing every drop of capacity from the load generator machines is going to be important. Also, varying the network conditions of the load generators will simulate latency and packet loss during the execution of load tests, giving you a more realistic test.
In short, you should test your new shiny bauble until it quivers and begs for mercy. You need to find the breaking point or your customers will. And they tend to be much less forgiving than a robot that you stress tested and made cry.
Breaking apps and making them cry is our specialty. We partner with companies all over the world to help them release and maintain highly performing applications of all kinds.