One way to measure the quality of a set of test cases is to evaluate them using a mutation tool. First, test cases are created from the original source code. Then, a mutant generator is run that creates new programs, called mutants, that have subtle variations compared to the original source code [1]. The mutant generator applies a range of mutation operators, that do things like swapping a '+' for a '-' operator, or a logical AND for an OR. In theory, each of the resulting mutants should show a typical software bug, and if you have a high quality test case set, all these bugs should be identified.
The mutants can then be used to evaluate the quality of test cases: test cases should 'kill' as many mutants as possible. Program variations that were not caught by the test case suite are surviving mutants, and they point to shortcomings in the set of test cases.
The following diagram is taken from the MuClipse website at http://muclipse.sourceforge.net/about.php and shows an overview of the mutation testing process.
[1] One such program is http://cs.gmu.edu/~offutt/mujava/. The paper introducing muJava is here: http://www.cs.gmu.edu/~offutt/rsrch/papers/mujava.pdf.