Dynamic State Alteration Techniques For Automatically Locating Software Errors