《表3 测试时间对比:遗传算法辅助的动态符号执行测试方法》

《表3 测试时间对比:遗传算法辅助的动态符号执行测试方法》   提示:宽带有限、当前游客访问压缩模式
本系列图表出处文件名:随高清版一同展现
《遗传算法辅助的动态符号执行测试方法》


  1. 获取 高清版本忘记账户?点击这里登录
  1. 下载图表忘记账户?点击这里登录
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可以快速求解,从而节省了大量时间开销。