当前位置 博文首页 > 无限迭代中......:白盒测试——简单分支函数测试
(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=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)
语句覆盖仅需一次测试即可完成覆盖:
测试用例 | 判定取值(M,N) | 条件取值 | 覆盖路径 |
输入:x=4,y=6,z=9 输出:j=1 | T,T | T1,T2,T3,T4 | P1(1-2-3-4-5-6-7-8-9-10) |
?
判定覆盖需要进行两次测试可以完成覆盖:
测试用例 | 判定取值(M,N) | 条件取值 | 覆盖路径 |
输入:x=5,y=4,z=9 输出:j=1 | T,F | T1,T2,F3,F4 | P2(1-2-3-4-5-6-7-9-10) |
输入:x=4,y=4,z=11 输出:j=2 | F,T | T1,F2,T3,F4 | P3(1-2-7-8-9-10) |
?
条件覆盖需要进行两次测试可以完成覆盖:
测试用例 | 判定取值(M,N) | 条件取值 | 覆盖路径 |
输入:x=4,y=6,z=11 输出:j=1 | F,T | T1,F2,T3,T4 | P1(1-2-3-4-5-6-7-8-9-10) |
输入:x=2,y=4,z=9 输出:j=0 | F,F | F1,T2,F3,F4 | P4(1-2-7-9-10) |
?
路径覆盖需要进行四次测试完成覆盖:
测试用例 | 判定取值(M,N) | 条件取值 | 覆盖路径 |
输入:x=4,y=6,z=9 输出:j=1 | T,T | T1,T2,T3,T4 | P1(1-2-3-4-5-6-7-8-9-10) |
输入:x=5,y=4,z=9 输出:j=1 | T,F | T1,T2,F3,F4 | P2(1-2-3-4-5-6-7-9-10) |
输入:x=4,y=4,z=11 输出:j=2 | F,T | T1,F2,T3,F4 | P3(1-2-7-8-9-10) |
输入:x=2,y=4,z=9 输出:j=0 | F,F | F1,T2,F3,F4 | P4(1-2-7-9-10) |
?
测试类:
package io.shentuzhigang.demo.whitebox;
/**
* @author ShenTuZhiGang
* @version 1.0.0
* @date 2021-04-06 17:03
*/
public class Exp1 {
public Exp1() {
}
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;
}
}
JUnit测试类:
package io.shentuzhigang.demo.whitebox;
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
/**
* @author ShenTuZhiGang
* @version 1.0.0
* @date 2021-04-06 17:02
*/
public class Exp1Test {
private Exp1 exp1;
public Exp1Test() {
exp1 = new Exp1();
}
@Test
public void testDoWork() {
// 语句覆盖测试
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(4, 6, 11),is(1));
assertThat(exp1.doWork(2, 4, 9),is(0));
// 路径覆盖测试
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)应用白盒测试技术设计测试用例
(3)能用Junit实施测试
软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试
cs