SimTester: A controllable and observable testing framework for embedded systems

Tingting Yu, Witawas Srisa-An, Gregg Rothermel

Research output: Contribution to journalArticlepeer-review

10 Scopus citations


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.

Original languageEnglish
Pages (from-to)51-61
Number of pages11
JournalACM SIGPLAN Notices
Issue number7
StatePublished - Sep 2012


  • Concurrency
  • Device drivers
  • Kernels
  • Testing

ASJC Scopus subject areas

  • Computer Science (all)


Dive into the research topics of 'SimTester: A controllable and observable testing framework for embedded systems'. Together they form a unique fingerprint.

Cite this