一、 需求分析(描述具体需求)
1. Install MuJava. The instruction of how to install and use Mujava can be seen in https://cs.gmu.edu/~offutt/mujava/ .
2. Two small programs are given for your task. BubbleSort.java is an implementation of bubble sort algorithm and BackPack.java is a solution of 01 backpack problem. Try to generate Mutants of 2 given programs with MuJava.
3. Write testing sets for 2 programs with Junit, and run mutants on the test sets with MuJava.
二、 概要设计
首先安装mujava,然后用mujava将老师给的两个程序生成变异体,通过Junit编写测试用例,再用该测试用例去测试变异体。根据最后的结果分析自己编写的测试用例是否足够好。
三、 详细设计
1. 首先配置环境变量,将mujava添加到CLASSPATH
创建一个MujavaHome文件夹,结构如图
写mujava.config文件,内容为MuJava_HOME=C:\mujavaHome.再在该文件夹下 创建两个cmd,方便运行mujava程序,内容为
GenMutants.cmd: java mujava.gui.GenMutantsMain
RunTest.cmd: java.mujava.gui.RunTestMain > TestResult.txt
2. 将.java文件复制到src文件夹,通过Eclipse编译生成.class,复制到classes 文件夹,运行GenMutants.cmd,正常的运行界面如下
左侧勾选要变异的java程序,右侧勾选变异的类型
生成完毕后可查看生成的变体
3. 编写测试用例。在eclipse中用Junit编写测试用例,保证测试用例的正确性
然后将其生成的class文件放在testset文件夹中。
4.对生成的变异体进行测试,得到测试结果
四、调试
一开始由于jdk的版本问题没能运行cmd,换成1.8的jdk就可以了
五、 测试结果(描述输入和输出)
killed356个,live9个,mutantScore为97.0%
killed112个,live12个,mutantScore为90.0%
可以看到结果还是比较令人满意的
六、 总结
变异测试方法与之前所学习的不太一样,它表现的是一种逆向思维的方式,以变异程序的存活率来判断测试用例集是否有效。在学习中也要有这种思想,要学会多角度地评判一个程序或者软件。同时也了解到,变异测试在初期由于在花费上的问题,阻碍了它的实际应用,但后期随着电脑能力的发展,变异测试又迎来了复兴,所以说有些方法并不一定本质上不是好方法,而可能是受限于当时某些技术的发展情况而导致其没有发挥最大的作用。我们要以长远的理性的眼光来评价一个方法。