一、目的和要求

(1)掌握白盒测试技术,并能应用白盒测试技术设计测试用例
(2)能用Junit实施测试

二、实验内容

int  DoWork(int x,int y,int z){
1   int  k=0,j=0;
2   if(( x>3 ) && ( z<10 ))
3   {
4       k=x*y-1;     
5       j=sqrt(k);
6   }
7   if(( x= =4 ) || ( y>5 ))
8       j=x*y+10;   
9   j=j%3; 
10  return j;
11 }

说明:程序段中每行开头的数字(1~11)是对每条语句的编号。
(1)分别以语句覆盖、判定覆盖、条件覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(2)编写Java类,调用该方法,并用Junit测试工具编写测试代码进行测试。

程序共有4条路径: 
P1(1-2-3-4-5-6-7-8-9-10)
P2(1-2-3-4-5-6-7-9-10)
P3(1-2-7-8-9-10)
P4(1-2-7-9-10)

测试代码:

import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;


public class Exp1Test {

    private Exp1 exp1;

    public Exp1Test() {
        exp1 = new Exp1();
    }

    @Test
    public void statementConvergeTest() {
        // 语句覆盖测试
        assertThat(exp1.doWork(4, 6, 9),is(1));
    }

    @Test
    public void decisionConvergeTest() {
        // 判定覆盖测试
        assertThat(exp1.doWork(5, 4, 9),is(1));
        assertThat(exp1.doWork(4, 4, 11),is(2));
    }

    @Test
    public void conditionConvergeTest() {
        // 条件覆盖测试
        assertThat(exp1.doWork(4, 6, 11),is(1));
        assertThat(exp1.doWork(2, 4, 9),is(0));
    }

    @Test
    public void pathConvergeTest() {
        // 路径覆盖测试
        assertThat(exp1.doWork(4, 6, 9),is(1));
        assertThat(exp1.doWork(5, 4, 9),is(1));
        assertThat(exp1.doWork(4, 4, 11),is(2));
        assertThat(exp1.doWork(2, 4, 9),is(0));
    }

}

三、测试用例的编写

在这里插入图片描述
在这里插入图片描述

四、测试结果的分析

在这里插入图片描述
所有测试结果均没有任何问题,基本达成设计要去,所有测试样例均测试通过,符合预期结果。

五、测试文档的撰写

本次实验采用白盒测试方法,分别采用语句覆盖,条件覆盖,判定覆盖,路径覆盖四种测试方式对测试内容进行不同的测试,测试工具使用了Junit包。

语句覆盖的测试样例一例,判定覆盖和条件覆盖的测试样例两例,路径覆盖的测试样例四例,构建关于实验内容的测试类,并且在测试类内建立四个测试方法,分别在各自的测试方法中完成对测试样例的测试。

六、心得与体会

通过这次实验,我学会了使用Junit框架的对程序进行白盒的单元测试,当你在做测试前,你可能会想要使用多种不同的测试数据,针对同样的操作或功能进行测试,关键就是设计好完善且合适的测试样例,既不能样例重复繁多,也不能太少不够,要保证能够实现测试路径的有效覆盖。

本次实验主要实践了语句覆盖,条件覆盖,判定覆盖,路径覆盖四种设计测试样例的方式,通过真正意义上的体会,使我更深入的理解了测试方法的好处,为以后的软件质量测试的过程奠定了基础。

Logo

领路信创诚邀您共建高质量内容社区,投稿申请~

更多推荐