Radio-frequency identifcation (RFID) is the use of radio waves to identify and track a certain object, which can be an item in a supermarket or a warehouse, a person, an animal, and so on. A typical RFID application involves tags which are attached to objects and readers which receive signals from tags to identify objects.
Compared with traditional barcode systems, RFID allows tags to be read outside the line of sight of the reader, and the distance between tag and reader can be several meters. Further- more, the integrated circuit in an RFID tag can store and process much more information than a barcode can.
However, the exploration process of deploying such a system can be overly tedious, and the results of the deployment are often too random to be reliably general- ized. RFID deployments typically suffer from problems such as:
1) Receiving too little energy from tags
2) Being too vulnerable to environmental factors
3) Cross coupling of neighboring tags (i.e., the couplingof a signal from one tag to another)
4) Requiring too much tuning
Thus, when deploying an RFID system, we need to test it to ensure its reliability and quality. The testing process involves a series of activities to evaluate and determine whether the system meets its required results under controlled conditions.
For example, under a certain hardware and software configuration, a user of a system in an interface performs some operations and obtains particular results. We need to ensure that results meet our requirements. The testing techniques mainly involve executing a program in order to find bugs. Such testing can be very time-consuming or even impossible, since we may need to enumerate all possible test cases.
Therefore, our solution focuses on two time-saving points. One is to use mock objects instead of real hardware components in the test. Mock objects are simulated objects that mimic the behavior of real objects in controlled ways. By applying simulated objects, real hardware operations are avoided in the test which saves time. We argue that the mock objects we use to simulate real hardware behaviors are effective and effient.
It is also important to choose representative test cases instead of all enumerated test cases. Representative test cases are a relatively small number of test cases chosen from the enumerated test cases which can detect a majority of bugs in the system compared with the enumerated test cases. We use a clustering method to achieve such purpose. In practice, the well-known “k-means” clustering algorithm is used.
To evaluate our solution’s effectiveness and efficiency, we adopt mutation testing in our experiments. Our experimental results show that although only a few representative test cases are adopted in the test, we still achieve relative high bug detection rate.
To read this external content in full, download the complete paper from the author archives on line at Hong Kong University.