TY - JOUR
T1 - SimTester
T2 - A controllable and observable testing framework for embedded systems
AU - Yu, Tingting
AU - Srisa-An, Witawas
AU - Rothermel, Gregg
PY - 2012/9
Y1 - 2012/9
N2 - In software for embedded systems, the frequent use of interrupts for timing, sensing, and I/O processing can cause concurrency faults to occur due to interactions between applications, device drivers, and interrupt handlers. This type of fault is considered by many practitioners to be among the most difficult to detect, isolate, and correct, in part because it can be sensitive to execution interleavings and often occurs without leaving any observable incorrect output. As such, commonly used testing techniques that inspect program outputs to detect failures are often ineffective at detecting them. To test for these concurrency faults, test engineers need to be able to control interleavings so that they are deterministic. Furthermore, they also need to be able to observe faults as they occur instead of relying on observable incorrect outputs. In this paper, we introduce SimTester, a framework that allows engineers to effectively test for subtle and non-deterministic concurrency faults by providing them with greater controllability and observability. We implemented our framework on a commercial virtual platform that is widely used to support hardware/software co-designs to promote ease of adoption. We then evaluated its effectiveness by using it to test for data races and deadlocks. The result shows that our framework can be effective and efficient at detecting these faults.
AB - In software for embedded systems, the frequent use of interrupts for timing, sensing, and I/O processing can cause concurrency faults to occur due to interactions between applications, device drivers, and interrupt handlers. This type of fault is considered by many practitioners to be among the most difficult to detect, isolate, and correct, in part because it can be sensitive to execution interleavings and often occurs without leaving any observable incorrect output. As such, commonly used testing techniques that inspect program outputs to detect failures are often ineffective at detecting them. To test for these concurrency faults, test engineers need to be able to control interleavings so that they are deterministic. Furthermore, they also need to be able to observe faults as they occur instead of relying on observable incorrect outputs. In this paper, we introduce SimTester, a framework that allows engineers to effectively test for subtle and non-deterministic concurrency faults by providing them with greater controllability and observability. We implemented our framework on a commercial virtual platform that is widely used to support hardware/software co-designs to promote ease of adoption. We then evaluated its effectiveness by using it to test for data races and deadlocks. The result shows that our framework can be effective and efficient at detecting these faults.
KW - Concurrency
KW - Device drivers
KW - Kernels
KW - Testing
UR - http://www.scopus.com/inward/record.url?scp=84878520279&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84878520279&partnerID=8YFLogxK
U2 - 10.1145/2365864.2151034
DO - 10.1145/2365864.2151034
M3 - Article
AN - SCOPUS:84878520279
SN - 1523-2867
VL - 47
SP - 51
EP - 61
JO - ACM SIGPLAN Notices
JF - ACM SIGPLAN Notices
IS - 7
ER -