This paper compares several data flow based software testing criteria to one another and to branch testing. It has previously been shown that the fact that criterion C1 subsumes criterion C2, does not guarantee that C1 is better at detecting faults than C2. However if a certain stronger relation between the criteria holds, then for any program and any specification, C1 is guaranteed to be better at detecting faults than C2 in the following sense: a test suite selected by independent random selection of one test case from each C1 subdomain is at least as likely to detect a fault as a test suite similarly selected using C2. This paper shows that under those conditions, the expected number of failure-causing inputs in the C1 test suite is also at least as great as that of the C2 test suite. These results are used to compare a number of data flow testing criteria to one another and to branch testing.