Rarely, we think about what happens when we swipe a credit card? What happens when we tell our favorite assistant to turn down the room temperature? How do we obtain results of our blood test? Does my low fat yogurt really have 0.2% of fat?
Today, a general image about the software is all about the ‘apps’ on a mobile phone, social network apps, cloud storage for our images, web browsers able to access all mighty Internet, and so on. So, if everything is online or in the cloud, why should we pay any attention to the hardware? And yet, in order to find out all the important answers for the questions above, we need to interact with some sort of hardware.
And why testing of this kind of software is different?
Here, testers swiftly learn that lines between testing the software, testing the hardware and interactions between those are blurred. Often, the only right way to test the software is to test it together with the hardware itself and communication between them. But, what to do when hardware is not available or incomplete? Or hardware development is late? Or we do not have access to third party systems? To add even more to that, various compatibility requirements present another challenge requiring our attention.
Embracing the fact how challenging these environments tend to be has helped me learn about approaches for making development process more productive, making more creative environment and deliver more reliable products to market. Let’s learn about main challenges when testing (with) hardware! Let’s learn about concepts for overcoming them! Concepts such as testability, (testing) logs, emulators, compatibility, portability, etc. Applying those concepts correctly will help you succeed and thrive as a tester in this context!