I regularly work with hardware that interacts with the software (not off the shelf PC hardware, custom hardware device). Over the years the hardware I work with has gotten more complex, which also means the firmware has gotten bigger and more complex.

What’s interesting is that some people view firmware and software as unrelated and dissimilar especially from a testing perspective; not true.  As an electronics hobbyist and software tester I can tell that firmware is software, and software is firmware; they are one in the same. Sure software can be millions of lines of code but when you consider the size of a microprocessor, thousands of lines equals millions.  Further gone are the days of assembly language  programming, most hardware developers use C and some are starting to use C# (not sure how popular this is). So the PC and custom hardware worlds are starting to collide.

From a testing perspective I’ve found that any test that can be performed on the PC side can be performed either directly or through light adaptation on the firmware side. A good example is boundary and race conditions, which exist in firmware also and can create some very interesting bugs (but that’s for another day). Honestly I can’t think of much that is different between firmware and software from a tester perspective. To this end I think its unfair to assume that since its “just firmware” it doesn’t need the same level of attention or somehow requires a different skill set to test. In fact I think that many of the lessons we have learned on the PC side could be of great benefit to the firmware side.

I think the firmware and software testing worlds have collided, and we need to embrace it as testers. So please give firmware the testing attention it deserves, after all its software too.