The Tester’s Kaleidoscope into The Internet Of Things

    Our tomorrow is on us today!

We are feeling the initial effects of that inter-connected world, where our watch nags us into doing things – be it waking up or exercising or going off for meetings. I used to be called a beep driven life form at one time, since my alarm on my old Casio organizer would go off, and I would get up, pick up the notes, and head for a meeting. Since then, things have seemingly got worse!

So in a lighter vein, soon, my microwave, will decide what I eat, and it has an able ally, in my refrigerator!
My wardrobe will tell me what to wear, depending on my schedule, the weather, etc
My home may decide to lock me in, if I am not out in time!
My car will decide where I need to go, depending on my appointments
My mobile will decide to book a dinner for two with my wife, since it is quite likely I have forgotten it is our anniversary
My table will decide what plates I should eat in depending on what the microwave and refrigerator have decided.
My only hope is I hope I can decide what I do in bed!

So welcome to this ubiquitous connected world, where the centre of attention is ME! However, to deliver that experience, and to test whether that experience is delivered, we will need to think about the Internet Of Things from a variety of perspectives.

The Human Experience is what will really matter.

It’s all going to be about what I experience, based on what I share (or what it gleans from what I have shared). I will be at the centre of this inter-connected world, as a user, where sensors, gadgets, gateways, clouds, applications, profilers, and big data crunchers collide.

The Human Experience, when you look at it from the Internet Of Things (or Internet Of Everything!) perspective, is being delivered as a sum of multiple layers interacting with each other :
– From the sensors
– To the gateways
– To the storage
– To the applications

The experience will need to be tested as a sum of all of the moving parts.

Let’s then look at the ways by which Human Experience can be possibly defined?
– It should simplify life and remove the tedium from the tasks I do
– It should enable me as a user by allowing me control
– It must be aware of me as a user
– It must be aware of the context in which I will be using it
All of these need to work along the different layers we stated. So as a tester, I need to be aware, not just of the experience itself, but how the underlying parts move in tandem to deliver the experience.

We will need to worry about it from a technical perspective.
At another dimension, we will need to focus on different aspects, each of which opens up a lot more possibilities
– The Structure – which represents my integrated environment and all the moving parts
– The Function – which represents what the devices, the cloud, the applications do. Examples are, the start and stop, the basic functions, the algorithms that drive the experience
– The Data – which represents the aggregation of data that the different layers will collate, its correctness, its security, etc.
– The Timing – how these different functions need to perform and any characteristics specific to the performance
– The Platform – the complex world of Operating systems, tools, devices and its associated interconnectedness
– The Usage – the patterns of usage, Using analytics to drive usage, the environment of its use, etc.)

We will need to worry about the Quality Criteria
Another dimension we would need to keep in mind, is the set of Quality Criteria that we will need to validate the entire experience against. Viz;

– Interoperability
– Connectivity
– Functionality
– Recoverability
– Reliability
– Compliance
– Security
– Installability
– And of course the User Experience in putting this all together!

Some other considerations

If, and only if, the world provided us time to do these things! Time apart, it will throw other challenges at us

– Fragmentation
o Be it the IoT platforms, the hardware involved or the embedded software, there is simply too much fragmentation. Multiple devices, multiple protocols, multiple applications, multiple ways by which data is sliced, diced and depicted

– Diversity
o With diverse platforms, gateways, plethora of devices being built everyday keeping pace with diversity is a big challenge

– Complexity
o Obviously, knowing what my refrigerator has, what my microwave wants to do, and the day of the week when I prefer my eggs poached or fried, there is an element of complexity in being context aware and context sensitive

– Rapid and shorter testing cycles
o Our customers are not going to wait long to figure out when they can launch the new hot product that integrates security devices to guest lists, or finds out that the bulk of my friends prefer the traditional south indian cuisine to the continental. They will want to get to market fast, take advantage of the first mover advantage. This, in turn means an increased pressure on us to deliver!

– Lack of standards / protocols
o Google Thread, AllJoyn / AllSeen Alliance, Intel, Qualcomm etc.

– Knowledge of tools and complex IoT ecosystem
o Oh! And did I forget to mention that we need to be aware of all of these various things at the drop of the hat (before my broom discovers that it is there and sweeps it away)

So, in summary, test & development will most often happen in quick cycles, with Continuous Integration / Continuous Development and other concepts coming into play, coupled with tools that support methodologies like behaviour driven development.

Our approach to testing will take on different ways of looking at testing, from risk driven; context driven; heuristic driven; pattern driven to change driven. And at the epicentre will be the human tester, who has to provide a wide ranging opinion on the goodness of the release to his stakeholders! Tester skills will be challenged with their abilities to play the game at multiple levels.

Slides of this article can be viewed here