Software Testing, Lab 4
软件测试技术第四次实验报告
一、需求分析(描述具体需求)
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
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.
二、概要设计(简单描述设计思路,配合UML图)
先安装mujava,添加环境变量
然后编写junit测试程序,将.class文件和.java放入mujavahome中相应的文件夹,打开mujava进行测试
三、详细设计(详细描述具体如何实现,附代码及说明)
1. 安装mujava,添加mujava环境变量CLASSPATH:
2. 设置mujava的工作目录:设置mujava.config MuJava_HOME = F:\Mujava;
创建一个文件夹,如C:\mujavaHome;将mujava.config 移至 该文件夹,并用记事本打开将MuJava_HOME设置为该文件夹,即MuJava_HOME=C:\mujavaHome;最后在该文件夹下创建如下结构目录:
在F:\mujavaHome下创建两个Txt,另存为cmd后缀,方便运行mujava程序。txt分别内容为:
GenMutants.cmd: java mujava.gui.GenMutantsMain
RunTest.cmd: java mujava.gui.RunTestMain > TestResult.txt
*运行mujava的目录要包含mujava.config
创建完毕的目录如下
src |
待测Java程序源代码 |
classes |
src中源代码经过正确编译的.class文件 |
testset |
JUnit测试用例的.class文件(见后文) |
result |
生成的变体结果 |
将要测试的两个文件放入src中
3. 在eclipse中运行BackPack.java和BubbleSort.java,并且编写junit测试代码
BackPackTest.java
BubbleSortTest.java
将运行完毕的BackPack.class等移动到mujavahome中的classes文件夹
BackPackTest.java和BackPackTest.class放在testset目录下
4. 运行GenMutants
四、调试分析(在实验过程中遇到的问题以及如何解决)
1. 这次的实验过程中出现了很多错误
这个问题是环境变量配置失败,重新配置之后成功
2. Javac用不了
Jdk和jre版本不配套,重新安装
3. 在eclipse中建立测试用例和执行java文件时,要在default包中运行
不需要package,否则会出错
五、测试结果(描述输入和输出)
产生后的变体代码存放目录:
双击运行RunTest.cmd,在源代码和变体代码上执行测试用例
运行结果:
六、总结
变异测试是在源代码的基础上进行细节性的改变,进行变异,从而改进程序源代码的一种fault-based的软件测试方法。所谓变异,是基于良好定义的变异操作(模拟典型应用错误,例如,错误的操作符或者变量名字;或是强制产生有效的测试,例如,使每个表达式都等于0)。变异测试的目的在于帮助测试者发现有效的测试,评价测试数据集的完备性,定位测试数据的弱点,并对其改善。在产生的变异体代码中选择等价和非等价变异体,根据非等价变异体和源代码的区别,补充测试用例,从而找出源代码中的错误。然而现在在区分等价变异体的过程中大多还是采用人工区分的方法。
变异测试在高性能、高安全要求的软件开发中有很重要的作用。
在这次试验过程中,我们掌握了一种新的测试方法,了解到了很多测试工具。 Mujava是一种用来对Java程序产生变体,进行变异测试的一个工具。根据变异算子产生程序的变异体,同时在源程序和变异程序上执行测试用例(利用Junit生成的测试用例),区分出可存活和不可存活的变异体。在配置的过程中,我遇到了很多的错误,这些错误大部分是因为环境变量错误和版本不兼容,我意识到如果在安装之前先确定各个软件的版本和细心就可以避免很多错误。
