## 1 Introduction  
Data flow and mutation testing are two standard white-box testing methodologies [1]. The two methodologies are more effective and widespread than the other white testing criteria, such as statement and branch coverage [2]. Additionally, data flow and mutation coverage criteria subsume statement and branch coverage requirements [2].  
There are only a few studies have been presented to compare and evaluate the differences between data flow and mutation testing concerning (1) effectiveness: number of faults detected by each approach; and (2) efficiency: number of test cases needed by each approach for creating an adequate test suite [2, 3, 4, 5]. Some of the previous studies have analytically compared mutation and data flow [5, 6], and other studies have empirically compared them [2, 3, 4, 7].  
To the best of our knowledge, the key study for comparing data flow and mutation testing techniques was proposed by [PERSON] and [PERSON] in 1994 [3]. [PERSON] and [PERSON] [3, 8] mainly designed test data to meet all-uses and mutation criteria and compare the scores to check the \"ProbSubsumes\" relationship between the two criteria. The experiment consisted of four programs and thirty groups of test data for each program. The results showed that mutation-cover was closer to satisfying data flow than data flow-cover was to mutation. In their study, [PERSON] and [PERSON] compared two test adequacy criteria, called data flow-based all-uses criterion and mutation-based criterion. This research comparedthe hardness of fulfilling the two criteria and the cost of each of them. They showed that satisfying the mutation criterion was more challenging than all du-pairs.  
[PERSON] and [PERSON] [4] presented a comparison of mutation with all-defs data flow testing. They concluded that mutation cover subsumes all-defs cover (i.e., \"any set of test cases that satisfies mutation will also satisfy all-defs\"). The experiment consisted of ten programs and five groups of test data for each program generated using different methods. They also studied the fault detection ability of the generated tests.  
[PERSON] and [PERSON] [9] developed techniques for seeding faults into the code under test utilizing the \"program dependence graph.\" Then, they compared the fault-revealing capability of mutation and data flow. The results showed that the sufficient test sets for mutation and data flow were nearly equally successful in revealing the faults.  
[PERSON] and [PERSON] [4] concluded that no experiment could prove that one test approach is superior to another. Still, additional and dissimilar programs and studies can improve confidence in the validity of the relationship between the testing criteria.  
Therefore, this paper introduces a new comparison between mutation and data flow testing. The significant contribution of this comparison is utilizing search-based algorithms to generate the test sets. In addition to the new test-data generation approach, this study uses a new set of C# programs different from the related work.  
This paper is organized as follows. Section 2 presents some essential concepts about data flow and higher-order mutation testing for understanding this article. Section 3 introduces in detail the proposed empirical comparison. Section 4 gives the experiments and results. Finally, the conclusions and future work are given in Section 5.