1. Introduction
In software testing [1], [5], [15], [16], [17], [18], [19], [20], an element under test is exercised to identify the presence of errors and to ensure that the software performs as expected. Constrained by computational resources and time, exhaustive testing is impractical for all but the most trivial applications. As a result, selecting an optimum testing technique for identifying errors in a program at the unit testing [2], [6], [7], [8], [14] level is an important challenge in software engineering.