基于依赖性分析的测试类自动生成
(1)依赖性分析:
本文在方法调用图的基础上,定义了使用图和修改图来表示方法和字段之间的关系。
(2)方法序列构建:
基于分析结果,构建能够修改待测方法访问字段的方法序列。基于使用图获取待测方法访问的字段,基于修改图得到能够修改指定字段的方法集合。根据解析得到的访问字段集合,对其中的每一个字段都从修改方法集合中寻找合适的方法构造方法序列。选择方法时需要满足修改给定字段的要求,同时也要尽量简单,避免重复修改,还要考虑到选择出的方法能被实例化和赋值。
(3)基于知识库构建类实例:
基于启发式对待测方法分类:根据是否有file对象或进行文件操作的string对象来判断是否需要处理文件。
文件型:找出文件名参数,设置为输入,若有其他参数,用随机数生成器生成随机参数。
非文件型:首先读取文件,转换为字节数组,然后根据操作序列中的每一个项目所需的数据类型逐个从字节数组中截取数据,转换成所需要的数据。
(4)总结
不足:对于类实例的构建能力有待提高。本文通过收集待测程序的构造方法和工厂方法等为类提供实例化的方法,对于内建类,需要提供人工帮助,本文能够处理大多数类的实例构造问题,但仍然存在很多不能处理的场合。在知识库中没有建立对接口类的构造方法。
改进:改进实例生成能力;提高生成实例的质量(语义知识)