论文部分内容阅读
目前,随着Java技术日益普及并受到广泛重视,如何提高Java应用程序的可信性是一个不容忽略的重要问题。Java应用程序的单元测试是保证软件质量、提高软件可靠性的关键。人工完成单元测试既费时又繁琐,自动化的单元测试已经成为节省软件开发成本、提高软件可信性的重要手段。因此,本文针对Java应用程序单元测试中的自动生成测试数据和提高单元测试自动化程度这两个问题展开研究。本文首先分析子类型行为和类行为兼容性的关系,利用一个由子类型行为描述变换到类行为兼容性实现的映射,可以获得正确的类不变式、方法前置条件和后置条件。准确的类不变式和方法后置条件可以作为测试神谕,而类不变式和方法前置条件可以作为划分等价类和分析边界值的输入。接着,针对需要人工计算期望值的单元测试给出两个生成测试数据方法:考察生产和实验中经常使用的统计方法:正交实验设计法和均匀设计法生成测试数据,与枚举法和对均匀设计法进行了改进的均匀设计补充法生成的测试数据相比,发现均匀设计补充法生成的测试数据在测试成本和测试效果间具有较好的性价比;提出基于改进的遗传算法自动生成Java类的测试数据的方法,该方法采用对整数、字符和字节使用二进制编码和浮点型数据使用浮点数编码的混合编码方式,对字节码形式表示的Java类添加装置,随机生成一组测试数据作为初始种群,通过测试覆盖分析器监控被测试程序的执行过程,以获取的覆盖率作为适应度值,执行遗传操作,实验结果表明:改进后的遗传算法能有效地自动生成Java类的测试数据。然后对Java程序的抽象类、包含内隐类的接口、其它内隐类和普通类的测试提出不同的测试案例模式,结合Liskov替代原则对类测试的要求,实现一个基于Junit自动生成测试案例模板的工具。最后,本文基于Junit测试框架和上述研究结果,实现一个Java平台单元测试的工具原型。以此工具为平台,程序员可以自动生成测试数据和测试用例模板,在编写测试案例时,只需在自动生成的测试案例模板中添加期望值就可获得完整的测试案例,可以提高程序员的开发效率和被测试软件单元的可信性。