Unit testing for concurrent business code

Performing unit testing on concurrent programs is a known challenge. Several solutions have been proposed for the challenges, that provide only a partial answer. We argue that there are two kinds of concurrent code writing, namely concurrency protocols and concurrent "business code", and that they are different not only in the coding itself, but also in the way unit testing should be done for them. We show that the current solutions to concurrent unit testing only give a satisfactory answer to concurrency protocols, but not to concurrent business code. We have designed and implemented a unit testing framework suitable for concurrent business code, as part of the IBM Multicore Software Development Kit. This paper presents the distinction between the types of concurrent programming, and describes the new framework.