End-to-end testing strategy for embedded (IoT) systems
The IoT solutions are evolving, hence a comprehensive thought process is required to test them. Although there exists known testing practices and activities, the density and the combination of technologies are changing. In the past, embedded software engineering was positioned apart from other areas of the software development landscape, but this is no longer the case, as the entire stack of applications can often function as a single solution.
People in charge of system quality need to understand the challenges related to low-level embedded testing, as well as service components. The structure of IoT systems has evolved beyond simple client devices providing data or receiving instructions. Instead of simply performing actions based on instructions received from “the cloud,” IoT systems have powerful algorithms that make decisions based on data from within their subsystem. The idea that IoT components may be connected in complex configurations requires us to think about the exponentially expanding problem of testing IoT architectures. When you create applications that publish and/or consume services within an IoT environment, it is your responsibility to ensure that all elements of the solution stack function correctly. This usually includes low-level testing of the microcontroller layer, as well as higher-level verification of transactions between the various endpoints.
The wide array of technologies now being deployed in very basic solutions used to be characteristic of bigger, more expensive projects, such as logistic systems developed for large organizations, which often rely on homegrown solutions for testing. In the current IoT world, we need to ensure that the information is correctly exchanged and interpreted from end-to-end. Organizations should be equipped with easy-to-use and reliable testing solutions that are able to test such a broad array of technologies and help analyze testing results from different sub-components of the solution. Problem We were facing: How to ensure that the information travels correctly through the wide array of incompatible devices and protocols.
Solution: We deconstruct the system in layers for effective testing at each layer. Small automation frameworks were constructed around them. Test plans were made to involve unit testing, integration and End to End testing. the overall approach was to use the module interface definition to build the test suites and automate the execution.e have in our human brains and why it is important to avoid them.
Vipin Jain has 21 years of experience in the IT industry, during which he has acquired great knowledge in software projects, methodologies and quality. He has dedicated the last 15 years of his career to Software Quality. Currently, he works for Metacube Software as Senior Quality Manager, and is involved in establishing QCE in his company, directing delivery operations. He is an avid speaker and writer, loves to participate in conferences and has given talks nationally and internationally.
He is a member of several technical committees of various international organizations, and has participated in ATD, HUSTEF, TestingUY Uruguay, TestingUnited Prague and Vienna, TestingCup Poland, WrotQA, Poland, QA & Test, (Bilbao, Spain), ExpoQA madrid, Belgrade Testing Conference, World Testing Conference in Bangalore and other national conferences. Some of his articles have been published in Testing Planet and Testing Planet magazine, and he has also been involved in the writing of several books on software engineering and web technologies.