Perpetual Testing Projects
at University of Oregon

(Previously at Purdue University)

Two-phase testing of multi-threaded software

Multi-threaded software systems are subject to subtle, time- and load-dependent faults that can go undetected in extensive lab testing, only to surface in the field. Static analysis techniques can, in principle, provide stronger assurances by exhaustively exploring all possible behaviors, but in practice these techniques can be applied only to well-structured architectural models, not to complex "as-built" implementation structures. Two-phase testing maintains the complex relation between architectural models and implementation structures, combining exhaustive static analysis of the former with dynamic conformance testing of the latter. [More]

Beta Carotene: Residual test monitoring

The ubiquitous internet has opened the door to new possibilities in beta testing. Today, the channel of information from users back to developers is puny dribble of information, usually limited to bug and trouble reports; monitoring of deployed code is limited to error and sanity checks. Beta carotene is about richer monitoring and feedback of deployed software, validating and refining the models used in quality assurance based on actual usage. An important first step in this direction is very low-cost monitoring of the "residue" of coverage testing, i.e., checking for test obligations which were not fulfilled in the development environment but correspond to execution behaviors that occur in actual use. [More]

Supporting tools and technologies

In addition to the core technologies of two-phase and residual testing, several supporting tools and technologies have been constructed or are under development.

Contact: Michal Young