模糊测试类规约
软件工程
2022-01-27 v1
摘要
通过可执行约束表达类规约对于测试生成、缺陷查找和自动化调试等多种软件工程任务十分重要,但开发者很少编写它们。现有从代码推断规约的技术填补了这一空白,但它们被设计为支持特定类型的断言,且难以适配以支持不同的断言语言,例如添加对量词或成员关系、包含等额外比较运算符的支持。为解决上述问题,我们提出 SpecFuzzer,一种结合基于语法的模糊测试、动态不变量检测和变异分析以自动生成类规约的新技术。SpecFuzzer 使用:(i) 模糊测试器作为候选断言的生成器,候选断言源自从类定义自动获得的语法;(ii) 动态不变量检测器——Daikon——以过滤掉被测试套件证伪的断言;(iii) 基于变异的机制对断言进行聚类和排序,使相似约束被分组并优先化更强的约束。基于语法的模糊测试使 SpecFuzzer 能够通过操纵模糊测试语法(例如纳入额外运算符)直接适配以支持不同的规约语言。我们在用于评估前沿技术 GAssert 和 EvoSpex 的 43 个 Java 方法基准上评估了我们的技术。结果表明,根据标准性能度量,SpecFuzzer 可轻松支持更具表达力的断言语言,且在此语言上推断规约比 GAssert 和 EvoSpex 更有效。
引用
@article{arxiv.2201.10874,
title = {Fuzzing Class Specifications},
author = {Facundo Molina and Marcelo d'Amorim and Nazareno Aguirre},
journal= {arXiv preprint arXiv:2201.10874},
year = {2022}
}