Why Software Fails (And How Testers Can Exploit It)