《表3 测试时间对比:遗传算法辅助的动态符号执行测试方法》
ms
表3对JDart和JDart-Ga测试17个实验对象的时间开销进行了统计。由于JDart-Ga相比于JDart增加了一个求解判断模块,所以测试实验对象所需的时间花销要比JDart略长。如表3所示,与JDart相比,JDart-Ga测试solvers_foo、nhandler_foo、functions_foo、fields_foo和double2long_foo 5个实验对象的时间开销增幅超过10%;测试nested_bar的时间开销减少了99.8%;测试剩余11个实验对象的时间开销增幅低于10%,与预期相符。对5个时间开销增幅超过10%的实验对象进行代码分析发现:(1)solvers_foo和double2long_foo中均存在JDart无法覆盖的路径,JDart-Ga覆盖了更多的程序路径,从而导致时间开销分别增加了15.2%和14.8%;(2)fields_foo、functions_foo和nhandler_foo中的DON’T KNOW PATHS为约束求解器报告错误,实际上应该为unsat,而遗传算法并不能从逻辑上去判断约束条件是否有解,这导致JDart-Ga仍尝试使用遗传算法生成覆盖上述路径的测试输入,消耗了大量无效时间,时间开销分别增加了596.6%、400.9%和372.7%。对测试时间开销大幅降低的nested_bar进行分析,发现在该程序中有8条路径约束条件都含有强制类型转换操作,故约束求解器在无法判断该类型的路径约束条件是否有解的过程中消耗了大量的时间,而JDart-Ga可以快速求解,从而节省了大量时间开销。
图表编号 | XD00222632200 严禁用于非法目的 |
---|---|
绘制时间 | 2020.11.01 |
作者 | 谢章伟、崔展齐、郑丽伟、张志华 |
绘制单位 | 北京信息科技大学计算机学院、北京信息科技大学计算机学院、北京信息科技大学计算机学院、北京信息科技大学计算机学院 |
更多格式 | 高清、无水印(增值服务) |