Applying DevOps to Improve IoT Testing
Applying DevOps to Improve IoT Testing
IoT testing comes with its own challenges, but there are important lessons DevOps can lend to IoT solutions. Let's see how these two concepts meet.
Join the DZone community and get the full member experience.Join For Free
With the power of the connected world comes the complexity of realizing real-life conditions and ensuring the delivery of IoT services and functionality over the heterogeneous environment. To make sure the connected devices and objects perform as per their specifications and interoperate with the physical world to make data and services available on time, IoT testing is a must for every enterprise.
According to a research from Markets and Markets, the IoT testing market size is estimated to reach USD 1,378.5 Million by 2021, at a Compound Annual Growth Rate (CAGR) of 35.4%. Considering these stats, there cannot be any other way to support the testing of this kind of infrastructure which comprises of millions of devices, sensors, gateways, routers, cloud applications, servers, etc., except for adopting open source tools and technologies.
Open source tools and technologies have become the norm in IoT testing, as they fuel rapid integration and testing of IoT platforms with other vendors. It is interesting to note that open source adoption lies at the heart of DevOps given that the majority of DevOps tools and technologies in the market are open source, which reduces the total cost of ownership and testing infrastructure.
How DevOps’s Open Source Ecosystem Helps in IoT Testing
While shift left testing, risk-based testing, and software developer in test (SDET) remain some of the most sought-after IoT testing strategies, DevOps is considered the most effective strategy when it comes to generating the best coverage and test efficiency metrics along with tangible cost savings owing to its support of open source tools and technologies. Moreover, DevOps or intelligent automation is being adopted by organizations to manage IoT at scale and achieve rapid innovation. DevOps also addresses the needs of IoT test automation, covering build, deployment, testing, network, and infrastructure automation.
DevOps can be applied to test multiple IoT product pipelines and application endpoints of an IoT platform. While testing a device-to-cloud use case, the individual functionality of each component in the IoT platform, including sensors, network protocols, cloud, web, mobile, or APIs also needs to be tested. This is where different tools and technologies of DevOps can help.
Role of DevOps Tools and Technologies in IoT Testing and Automation Scenarios
Let us understand how common tools and technologies of DevOps aid in IoT testing:
- UI, web, and mobile functional test automation can be done with DevOps tools like Robotium, Selenium, Appium etc., with multiple variants and operating systems.
- JMeter can be used for functional API automation.
- Python is the used widely in the industry today for network automation. Interoperability with multiple protocols like Zigbee, MQTT, CoAP can be automated using Python or Ruby scripts. Sensor, service and API virtualization with Python can be used to simulate end to end scenarios for load and performance testing of IoT applications.
- Test environment automation using container technology like Docker or virtualization tools such as Vagrant helps in four to six times more server application instances than traditional virtual machines, saving huge infrastructure costs.
- Infrastructure as Code as famously said in DevOps, aids in test environment automation through configuration and deployment automation. DevOps configuration and deployment tools like Ansible, Chef, Puppet etc. can be used for this purpose.
- Continuous integration using DevOps tools like Jenkins and Bamboo ensures that the latest piece of code is being tested and in turn promote detecting defects early in the testing cycle. The CI/CD (continuous integration and continuous delivery) pipeline built with these DevOps tools also aid in building the base for continuous testing of microservices through contract and integration testing. This enables faster provisioning and deployment of an IoT test environment, which means faster recovery from test failures, directly improving test cycle time.
DevOps for IoT Regression Testing
Regression testing is one of the most cost-accumulating activities, as testing needs to be performed iteratively with every newly added feature. Setting up an automated workflow to execute end-to-end sensor-to-cloud regression tests for IoT using the above DevOps tools saves testing efforts and the cost of rework. Hence incorporating DevOps in IoT testing strategy provides better coverage in terms of functional testing, compatibility testing, load testing, performance testing, and regression testing. Once a DevOps-led IoT test automation engine is built, it can also be easily scaled by applying the same test strategy across multiple verticals. DevOps pipelines can be integrated with continuous monitoring tools like NewRelic, AppDynamics, or Pagerduty for incident management. This leads to monitoring the live application performance, directly improving the uptime and user experience.
As we transition from a product economy to a service economy, DevOps can help achieve an organization’s IoT strategy goals like gaining competitive advantage through rapid release of new features and providing a better customer experience through workflow automation that also improves uptime and reduce operational costs.
Opinions expressed by DZone contributors are their own.