Software testing is ever growing in maturity and approach in literally every possible market and scenario. New methodologies such as DevOps are evolving. Service virtualization has simplified ability to test sooner and faster among many other benefits. I know this because I was one of the first proponents of using virtual services to test software against.
My career in service virtualization started long ago, and I was on the original team that brought the first service virtualization product to the market, iTKO (now CA Service Virtualization). It was a fun experience, and my first successful start up. I learned many things personally, and many more things technically. The three main technical points I took away from service virtualization that apply to device virtualization are:
1) Software is easier.
You can control software better than you can hardware. Do you have a product that you want to make sure can do x, y, and z but not Q? Only capture the interactions of x, y, and z. Write a test for Q. You don’t have to worry about breaking hardware. You don’t have to connect anything, or run wires anywhere. With hardware, there are safety considerations and cost concerns. You might not be able to replace what you break, and you don’t have very many of them. If you have a virtual service or device, you don’t have to worry about breaking anything and you can have as many as you want. That makes software in IoT much more versatile than the fun hardware devices. You don’t have to deal with the heterogeneous IoT devices, platforms and setup costs.
2) Software is free (ish).
Its cheap. Even in a traditional software environment, testing against 300,000 servers is prohibitively expensive. With software as a service or device, you pay for the basic license, but you aren’t paying for people to build it, you don’t have to heat or cool it, store it, or run cables to it. Any kind of testing at scale has to be done with software, and its great to have a cheap and easy way to make sure that your code works against whatever you want to put it on. With good machine learning, you can learn the device transactions of a couple of devices and scale it up to many devices. By creating adaptive virtual devices (learn more on this in our whitepaper), you can now have good data to test against, mimicking thousands of real devices without having to build, purchase, maintain, or store thousands of IoT devices.
3) Software can be dumb, in a good way.
Adaptive virtual devices can be hardware and protocol agnostic. It doesn’t really matter what interactions you want to observe, or where you want to observe them. The software doesn’t care, because at the end of the day its all network transactions. Because we interact at the protocol layer, if the protocol of your device is useful to you, we can help you model it effectively without having to rely entirely on field testing or random generated data sets. Machine learning can serve as a translator between your code and your device and you can do all of the fun work.
Adapting the concepts of service virtualization for IoT means that developers can test their code against realistic data scenarios, and at scale before the device itself is ready for testing, allowing them to develop quicker with less risk. Software is more cost effective, more protocol agnostic, and much easier to incorporate into code than hardware. If you want to try it out, download our prototype and let us know what you think!