STEPS---a tool for structural testing of parallel software