Testing the IPC Protocol for a Real-Time Operating System
Abstract
In this paper, we adapt model-based testing techniques to
concurrent code, namely for test generations of an
(industrial) OS kernel called PikeOS\@. Since our
data-models are complex, the problem is out of reach of
conventional model-checking techniques. Our solution is
based on symbolic execution implemented inside the
interactive theorem proving environment Isabelle/HOL
extended by a plugin with test generation facilities called
HOL-TestGen.
As a foundation for our symbolic computing techniques, we
refine the theory of monads to embed interleaving
executions with abort, synchronization, and shared memory
to a general but still optimized behavioral test framework.
This framework is instantiated by a model of PikeOS
inter-process communication system-calls. Inheriting a
micro-architecture going back to the L4 kernel, the system
calls of the IPC-API are internally structured by atomic
actions; according to a security model, these actions can
fail and must produce error-codes. Thus, our tests reveal
errors in the enforcement of the security model.