1. A method of testing a concurrently operating original computer program that operates under a memory model, comprising the steps of: reordering a plurality of instructions of said program while remaining in compliance with said memory model to define a modified program; and generating tests using said modified program for execution in order to verify correct operation of said original computer program.