软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试

一、流程图

根据需求画出流程图

1、两个判定

M M M

N N N

2、两个条件

M = ( x > 3 ) & & ( z < 10 ) ) M={(x>3) \&\& (z<10))} M=(x>3)&&(z<10))

N = ( x = = 4 ) ∣ ∣ ( y > 5 ) N={(x==4)||(y>5)} N=(x==4)(y>5)

3、四条路径

P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 10 ) : M & & N P1(1-2-4-5-7-8-9-10):M \&\& N P1(124578910):M&&N
P 2 ( 1 − 2 − 4 − 5 − 7 − 9 − 10 ) : M & & ¬ N P2(1-2-4-5-7-9-10):M \&\& \lnot N P2(12457910):M&&¬N
P 3 ( 1 − 2 − 7 − 8 − 9 − 10 ) : ¬ M & & N P3(1-2-7-8-9-10):\lnot M \&\& N P3(1278910):¬M&&N
P 4 ( 1 − 2 − 7 − 9 − 10 ) : ¬ M & & ¬ N P4(1-2-7-9-10):\lnot M \&\& \lnot N P4(127910):¬M&&¬N

4、五条语句

O : k = 0 , j = 0 O:k=0,j=0 O:k=0,j=0
P : k = x ∗ y − 1 , j = s q r t ( k ) P:k=x*y-1, j=sqrt(k) P:k=xy1,j=sqrt(k)
Q : j = x ∗ y + 10 Q:j=x*y+10 Q:j=xy+10
R : j = j % 3 R:j=j\%3 R:j=j%3
S : r e t u r n    j S:return \;j S:returnj

二、设计测试用例

1、语句覆盖

测试用例 覆盖的语句 覆盖路径
输入: x = 4 , y = 4 , z = 2 x=4,y=4,z=2 x=4,y=4,z=2
输出: j = 2 j=2 j=2
k = 0 , j = 0 k=0,j=0 k=0,j=0
k = x ∗ y − 1 , j = s q r t ( k ) k=x*y-1, j=sqrt(k) k=xy1,j=sqrt(k)
j = x ∗ y + 10 j=x*y+10 j=xy+10
j = j % 3 j=j\%3 j=j%3
r e t u r n    j return \;j returnj
P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 10 ) P1(1-2-4-5-7-8-9-10) P1(124578910)

2、判定覆盖

测试用例 判定M的取值 判定N的取值 覆盖路径
输入: x = 4 , y = 4 , z = 2 x=4,y=4,z=2 x=4,y=4,z=2
输出: j = 2 j=2 j=2
T T P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 10 ) P1(1-2-4-5-7-8-9-10) P1(124578910)
输入: x = 2 , y = 2 , z = 5 x=2,y=2,z=5 x=2,y=2,z=5
输出: j = 0 j=0 j=0
F F P 4 ( 1 − 2 − 7 − 9 − 10 ) P4(1-2-7-9-10) P4(127910)

3、条件覆盖

对于 M M M:
x > 3 取 真 时 T 1 , 取 假 时 F 1 x>3取真时T1,取假时F1 x>3T1,F1
z < 10 取 真 时 T 2 , 取 假 时 F 2 z<10取真时T2,取假时F2 z<10T2,F2


对于 N N N:
x = = 4 取 真 时 T 3 , 取 假 时 F 3 x==4取真时T3,取假时F3 x==4T3,F3
y > 5 取 真 时 T 4 , 取 假 时 F 4 y>5取真时T4,取假时F4 y>5T4,F4

测试用例 取值条件 具体取值条件 覆盖路径
输入: x = 4 , y = 4 , z = 2 x=4,y=4,z=2 x=4,y=4,z=2
输出: j = 2 j=2 j=2
T 1 , T 2 , T 3 , T 4 T1,T2,T3,T4 T1,T2,T3,T4 x > 3 , z < 10 , x = = 4 , y > 5 x>3,z<10,x==4,y>5 x>3,z<10,x==4,y>5 P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 10 ) P1(1-2-4-5-7-8-9-10) P1(124578910)
输入: x = 2 , y = 2 , z = 11 x=2,y=2,z=11 x=2,y=2,z=11
输出: j = 0 j=0 j=0
F 1 , F 2 , F 3 , F 4 F1,F2,F3,F4 F1,F2,F3,F4 x < = 3 , z > = 10 , x ! = 4 , y < = 5 x<=3,z>=10,x!=4,y<=5 x<=3,z>=10,x!=4,y<=5 P 4 ( 1 − 2 − 7 − 9 − 10 ) P4(1-2-7-9-10) P4(127910)

4、路径覆盖

编号 覆盖条件取值 判定条件取值 判定条件组合
1 T1,T2 M M M x > 3 , z < 10 x>3,z<10 x>3,z<10
2 T1,F2 ¬ M \lnot M ¬M x > 3 , z > = 10 x>3,z>=10 x>3,z>=10
3 F1,T2 ¬ M \lnot M ¬M x < = 3 , z < 10 x<=3,z<10 x<=3,z<10
4 F1,F2 ¬ M \lnot M ¬M x < = 3 , z > = 10 x<=3,z>=10 x<=3,z>=10
5 T3,T4 N N N x = = 4 , y > 5 x==4,y>5 x==4,y>5
6 T3,F4 N N N x = = 4 , y < = 5 x==4,y<=5 x==4,y<=5
7 F3,T4 N N N x ! = 4 , y > 5 x!=4,y>5 x!=4,y>5
8 F3,F4 ¬ N \lnot N ¬N x ! = 4 , y < = 5 x!=4,y<=5 x!=4,y<=5
测试用例 覆盖条件 覆盖路径 覆盖组合
输入: x = 4 , y = 4 , z = 2 x=4,y=4,z=2 x=4,y=4,z=2
输出: j = 2 j=2 j=2
T 1 , T 2 , T 3 , T 4 T1,T2,T3,T4 T1,T2,T3,T4 P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 10 ) P1(1-2-4-5-7-8-9-10) P1(124578910) 1,5
输入: x = 10 , y = 5 , z = 8 x=10,y=5,z=8 x=10,y=5,z=8
输出: j = 1 j=1 j=1
T 1 , T 2 , F 3 , F 4 T1,T2,F3,F4 T1,T2,F3,F4 P 2 ( 1 − 2 − 4 − 5 − 7 − 9 − 10 ) P2(1-2-4-5-7-9-10) P2(12457910) 1,8
输入: x = 2 , y = 6 , z = 12 x=2,y=6,z=12 x=2,y=6,z=12
输出: j = 1 j=1 j=1
F 1 , F 2 , F 3 , T 4 F1,F2,F3,T4 F1,F2,F3,T4 P 3 ( 1 − 2 − 7 − 8 − 9 − 10 ) P3(1-2-7-8-9-10) P3(1278910) 4,7
输入: x = 2 , y = 2 , z = 11 x=2,y=2,z=11 x=2,y=2,z=11
输出: j = 0 j=0 j=0
F 1 , F 2 , F 3 , F 4 F1,F2,F3,F4 F1,F2,F3,F4 P 4 ( 1 − 2 − 7 − 9 − 10 ) P4(1-2-7-9-10) P4(127910) 4,8

三、编写Java类,调用该方法,并用Junit测试工具编写测试代码


public class Work {

    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;
    }
}

测试类的编写

http://www.huangjihao.com/index.php/archives/886

你可能感兴趣的:(软件测试)