Are there tools or processes that are specific to testing embedded software?
When I get asked questions like this in person, I normally respond by trying to clarify what is meant before answering the question. Many people will toss around terms without recognizing that they can easily mean different things to different people. Here, the answer depends a great deal on what specifically you mean in the realm of “embedded software.”
If you mean mobile devices, smart phones, iPhones, iPADS and the like, that is a different story. There are a fair number of emulators available for various mobile devices. If that is what you need (and mean) by embedded software, I tend to shy away as I have not tested them and prefer to not give answers based in theory and not my own experience.
Where I have dealt with embedded software, it has meant a closed hardware environment with no user interface where most people “using” the system would never know it existed. Information was passed to it, it processed this data then either updated the database, sent data to another component, sent a response to the system that sent the original data or some combination of all three.
In the systems I have worked on, results were monitored by Wireshark and similar line monitoring tools. The databases and file systems were monitored using appropriate tools for those particular platforms.
Maybe that is my main point. Your platform matters. To say, “This tool does X really well” almost certainly will need a qualifying statement. These qualifying statements usually consist of “… in this environment…”
In thinking about the other half of your question, I dug around to see what other people had encountered. What I found is that, in principle, the core concepts surrounding this testing are not radically different from other testing I have done.
There may be specifics that can vary between applications and from platform to platform. However, the core principles of testing tend to remain the same.
This was first published in May 2011