OK, so Internet of Things or the Internet of Everything (IoT) is the new buzz. It is the next logic step in digital evolution, connecting the physical world with the digital world.
Needless to say, IoT is not just about iOS and Android or even the wearable devices(mobile ecosystem). It includes your twitter feeds, facebook updates, mobile app usage, your cars, light bulbs, air conditioning systems and even you coffee machines! With such a complex mix of mobile, web and embedded systems, thinking in terms of just the GUI test automation would not be of much help. In this article, I will give my perspective on test automation for the IoT and what areas to concentrate on.
IoT does not have a standardized framework and protocols yet and is still evolving. I am not sure if there would be a standardization any time soon, given the varied real world application of communication between the physical to the digital. However, it is definitely not limited to iOS and Android(or the mobile operating systems). We should also consider various sensors connecting via websockets, RESTful, bluetooth, zigbee, NFC and other communication technologies that are coming up. Platforms like Arduino connect the sensors to your mobile operating systems and let you program and communicate using APIs(with languages like C#)
But working with such a wide variety of sensors, devices, platforms and protocols, it is important for an automation engineer to understand:
- the available APIs to connect and communicate with the systems
- programming languages that provide the API bindings
- types of data to be used for different sets of systems(like the sensors use byte codes)
- proxy servers, wire servers and how to create and use them
While setting up the test environments, it is also important to consider the different virtualization/simulation platforms available for the systems under test(simulators for the sensors for example) and how to scale your scripts to test in actual conditions.
In my experience, I had the opportunity to automate various types of applications which combined the physical and digital world(well before the IoT was a concept/buzzword), some of them like:
- Identity management system where I had automated the tests to check the behavior of the system using physical cards(connected to the PC via usb and a card reader), and this was extended to check the performance utilizing simulator with a C++ API(which was later extended to Java API)
- A treadmill with the central console based on Android OS and the physical buttons(such as increasing and decreasing speed) using websocket communication.
- A mobile workforce management system running on rugged real devices which operated with protocols such as zigbee
- A arduino based access management system with APIs to connect and control the behavior of the system
- A payment system with real card reading machines connected and interacted using Ruby based APIs
As you can see, each type of application had a set of APIs and communication protocols that were necessary to automate the system under test. Simulators were useful to stress test the system in some cases.
Understanding of programming languages such as C, C++, Java, Python and things like JSON, RESTful, Bluetooth, NFC, websockets will help you in get started and in defining your approach to test automation/performance testing of the IoT