Given a failing test case, test case reduction yields a smaller test case that reproduces the failure. This process can be time consuming due to repeated trial and error with smaller test cases. Current techniques speed up reduction by only exploring syntactically valid candidates, but they still spend significant effort on semantically invalid candidates. In this paper, we propose a model-guided approach to speed up test case reduction. The approach trains a model of semantic properties driven by syntactic test case properties. By using this model, we can skip testing even syntactically valid test case candidates that are unlikely to succeed. We evaluate this model-guided reduction on a suite of 14 large fuzzer-generated C test cases from the bug repositories of two well-known C compilers, GCC and Clang. Our results show that with an average precision of 77%, we can decrease the number of removal trials by 14% to 61%. We observe a 30% geomean improvement in reduction time over the state of the art technique while preserving similar reduction power.
翻译:如果测试失败, 测试案例的减少将产生一个复制失败的较小测试案例。 这个过程会由于反复试验和试验案例的错误而耗时。 当前的技术会通过只探索合成有效候选人来加速减少, 但是它们仍然花大量精力去寻找在赛义无效的候选人上。 在本文中, 我们提出了一个模型指导方法来加速测试案例的减少。 这个方法将一个由合成测试案例特性驱动的语义特性模型。 通过使用这个模型, 我们甚至可以跳过测试无效的同步有效测试案例候选人。 我们从两个著名的 C编译者, 海湾合作委员会 和 Clang 的错误存储库中评估了14个大型模糊生成的 C 测试案例的模型指导削减。 我们的结果显示, 平均精确到 77%, 我们可以将清除试验数量减少14%到 61% 。 我们观察到, 在保存类似减压能力的同时, 30 % 的地理比例 。