模糊测试是当前检测程序错误的最主流、最有效的手段之一.模糊测试工具首先对种子文件进行变异，生成大量新输入文件，然后挑选新输入来执行目标程序，以触发程序中潜在的漏洞.当前对模糊测试的研究多着眼于改进变异算法，提高生成的新文件对目标程序代码的覆盖，忽略了备用种子文件的筛选策略对提高模糊测试覆盖率与测试效率的的贡献.针对该问题，我们提出了基于覆盖频率的种子文件筛选策略，在每次执行目标程序时，我们记录程序执行中覆盖过的路径边；根据边被执行次数的多少，我们将这些边分为低频边和高频边；对于包含了更多低频边且执行效率高的种子文件，我们给予更高的优先级.我们在模糊测试工具American Fuzzy Lop （AFL）实现了对应的算法，实验表明我们的算法有效提高了模糊测试的效率和代码覆盖率.
In recent years, fuzz testing has become one of the most popular and efficient methods to detect program bugs and vulnerabilities. By mutating seed files, fuzzing tools generate a large volume of test inputs, and feed them to the program under test in order to expose security weakness. Current researches mostly focus on improving the mutation algorithm to make newly generated files cover more target program codes. However, little attention had been paid to elaborately optimizing the policies to sort seed files to be fuzzed, which prioritizes the seed files with higher probability to cover new program spaces in the fuzzing process, and consequently improves the efficiency of fuzzing. Therefore, we proposed a coverage frequency based selection approach to guide the fuzzer to execute promising seed files first. To do so, we first kept tracking how many times each edge between two basic blocks has been executed by the target program in the fuzz testing. Based on the number that each edge has been executed, we then categorized them into high-frequency edges and low-frequency edges. Only seeds containing more low-frequency edges, as well as being executed very fast by the target program, were assigned with high priority. We implemented our method on American Fuzzy Lop (AFL), one of the most popular fuzzers and applied the modified AFL version to 5 real world programs. The result shows that our approach can improve both the efficiency of AFL and the code coverage explored in the target program.