一、流程图
根据需求画出流程图
1、两个判定
M
M
M
N
N
N
2、两个条件
M
=
(
x
>
3
)
&
&
(
z
<
10
)
)
M={(x>3) \&\& (z<10))}
M = ( x > 3 ) & & ( z < 1 0 ) )
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
P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 1 0 ) : M & & N
P
2
(
1
−
2
−
4
−
5
−
7
−
9
−
10
)
:
M
&
&
¬
N
P2(1-2-4-5-7-9-10):M \&\& \lnot N
P 2 ( 1 − 2 − 4 − 5 − 7 − 9 − 1 0 ) : M & & ¬ N
P
3
(
1
−
2
−
7
−
8
−
9
−
10
)
:
¬
M
&
&
N
P3(1-2-7-8-9-10):\lnot M \&\& N
P 3 ( 1 − 2 − 7 − 8 − 9 − 1 0 ) : ¬ M & & N
P
4
(
1
−
2
−
7
−
9
−
10
)
:
¬
M
&
&
¬
N
P4(1-2-7-9-10):\lnot M \&\& \lnot N
P 4 ( 1 − 2 − 7 − 9 − 1 0 ) : ¬ 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 = x ∗ y − 1 , j = s q r t ( k )
Q
:
j
=
x
∗
y
+
10
Q:j=x*y+10
Q : j = x ∗ y + 1 0
R
:
j
=
j
%
3
R:j=j\%3
R : j = j % 3
S
:
r
e
t
u
r
n
j
S:return \;j
S : r e t u r n j
二、设计测试用例
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 = x ∗ y − 1 , j = s q r t ( k )
j
=
x
∗
y
+
10
j=x*y+10
j = x ∗ y + 1 0
j
=
j
%
3
j=j\%3
j = j % 3
r
e
t
u
r
n
j
return \;j
r e t u r n j
P
1
(
1
−
2
−
4
−
5
−
7
−
8
−
9
−
10
)
P1(1-2-4-5-7-8-9-10)
P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 1 0 )
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)
P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 1 0 )
输入:
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)
P 4 ( 1 − 2 − 7 − 9 − 1 0 )
3、条件覆盖
对于
M
M
M :
x
>
3
取
真
时
T
1
,
取
假
时
F
1
x>3取真时T1,取假时F1
x > 3 取 真 时 T 1 , 取 假 时 F 1
z
<
10
取
真
时
T
2
,
取
假
时
F
2
z<10取真时T2,取假时F2
z < 1 0 取 真 时 T 2 , 取 假 时 F 2
对于
N
N
N :
x
=
=
4
取
真
时
T
3
,
取
假
时
F
3
x==4取真时T3,取假时F3
x = = 4 取 真 时 T 3 , 取 假 时 F 3
y
>
5
取
真
时
T
4
,
取
假
时
F
4
y>5取真时T4,取假时F4
y > 5 取 真 时 T 4 , 取 假 时 F 4
测试用例
取值条件
具体取值条件
覆盖路径
输入:
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
T 1 , T 2 , T 3 , T 4
x
>
3
,
z
<
10
,
x
=
=
4
,
y
>
5
x>3,z<10,x==4,y>5
x > 3 , z < 1 0 , x = = 4 , y > 5
P
1
(
1
−
2
−
4
−
5
−
7
−
8
−
9
−
10
)
P1(1-2-4-5-7-8-9-10)
P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 1 0 )
输入:
x
=
2
,
y
=
2
,
z
=
11
x=2,y=2,z=11
x = 2 , y = 2 , z = 1 1 输出:
j
=
0
j=0
j = 0
F
1
,
F
2
,
F
3
,
F
4
F1,F2,F3,F4
F 1 , F 2 , F 3 , F 4
x
<
=
3
,
z
>
=
10
,
x
!
=
4
,
y
<
=
5
x<=3,z>=10,x!=4,y<=5
x < = 3 , z > = 1 0 , x ! = 4 , y < = 5
P
4
(
1
−
2
−
7
−
9
−
10
)
P4(1-2-7-9-10)
P 4 ( 1 − 2 − 7 − 9 − 1 0 )
4、路径覆盖
编号
覆盖条件取值
判定条件取值
判定条件组合
1
T1,T2
M
M
M
x
>
3
,
z
<
10
x>3,z<10
x > 3 , z < 1 0
2
T1,F2
¬
M
\lnot M
¬ M
x
>
3
,
z
>
=
10
x>3,z>=10
x > 3 , z > = 1 0
3
F1,T2
¬
M
\lnot M
¬ M
x
<
=
3
,
z
<
10
x<=3,z<10
x < = 3 , z < 1 0
4
F1,F2
¬
M
\lnot M
¬ M
x
<
=
3
,
z
>
=
10
x<=3,z>=10
x < = 3 , z > = 1 0
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
T 1 , T 2 , T 3 , T 4
P
1
(
1
−
2
−
4
−
5
−
7
−
8
−
9
−
10
)
P1(1-2-4-5-7-8-9-10)
P 1 ( 1 − 2 − 4 − 5 − 7 − 8 − 9 − 1 0 )
1,5
输入:
x
=
10
,
y
=
5
,
z
=
8
x=10,y=5,z=8
x = 1 0 , y = 5 , z = 8 输出:
j
=
1
j=1
j = 1
T
1
,
T
2
,
F
3
,
F
4
T1,T2,F3,F4
T 1 , T 2 , F 3 , F 4
P
2
(
1
−
2
−
4
−
5
−
7
−
9
−
10
)
P2(1-2-4-5-7-9-10)
P 2 ( 1 − 2 − 4 − 5 − 7 − 9 − 1 0 )
1,8
输入:
x
=
2
,
y
=
6
,
z
=
12
x=2,y=6,z=12
x = 2 , y = 6 , z = 1 2 输出:
j
=
1
j=1
j = 1
F
1
,
F
2
,
F
3
,
T
4
F1,F2,F3,T4
F 1 , F 2 , F 3 , T 4
P
3
(
1
−
2
−
7
−
8
−
9
−
10
)
P3(1-2-7-8-9-10)
P 3 ( 1 − 2 − 7 − 8 − 9 − 1 0 )
4,7
输入:
x
=
2
,
y
=
2
,
z
=
11
x=2,y=2,z=11
x = 2 , y = 2 , z = 1 1 输出:
j
=
0
j=0
j = 0
F
1
,
F
2
,
F
3
,
F
4
F1,F2,F3,F4
F 1 , F 2 , F 3 , F 4
P
4
(
1
−
2
−
7
−
9
−
10
)
P4(1-2-7-9-10)
P 4 ( 1 − 2 − 7 − 9 − 1 0 )
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