Promises and Challenges of IoT

Internet of things (IoT) is a phrase which is commonly used to describe a system where physical world is connected to Internet through ubiquitous sensors that communicate with each other without human interaction. Each sensor and control point generates data which can be collected, analyzed and acted-on in the real time. IoT has the potential to alter the way companies do their business by transforming the way they operate, making them more efficient and profitable. The sheer breadth of IoT knows no bounds, and is having a huge impact in enterprise, as well as consumer applications, transforming the way we live our lives. A practical example of Enterprise application is the inventory management on the production floor to save money, time and manpower. And few examples of consumer applications are health monitoring systems, home automation, beacons, wearable devices etc.

IoT Numbers
The penetration for smart devices is sky-rocketing, creating a perfect base for exponential growth for the IoT. It is estimated that by 2020, there will be almost 26 billion interconnected devices (some even say it could be more than 100 billion). As per latest statistics, IoT offer $8 trillion worth of economic opportunity. According to CBInsight, IoT companies attracted over $1billion in 2013 in venture capital, which is 11% increase from the previous year. Purchase of Nest Labs by Google and Body Media by Jawbone has further accelerated the IoT buzz. However, it is not just hype, and the connections are already soaring, growing at the rate of 19% compounded annual growth for the past three years.

Some of the key technologies that are emerging for IOT are lightweight protocols so that devices can communicate and work together, cybersecurity, extensible and unique identifiers for billions for devices that involve remote sensing, intelligent monitoring, advanced analytics and real-time data processing. With the ease of connectivity through broadband internet, more and more devices with in built sensors, Bluetooth, IR and Wi-Fi capabilities are able to connect with each other with lower connecting cost.

IoT in Real Life
So what is the practical aspect of IoT, why we should bother about so many connected devices talking with each other? On the personal level, imagine a world where your car, house keys, television, alarm clock, microwave etc. are all interconnected, giving notifications and feedback when required, executing remote instructions, and improving the overall efficiency of your life. IoT can be associated with kitchen and home appliances, safety and security monitoring devices, lighting and heating products, health and fitness products, waste management systems, intelligent traffic management system and so on. Doctors can immediately analyze the heartbeat data sent from the intelligent devices to diagnose and treat. Real-time traffic data can be sent to the consumer’s GPS. Intelligent devices can quickly make changes in the production system based on the preferences of the consumers, producing a broader mix of differentiated products all across the globe and just in time. From the global perspective, IoT can help us understand how we work and live, and improve the processes, and reduce waste.

There are currently more than a billion Machine-to-Machine (M2M) devices at work in smart meters, sensors, mobile healthcare assets, industrial control systems, smart building, video surveillance, telematics solutions and much more. These are definitely a lot of connections, creating a massive IoT network between people-people, things-things and people-things. Several open standard projects are supported by free open source software and hence this combination works quite well. Giant technologies can further build on the open projects, encouraging widespread use and adaptation.

IoT has potential to impact the way we live our lives, however it has lots of complexities and challenges associated with it. Security is one of the most talked about concerns of IoT, mainly due to billions of connected devices. Another important concern could be the massive amount of data that will be produced. Companies will have to find a way to store, analyze, track and interpret vast amounts of data in real time. Some other challenges are connectivity, security, power management, complexity, rapid evaluation without common standards, quality of services, lack of shared infrastructure among players in the IoT eco systems, fragmented M2M and system vendor landscape, and interoperability and easy of deployment. Extensive number of systems are required to manage all the data, enforce access control and enable all the interconnected devices to communicate with each other. This issue can be addressed by using big data analytics which is a process of collecting, organizing and analyzing large amount of data to extract useful information, get fresh insight into data, analyze patterns and identify data which is important in business decision making.

Existing Internet and software methods are modular, highly distributed and loosely coupled. For Internet of Things, we need an open system which is easy to join and transparent to review, open source for quick iterations and easy contributions for rapid development, and stringent IPR rules, neutral government and balanced participation.

IoT offers endless connections and opportunities to take places, however, as of today, it is not possible to comprehend and understand its total impact. There must also be a strong foundation to address the growth challenges in terms of talent gaps, open standards, technology complexities and data policies. When evaluating an IoT solution, the businesses needs to consider four major enabling technologies- Cloud computing, wireless connectivity, Big Data and IT security. For now, we can just educate ourselves, and find innovative ways to reduce loss, waste and cost with the help of IoT.

Improving Testing Effectiveness

Organisations spend significant money, time and effort in testing their applications so that they can get a good return on their investment, and earn goodwill of the customer by providing them a product that offers a flawless experience. This experience can only be assured if the product has been designed well that matches with the customer’s expectations and requirements, and has been tested comprehensively, covering most real-life scenarios.

If the product is released by the company and any bugs are reported by the end users, there is usually a feeling of disappointment, and testing team feels the pressure as they now need to answer several questions from the management regarding their testing procedures and methods. This happens mainly because when the requirements are given to the testing team, the team members tend to intuitively think about the features and start writing their own perception of the functionality and features as test cases. Hence, test cases are entirely based on the level of knowledge and thinking capacity of the testing team, or a testing individual. The reviewers have also limited scope to correct these test cases, or add something substantial to them. The derivative is quite limited, with the possibility that the testing team might have missed or overlooked some important aspects of usability or behavioural issues.

At times, this intuitive or exploratory testing can be quite effective in bringing out quality bugs; however, it is beneficial only when there is expertise in technology, domain and other factors. Additionally, exploratory tests are not documented for regression and the bugs can get re-introduced in the later stages without getting noticed. Hence, it is essential to follow a systematic testing approach to have efficient and effective test cases that can be executed regressively.

This improvement to testing processes starts by providing a complete understanding of the project to each stakeholder. As a part of testing strategy, the best practice is to form a team, comprising of Subject Matter Expert, Product Architect, Senior Developers, Product Manager, Developers, and Automation and Manual Testers for the given product. When all these people work together as a team, more perceptions come out based on the expertise of each, and these perceptions can be documented, that can be used as a reference by the Requirement managers to write the functional specifications, by developers to design and develop the features and by testers to make their test cases.

The quality of testing to a large extent depends on the quality of these test cases that are documented and tested automatically or manually. Although there is not a linear relationship between the efficiency of tests and number of bugs found, however, by adopting the well-defined and documented processes and procedures, the developers become more efficient in reducing the number of bugs, and testing teams can become more effective in finding the bugs at the right stage of development cycle. However, documenting each minor detail can be quite inefficient, and pounding the same path with automation or regression scripts may only give little of any new information. Hence, add deterministic techniques to the testing, and make a practice to communicate and collaborate early. This gives the chance to find most critical bugs. Output of the session based test management of the exploratory tests can be used for regression, and if any bugs are found, they can be turned into automated tests.

To improve testing processes, the testers must also be involved in all the discussions, conversations and meetings regarding the project. QA must be made a part of the software development life cycle, and there should be continuous improvement in the testing processes and testing skills. The testers must be flexible and receptive to the change, and there should be willingness to try new methods and latest cutting edge technologies of testing.

The testing quality definitely depends on who looks, and when and where. It is impossible to have 100% bug free application, however involving several teams in user cases/acceptant tests design or review helps QA to have more comprehensive coverage. This does not mean that everyone should leave their work and get involved in testing. However, some key people can add value to the tests, and participation from the experts reduces lots of rework and penalties that companies have to pay at the cost of goodwill.