1. An artificial intelligence based method for improving a software testing process, comprising: a) upon finding a bug, proposing a set of candidate diagnoses, based on a Model-Based Diagnosis (MBD) process; b) using a planning process for automatically suggesting further test steps to be performed by a tester, to identify the correct diagnosis for the developer in the form of faulty software component that caused said bug, while minimizing the tests steps performed by said tester; c) providing additional information to the MBD process, based on the outputs of said further test steps, thereby pruning incorrect candidate diagnoses; and d) iteratively repeating the steps above while in each time, minimizing the set of candidate diagnoses, until a single diagnosis remains in said set.