欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

白盒测试案例分析(在十个球中找一个假球),并在Junit下进行测试

程序员文章站 2024-03-15 18:24:06
...

题目

使用白盒测试用例设计方法为下面的程序设计测试用例(基本路径测试)并Junit下测试:程序要求:10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球。程序设计思路:第一次使用天平分别称5个球,判断轻的一边有假球;拿出轻的5个球,取出其中4个第二次称,两边分别放2个球:如果两边同重,则剩下的球为假球;若两边不同重,拿出轻的两个球称第三次,轻的为假球。

待测程序代码

在这里插入代码片
public class SearchBall {
    private static int x[]=new int[10];
    public SearchBall(){}
    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号是假球";
                }
            }
        }
     }
}

测试用例的编写

画出流程图如下:
条件:
A:x[0]+x[1]+x[2]+x[3]+x[4]<x[5]+x[6]+x[7]+x[8]+x[9]
B:x[1]+x[2]==x[3]+x[4]
C:x[1]+x[2]<x[3]+x[4]
D:x[1]<x[2]
E:x[3]<x[4]
F:x[6]+x[7]==x[8]+x[9]
G:x[6]+x[7]<x[8]+x[9]
H:x[6]<x[7]
I:x[8]<x[9]
白盒测试案例分析(在十个球中找一个假球),并在Junit下进行测试
流图:
白盒测试案例分析(在十个球中找一个假球),并在Junit下进行测试
测试用例:

用例输入 期待输出 覆盖路径
{6,8,8,8,8,8,8,8,8,8} 1号是假球 1-2-3
{8,6,8,8,8,8,8,8,8,8} 2号是假球 1-2-4-5-7
{8,8,6,8,8,8,8,8,8,8} 3号是假球 1-2-4-5-8
{8,8,8,6,8,8,8,8,8,8} 4号是假球 1-2-4-6-9
{8,8,8,8,6,8,8,8,8,8} 5号是假球 1-2-4-6-10
{8,8,8,8,8,6,8,8,8,8} 6号是假球 1-11-12
{8,8,8,8,8,8,6,8,8,8} 7号是假球 1-11-13-14-16
{8,8,8,8,8,8,8,6,8,8} 8号是假球 1-11-13-14-17
{8,8,8,8,8,8,8,8,6,8} 9号是假球 1-11-13-15-18
{8,8,8,8,8,8,8,8,8,6} 10号是假球 1-11-13-15-19

测试程序设计

package com.softtest.baihe.test;

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.softtest.baihe.SearchBall;
class SearchBallTest {
    @BeforeEach
    void setUp() throws Exception {
    }
    
    @Test
    void testBeginSearch1() {
        SearchBall ball=new SearchBall();
        int []w= {6,8,8,8,8,8,8,8,8,8};
        ball.setBWeight(w);
        assertEquals("1号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch2() {
        SearchBall ball=new SearchBall();
        int []w= {8,6,8,8,8,8,8,8,8,8};
        ball.setBWeight(w);
        assertEquals("2号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch3() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,6,8,8,8,8,8,8,8};
        ball.setBWeight(w);
        assertEquals("3号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch4() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,6,8,8,8,8,8,8};
        ball.setBWeight(w);
        assertEquals("4号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch5() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,8,6,8,8,8,8,8};
        ball.setBWeight(w);
        assertEquals("5号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch6() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,8,8,6,8,8,8,8};
        ball.setBWeight(w);
        assertEquals("6号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch7() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,8,8,8,6,8,8,8};
        ball.setBWeight(w);
        assertEquals("7号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch8() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,8,8,8,8,6,8,8};
        ball.setBWeight(w);
        assertEquals("8号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch9() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,8,8,8,8,8,6,8};
        ball.setBWeight(w);
        assertEquals("9号是假球",ball.BeginSearch());
    }
    @Test
    void testBeginSearch10() {
        SearchBall ball=new SearchBall();
        int []w= {8,8,8,8,8,8,8,8,8,6};
        ball.setBWeight(w);
        assertEquals("10号是假球",ball.BeginSearch());
    }

测试结果

白盒测试案例分析(在十个球中找一个假球),并在Junit下进行测试

改进

根据测试用例表可以看出10个测试用例很有规律,所以可以在测试程序中用一个循环,就不用再连续写10个test函数了。

class SearchBallTest {

	@BeforeEach
	void setUp() throws Exception {
	}
	
	@Test
	void testBeginSearch1() {
        SearchBall ball=new SearchBall();
        int w[];
        //用循环将各个路径进行遍历测试
        for(int i=0;i<10;i++){
            w=new int[]{8,8,8,8,8,8,8,8,8,8};
            w[i]=6;
            ball.setBWeight(w);
            int a=i+1;
            assertEquals(a+"号是假球",ball.BeginSearch());
        }
	}
	
}

相关标签: 软件测试 junit