软件测试技术实验 3 和 4 遇到的一些问题和解决方案
最近写《软件测试技术》实验 3 和实验 4 时,遇到了一些工具上的问题,并尝试了一些解决方案,记录一下。
实验 3:MuJava
MuJava 是一个变异测试的工具,可以生成变异体并运行,最终可以得到变异测试的结果。
变异测试是衡量测试充分性的有效方法,其思想就是模拟程序编写中可能会出现的错误,得到一系列和源程序不同的“变异体”,用来“测试”你的测试程序是否能测出来这些“变异”。你的测试程序杀死(使变异体的运行结果不同于源程序)的变异体越多,测试越充分。
0x00 安装 MuJava
直接到 官网 下载
mujava.jar。为了后续实验进行,还需要下载
junit.jar(编写测试程序)、openjava.jar。保存三个 jar 包到固定路径,编辑
~/.bash_profile引入环境:1
2
3export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:/path/to/openjava.jar:/path/to/junit.jar:/path/to/mujava.jar(适用于 macOS,Windows 略有不同)
保存并运行
source ~/.bash_profile。为了使用 MuJava,需要创建需要的目录结构:
1
2
3
4
5|--\classes\
|--mujava.config
|--\result\
|--\src\
|--\testset\
0x01 生成变异体
- 将源文件移至 
\src\目录。 javac编译源文件,得到classes文件,移至\classes\目录。- 运行 
java mujava.gui.GenMutantsMain,进入图形化设置界面,勾选需要生成变异体的文件和需要的变异算子,点击Generate即可生成(保存在result目录)。 
若此处出现问题,请检查 0x00 第 3 步中路径是否包含空格。即使使用 \ 转译也可能存在问题,建议用 - 或 _ 代替空格。
0x02 生成测试集
使用 JUnit 编写即可,比较简单,得到 xxxTest.java。
0x03 运行变异测试
javac编译测试文件,得到classes文件,移至\testset\目录。- 运行 
java mujava.gui.RunTestMain > TestResult.log,将变异测试日志输出至文件保存。 
若此处出现问题,请检查 0x00 第 3 步中是否引入了 $JAVA_HOME/lib/tools.jar 和 $JAVA_HOME/lib/dt.jar。
变异测试完成,后续可以进一步分析测试代码和变异体,做进一步改进。
实验 4:Major
Major 和 Mujava 功能相近,也是变异测试的工具。
0x00 安装 Major
直接到 官网 下载 Major v1.3.5,解压为 major 目录,存放到固定路径。
配置环境变量:
1
export PATH=/path/to/major/bin:$PATH:$JAVA_HOME/bin
保存并运行
source ~/.bash_profile。验证是否配置成功:
1
2
3
4❯ javac -version
javac 1.7.0-Major-v1.3.5
❯ ant -version
Apache Ant(TM) version 1.8.4-Major-v1.3.5 compiled on July 18 2019
如果验证时得到的输出和上述不同,特别是 javac -version 输出结果不包含 Major-v1.3.5,建议检查第 2 步引入环境变量的顺序,应将 major/bin 目录放在最前面。
0x01 配置文件
Major 使用
ant运行变异测试,并在major/example/目录下给出运行模板。所以我们需要依此建立目录结构:1
2
3
4|--\src\
|--\test\
|--build.xml...剩余内容已隐藏
查看完整文章以阅读更多软件测试技术实验 3 和 4 遇到的一些问题和解决方案
2022年3月23日 22:02最近写《软件测试技术》实验 3 和实验 4 时,遇到了一些工具上的问题,并尝试了一些解决方案,记录一下。
实验 3:MuJava
MuJava 是一个变异测试的工具,可以生成变异体并运行,最终可以得到变异测试的结果。
变异测试是衡量测试充分性的有效方法,其思想就是模拟程序编写中可能会出现的错误,得到一系列和源程序不同的“变异体”,用来“测试”你的测试程序是否能测出来这些“变异”。你的测试程序杀死(使变异体的运行结果不同于源程序)的变异体越多,测试越充分。
0x00 安装 MuJava
直接到 官网 下载
mujava.jar。为了后续实验进行,还需要下载
junit.jar(编写测试程序)、openjava.jar。保存三个 jar 包到固定路径,编辑
~/.bash_profile引入环境:1
2
3export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:/path/to/openjava.jar:/path/to/junit.jar:/path/to/mujava.jar(适用于 macOS,Windows 略有不同)
保存并运行
source ~/.bash_profile。为了使用 MuJava,需要创建需要的目录结构:
1
2
3
4
5|--\classes\
|--mujava.config
|--\result\
|--\src\
|--\testset\
0x01 生成变异体
- 将源文件移至 
\src\目录。 javac编译源文件,得到classes文件,移至\classes\目录。- 运行 
java mujava.gui.GenMutantsMain,进入图形化设置界面,勾选需要生成变异体的文件和需要的变异算子,点击Generate即可生成(保存在result目录)。 
若此处出现问题,请检查 0x00 第 3 步中路径是否包含空格。即使使用
\转译也可能存在问题,建议用-或_代替空格。0x02 生成测试集
使用 JUnit 编写即可,比较简单,得到
xxxTest.java。0x03 运行变异测试
javac编译测试文件,得到classes文件,移至\testset\目录。- 运行 
java mujava.gui.RunTestMain > TestResult.log,将变异测试日志输出至文件保存。 
若此处出现问题,请检查 0x00 第 3 步中是否引入了
$JAVA_HOME/lib/tools.jar和$JAVA_HOME/lib/dt.jar。变异测试完成,后续可以进一步分析测试代码和变异体,做进一步改进。
实验 4:Major
Major 和 Mujava 功能相近,也是变异测试的工具。
0x00 安装 Major
直接到 官网 下载 Major v1.3.5,解压为 major 目录,存放到固定路径。
配置环境变量:
1
export PATH=/path/to/major/bin:$PATH:$JAVA_HOME/bin
保存并运行
source ~/.bash_profile。验证是否配置成功:
1
2
3
4❯ javac -version
javac 1.7.0-Major-v1.3.5
❯ ant -version
Apache Ant(TM) version 1.8.4-Major-v1.3.5 compiled on July 18 2019
如果验证时得到的输出和上述不同,特别是
javac -version输出结果不包含Major-v1.3.5,建议检查第 2 步引入环境变量的顺序,应将major/bin目录放在最前面。0x01 配置文件
Major 使用
ant运行变异测试,并在major/example/目录下给出运行模板。所以我们需要依此建立目录结构:1
2
3
4|--\src\
|--\test\
|--build.xml...剩余内容已隐藏
查看完整文章以阅读更多