软件测试lab4--使用mujava进行变异测试

 

软件测试技术第四次实验报告

一、需求分析(描述具体需求)

1.  安装MuJava。

2.  根据给定的两个小程序使用MuJava生成对应的变异体。

3.  使用Junit给两个程序编写测试集。

4.  使用MuJava和测试集测试这些变异体。

二、概要设计(简单描述设计思路,配合UML图)

1.  设计思路

首先安装mujava.jar,openjava.jar和junit.jar等需要用到的包,在进行环境变量的配置,生成需要的变异体。接着编写对应的测试集,再对这些变异体进行测试。

三、详细设计(详细描述具体如何实现,附代码及说明)

1.       安装MuJava。

将下载好的jar包添加到环境变量中,在CLASSPATH中添加这些jar包的路径,结果如下图所示:

 

 

新建一个mujava.config文件,并在其中写入MuJava_HOME的地址,该地址为新建的MujavaHome的地址。

 

 

再新建两个命令脚本文件,GenMutants.cmd和RunTest.cmd,在其中分别写入如下图所示的内容。

 

2.       生成变异体。

先在MujavaHome文件夹中新建四个文件夹,分别是src,classes,result,testset。

 

 

在src文件夹中放入两个给定的源程序,在classes文件夹中放入两个源程序在eclipse中编译生成的class文件。

 

点击运行GenMutants.cmd文件,弹出如下图形界面,并勾选上所有的变异算子。

 

 

点击‘Generate’按钮,生成变异体,下图分别是BackPack和BubbleSort的变异体:

 

 

 

 

其中,只生成了method级别的变异体,没有class级别的变异体。

生成变异体后,可以在result文件夹内找到生成的变异体文件。

 

 

3.       编写测试用例。

(1)       backpack的测试用例:

import org.junit.Assert;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

 

public class testBackPack {

    private BackPack c;

 

    @Before

    public void setUp() throws Exception {

        // setUp()用于测试前的初始化

        c = new BackPack();

    }

    @Test

    public void test2() {

    int m = 10;

        int n = 3;

    int w[] = {3, 4, 5};

        int p[] = {4, 5, 6};

        int a[][] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

            {0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4},

            {0, 0, 0, 4, 5, 5, 5, 9, 9, 9, 9},

            {0, 0, 0, 4, 5, 6, 6, 9, 10, 11, 11}};

        Assert.assertArrayEquals(a,c.BackPack_Solution(m, n, w, p));     

    }

    @After

    public void tearDown() throws Exception {

        // tearDown()用于测试后的善后

        c = null;

    }

}

(2)       bubblesort的测试用例:

import static org.junit.Assert.*;

import java.util.Arrays;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

 

public class testBubbleSort {

    private BubbleSort c;

 

    @Before

    public void setUp() throws Exception {

        // setUp()用于测试前的初始化

        c = new BubbleSort();

    }

    @Test

    public void test1() {

        int a[] = new int[]{1,6,2,2,5};

        int b[]=new int[]{2,2,2,1,2,13};

        int a1[] = new int[]{1,2,2,5,6};

        int b1[]=new int[]{1,2,2,2,2,13};

        assertEquals(Arrays.toString(a1), Arrays.toString(c.BubbleSort(a)));

        assertEquals(Arrays.toString(b1), Arrays.toString(c.BubbleSort(b)));      

    }

    @After

    public void tearDown() throws Exception {

        // tearDown()用于测试后的善后

        c = null;

    }

}

4.       对变异体进行测试。

首先将testBackPack.java,testBubbleSort.java, testBackPack.class, testBubbleSort.class放入testset文件夹内。

 

 

然后点击运行RunTest.cmd文件,打开图形界面,设定参数,分别对两个程序的变异体进行测试。

四、调试分析(在实验过程中遇到的问题以及如何解决)

在实验过程中遇到了这些问题:

首先是点击运行GenMutants.cmd文件时发生闪退,出现“找不到或无法加载主类”的错误,经查询这是环境变量没有配置正确所导致的问题,修改环境变量的配置后,能成功打开图形界面。

但是在点击‘Generate’按钮后,没有成功生成变异体,在命令台处报了如下错误:

 

再次查询资料发现还是环境变量的原因,再次修改,最终解决问题,得到变异体。

五、测试结果(描述输入和输出)

1.  下图为BubbleSort程序的测试结果以及result的输出结果。

 

 

可以看到,总共有124个变异体,有110个被kill掉的变异体。

 

 

2.  下图为BackPack程序的测试结果以及result的输出结果。

 

 

 

一共有365个变异体,有321个变异体被kill掉。

 

 

六、总结

通过这次实验,我练习了环镜变量的配置方法,还学会了使用mujava来给程序进行变异测试的技术。包括怎么分类放置文件、生成变异体以及运行变异测试。在给程序编写测试用例时,用到了assertArrayEquals 这个函数,实现对数组的测试。我还学到了将命令写入cmd文件来实现运行该命令的方法。

转载于:https://www.cnblogs.com/wwyt/p/10762753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值