A novel invariants-based approach for automated software fault localization