Fault-based software testing model