Testing Implementations
Wednesday, February 28th, 2007A standard is an agreement among a group regarding how something should be done. Generally the purpose of the standard is so that everyone is doing things the same way, with the goal of promoting interoperability. An implementation of the standard, perhaps a device of some sort, must conform to the standard if it is to interoperate with other implementations. For example, a fax machine cannot talk with another fax machine unless they are using the same language, and an electrical plug cannot be inserted into a wall socket unless they are using the same specification for the size and shape of the interface elements.
How do we know whether a product correctly and completely implements the standard? With regards to the examples above, the most obvious way is to see if the plug fits into the socket, or if one fax machine will talk to another. This is what’s called Interoperability Testing, i.e. testing whether the implementation will interoperate with other implementations that are using the same standard.
Another method of verifying that a product correctly and completely implements the standards is Conformance Testing, where the product is tested against a list of items to see whether it performs as the standard specifies. Again using the examples above, does the fax machine send a certain signal to establish contact, and does it respond with another certain signal to acknowledge a transmission? Does the electrical plug have the proper size, shape, and spacing of male elements?
There are pros and cons of each of these types of testing. Interoperability testing is usually quite simple but wouldn’t necessarily test the product against the entire standard. It may only test the most commonly used but simplest parts of the standard. For example, it doesn’t take much effort to plug two fax machines into a phone line and transmit a document, but doing such a simple test doesn’t ensure that the device is capable of handling all possible error conditions or that it can be used across all possible international phone systems. Interoperability tests should be designed to exercise as many of the capabilities of the implementation as possible.
Conformance testing requires considerably more effort, both in designing and conducting the test. Even a simple standard could have hundreds of test cases. Certainly the conformance test for the electrical plug used in the example above could be quite simple, but the test for the fax machine, with the various protocols and error conditions that must be supported, could be quite extensive.
Given the advantages and disadvantages with both interoperability test and conformance testing it may be wise to do both, as these two types of tests are very complimentary with each other.
How are the tests created? It is usually up to the members of the technical committee, the developers of the specification who are the real experts on the topic, to specify tests as part of or to supplement the specification. Taking on this additional work will aid greatly in promoting the adoption of the standard. In some cases a third party testing expert will develop tests, either independently or in cooperation with the technical committee. The cooperative method is probably the best way to proceed with this, as the members of the technical committee are the domain experts, and the third party test developers are the experts on how to develop and conduct tests.
Finally the question remains as to who will conduct the test, track and judge the results, and provide a Certification of Compliance. In many cases it will be up to the implementer or manufacturer to self-certify; the manufacturer certifies that the product conforms to the standard but there has been no verification of these results from an independent third party. Sometimes the standards body who developed the specification will provide testing, but generally organizations such as these tend to shy away from providing this service. Despite the advantages with regards to promoting adoption of the specification and the possibility for establishing branding around the standard, there are legal liabilities associated with providing certifications.
The highest level of testing is usually provided by independent third party labs who specialize in this service; they have the most experience with developing and conducting tests, and are also set up to assume the legal liability associated with certifying compliance with a specification.