一、目的和要求
(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=xy+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、掌握了软件测试中的白盒测试