Demonic Testing
Demonic testing aims to apply standard testing practices to concurrent programs. It is mainly a combination of unit-testing and interference generation. As a result, it offers a way to test concurrent programs without actually using threads in the execution. This means that the executions do not have any non-determinism due to the existance of threads, because there are no threads.
The demonic part comes from the interference that is generated symbolically for program executions. Interference is specifically generated to break programs where-ever possible.
A special tool for interference generation has been constructed for the demonic testing work, which is available here. There is also a precompiled binary for Windows systems available.
Additionally, a set of benchmark programs has also been constructed to test the capabilities of the testing approach. This suite is also available for download.
These two tools also require the use of the latest branch of EVE (an experimental branch of EiffelStudio) to operate. This branch can be obtained from the repository (under branches/eth/eve) and compiled according to these instructions.