Oftentimes, in embedded systems, there are multiple ways to access, configure, and manage the system. Typically, there would be a command line interface (CLI), and in addition there would be an access through a protocol that operates on a networking stack. The CLI access would be provided through a local RS232, as well as Telnet, FTP, and TFTP. The protocol access could be proprietary, or a standards protocol like SNMP. These involves data storage and thus requires Database Testing.
The interesting thing with multiple channels of access is verifying that there is data consistency. For example, if a table object is modified through SNMP, and if the same object is read through CLI, the CLI should show the updated value, and vice versa. Also, race conditions should be avoided if two sessions are trying to write to the same resource. The testing associated with these above scenarios is pretty interesting, and many times, defects occur because some internal data structure is not properly updated, or objects are not properly instantiated/initialized while giving access.
Libraries of test cases could be prepared to test across multiple functionalities in the embedded systems for this kind of functionality, because the stuff that we test is pretty much the same, except the objects that are tested. When it comes to differences in the objects to be tested, it is mostly to do with the functionality of the object, and thus the tester has to have detailed knowledge of what is being implemented, and how to thoroughly tested the functionality. Often, this requires a separate lab setup that is similar to testing the functionality itself. It’s challenging when large scale setups are required that consists of hundreds of thousands of devices, and customer’s real-time setups are involved.
One thing I can happy about all this is that I thoroughly enjoyed the testing. Because, it involved learning the technology, protocols, setting up the labs, studying the equipment, understanding the data flows, and the nitty-gritty details of the functionalities of the objects under test.
Contact me if you would like strategies for protocol testing, database testing, or Software Testing in general, for your company.