Issue No. 06 - June (2003 vol. 29)
Brad Long , IEEE Computer Society
Daniel Hoffman , IEEE
Paul Strooper , IEEE
<p><b>Abstract</b>—Concurrent programs are hard to test due to the inherent nondeterminism. This paper presents a method and tool support for testing concurrent Java components. Tool support is offered through ConAn (<it>Con</it>currency <it>An</it>alyser), a tool for generating drivers for unit testing Java classes that are used in a multithreaded context. To obtain adequate controllability over the interactions between Java threads, the generated driver contains threads that are synchronized by a clock. The driver automatically executes the calls in the test sequence in the prescribed order and compares the outputs against the expected outputs specified in the test sequence. The method and tool are illustrated in detail on an asymmetric producer-consumer monitor. Their application to testing over 20 concurrent components, a number of which are sourced from industry and were found to contain faults, is presented and discussed.</p>
Component testing, concurrency, unit testing, tool support.
D. Hoffman, P. Strooper and B. Long, "Tool Support for Testing Concurrent Java Components," in IEEE Transactions on Software Engineering, vol. 29, no. , pp. 555-566, 2003.