一句话:结合文法搜索与性能反馈,在短时预算内更快生成能暴露性能问题的短输入。
论文关注如何在常规增量测试可接受的短时预算内,自动发现能触发性能退化的短输入。作者将性能模糊测试与基于文法的搜索结合:生成带长度限制的推导树,并为每棵子树标注长度,同时利用性能插桩反馈引导搜索,并组合蒙特卡洛树搜索与长度限制树杂交等策略。评估以已有最佳性能模糊器为基线,在若干示例应用上比较不同组合。结果显示没有单一技术在所有样例上占优,但 MCTS 与长度限制树杂交在语法正确输入即可暴露语义性能缺陷的场景中表现稳定,并发现 LunaSVG 中一个挂起缺陷,开发者已确认修复。
Recent research has shown that mutational search with appropriate instrumentation can generate short inputs that demonstrate performance issues. Another thread of fuzzing research has shown that substituting subtrees from a forest of derivation trees is an effective grammar-based fuzzing technique for finding deep semantic bugs. We combine performance fuzzing with grammar-based search by generating length-limited derivation trees in which each subtree is labeled with its length. In addition we use performance instrumentation feedback to guide search. In contrast to fuzzing for security issues, for which fuzzing campaigns of many hours or even weeks can be appropriate, we focus on searches that are short enough (up to an hour with modest computational resources) to be part of a routine incremental test process. We have evaluated combinations of these approaches, with baselines including the best prior performance fuzzer. No single search technique dominates across all examples, but both Monte Carlo tree search and length-limited tree hybridization perform consistently well on example applications in which semantic performance bugs can be found with syntactically correct input. In the course of our evaluation we discovered a hang bug in LunaSVG, which the developers have acknowledged and corrected.