1. A computer implemented method of generating test cases for a tested software method with an input precondition, the method comprising: partitioning a precondition method for the precondition into a branched section and a straight section, wherein the straight section of the precondition method can contain branches that lead directly to a rejection of an input; finding one or more feasible control flow paths for the tested method, wherein the finding comprises checking that the one or more feasible control flow paths satisfy the straight section of the precondition method; for each of the one or more feasible control flow paths found, evaluating whether or not test inputs satisfy the precondition, wherein the evaluating comprises creating a second method which returns successfully if both the branched section of the precondition method and path conditions for a particular one of the one or more feasible control flow paths for the tested method are satisfied for particular test inputs; and outputting results of the evaluating.