软件测试——实验一

一、目的和要求
(1)掌握白盒测试技术,并能应用白盒测试技术设计测试用例
(2)能用 Junit 实施测试
二、实验内容
void DoWork(int x,int y,int z){
1 int k=0,j=0;
2 if(( x>3 ) && ( z<10 ))
3 {
4 k=xy-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 测试工具编写测试代码进行测

三、测试用例的编写
在这里插入图片描述
根据下面程序流程图,分别用最少的测试用例完成语句覆盖、判定覆盖、条件覆盖和路径覆盖的测试用例!要求标注出所有的语句、判定、条件、路径,并编上序号,每一个测试用例说明覆盖的对应语句、判定、条件、路径的序号。

令条件M={X>0 AND Y>10}
条件N={X<-10 OR Y<0}
条件K={Y=Y/X}
条件J={Y=-(Y+X)}
在这里插入图片描述
在这里插入图片描述
条件覆盖:
对于第一个判定条件M,可分解成两个条件:
(1) 条件X>0:取真时为T1,取假时为F1.
(2) 条件Y>10: 取真时为T2,取假时为F2.
对于第二个判定条件N,可分解成两个条件:
(1) 条件X<-10:取真时为T3,取假时为F3.
条件Y<0: 取真时为T4,取假时为F4.
在这里插入图片描述
测试类:

package ruanjianceshishiyanyi;

public class Baihe {
	public Baihe() {
    }
 
    public int doWork(int x, int y, int z) {
        int k = 0, j = 0;
        if ((x > 3) && (z < 10)) {
            k = x * y - 1;
            j = (int) Math.sqrt(k);
        }
        if ((x == 4) || (y > 5)) {
            j = x * y + 10;
        }
        j = j % 3;
        return j;
    }
 
    public int div(int x, int y) {
        return x / y;
    }
}

package ruanjianceshishiyanyi;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.CoreMatchers.*;
import org.junit.Test;
public class BaiheTest {
	 
    private Baihe exp1;
 
    public BaiheTest() {
        exp1 = new Baihe();
    }
 
    @Test
    public void statementConvergeTest() {
        // 语句覆盖测试
        assertThat(exp1.doWork(4, 6, 9),is(1));
    }
 
    @Test
    public void decisionConvergeTest() {
        // 判定覆盖测试
        assertThat(exp1.doWork(5, 5, 9),is(1));
        assertThat(exp1.doWork(4, 6, 10),is(1));
    }
 
    @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));
    }

}

四、测试结果的分析
在这里插入图片描述
由此可见测试成功
五、测试文档的撰写

六、心得与体会
1、更加熟练了测试用例的编写
2、学习了Eclipse中Juit使用
3、掌握了软件测试中的白盒测试

  • 6
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抢答器是一种常见的电子设备,主要用于比赛或课堂上,用于快速确定参与者或学生谁最先回答问题或按下按钮。基于单片机的设计是一种常见的抢答器设计方法。 基于单片机的抢答器设计可以使用实验箱或Proteus仿真软件进行开发和测试。 首先,设计需求包括:按钮开关、显示屏、倒计时功能和正确错误指示灯。 接下来,根据设计需求,我们需要选取适当的单片机,例如常见的51单片机。然后,将单片机与按钮开关、显示屏、指示灯等外部元件进行连接。 通过编程,可以实现以下功能: 1. 开关检测:使用单片机的IO口来检测按钮开关是否按下。当按钮按下时,发送信号给单片机,触发抢答动作。 2. 倒计时功能:使用定时器功能,实现倒计时功能。可以设置倒计时的时间,并在倒计时结束后触发相应的动作,例如熄灭指示灯或开启下一轮抢答。 3. 显示屏:连接显示屏到单片机的IO口,实现显示倒计时时间或其他相关信息。可以利用数码管或LCD显示屏作为显示装置。 4. 正确错误指示灯:设计两个指示灯,一个代表正确答案,一个代表错误答案。根据参与者的回答情况,触发相应的指示灯亮起。 在Proteus仿真软件中,可以进行电路图的设计和模拟,通过添加相应的元件和连接线,模拟实验箱中的硬件连接。然后,编写单片机的程序,并在仿真软件中进行调试和测试。 通过基于单片机的设计,可以实现一个功能完善的抢答器。这种设计不仅能提高交互效果,还可以增加比赛或课堂的趣味性和互动性,提高学生参与度和竞技性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值