题目:使用白盒测试用例设计方法为下面的程序设计测试用例(基本路径测试)并Junit下测试 程序要求:10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球。 程序设计思路:第一次使用天平分别称5个球,判断轻的一边有假球;拿出轻的5个球,取出其中4个第二次称,两边分别放2个球:如果两边同重,则剩下的球为假球;若两边不同重,拿出轻的两个球称第三次,轻的为假球。(递交材料:测试用例设计电子稿、源程序、Junit测试截图) 测试代码:
package ruanjianceshi0527;
public class lujing {
private static int x[]=new int[10];
public lujing(){}
public void setBWeight(int w[]){
for(int i=0;i<w.length;i++){
x[i]=w[i];
}
}
public String BeginSearch(){
if(x[0]+x[1]+x[2]+x[3]+x[4]<x[5]+x[6]+x[7]+x[8]+x[9]){
if(x[1]+x[2]==x[3]+x[4]){
return "1号是假球";
}
if(x[1]+x[2]<x[3]+x[4]){
if (x[1]<x[2]) {
return "2号是假球";
}else {
return "3号是假球";
}
}else {
if (x[3]<x[4]){
return "4号是假球";
}
else{
return "5号是假球";
}
}
}else {
if(x[6]+x[7]==x[8]+x[9]){
return "6号是假球";
}
if(x[6]+x[7]<x[8]+x[9]) {
if (x[6]<x[7]) {
return "7号是假球";
}else {
return "8号是假球";
}
}else {
if (x[8]<x[9]) {
return "9号是假球";
}else {
return "10号是假球";
}
}
}
}
}
程序流图: 环形复杂度: 控制流图的环形复杂度为V(G)=18?19+2=1
基本路径: 共有10条基本路径,如下 测试用例: 测试代码:
package ruanjianceshi0527;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class lujingtest {
@Before
public void before() throws Exception {
}
@After
public void after() throws Exception {
}
@Test
public void test1() {
lujing obj = new lujing();
int[] input;
int ballIndex;
// 遍历测试各个基本路径
for (int i = 0; i < 10; ++i) {
// 生成用例输入
input = new int[]{10, 10, 10, 10, 10, 10, 10, 10, 10, 10};
input[i] = 9;
obj.setBWeight(input);
// 测试用例输出
ballIndex = i + 1;
assertEquals(ballIndex + "号是假球", obj.BeginSearch());
}
}
}
测试结果:
|