1. An artificial intelligence based method for improving a software testing process, comprising: proposing, by a processor, a set of candidate diagnoses, upon finding a bug based on a Model-Based Diagnosis (MBD) process; using, by the processor, a planning process for automatically suggesting further test steps to be performed by a tester, to identify the correct diagnosis for the form of faulty software component that caused said bug, while minimizing the tests steps performed by said tester, wherein the planning process comprising defining a call graph consisting of nodes being software components and edges, where an edge between points on said call graph represents a call from a component to another component, and wherein a given candidate diagnosis is checked by a test suite being any executable path in the call graph that passes via a component being a part of said candidate diagnosis, said test suite having a corresponding cost of its path in said call graph; providing, by the processor, additional information to the MBD process, based on the outputs of said further test steps, thereby pruning incorrect candidate diagnoses, wherein the MBD includes algorithm for ranking the set of candidate diagnoses according to an estimate of a probability that said candidate diagnoses are correct; and iteratively repeating the steps above while in each time, minimizing the set of candidate diagnoses, until a single diagnosis remains in said set.