概述
一、流程图
根据需求画出流程图
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(1−2−4−5−7−8−9−10):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(1−2−4−5−7−9−10):M&&¬N
P
3
(
1
−
2
−
7
−
8
−
9
−
10
)
:
¬
M
&
&
N
P3(1-2-7-8-9-10):lnot M && N
P3(1−2−7−8−9−10):¬M&&N
P
4
(
1
−
2
−
7
−
9
−
10
)
:
¬
M
&
&
¬
N
P4(1-2-7-9-10):lnot M && lnot N
P4(1−2−7−9−10):¬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=sqrt(k)
Q
:
j
=
x
∗
y
+
10
Q:j=x*y+10
Q:j=x∗y+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=x∗y−1,j=sqrt(k) j = x ∗ y + 10 j=x*y+10 j=x∗y+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(1−2−4−5−7−8−9−10) |
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(1−2−4−5−7−8−9−10) |
输入:
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(1−2−7−9−10) |
3、条件覆盖
对于
M
M
M:
x
>
3
取
真
时
T
1
,
取
假
时
F
1
x>3取真时T1,取假时F1
x>3取真时T1,取假时F1
z
<
10
取
真
时
T
2
,
取
假
时
F
2
z<10取真时T2,取假时F2
z<10取真时T2,取假时F2
对于
N
N
N:
x
=
=
4
取
真
时
T
3
,
取
假
时
F
3
x==4取真时T3,取假时F3
x==4取真时T3,取假时F3
y
>
5
取
真
时
T
4
,
取
假
时
F
4
y>5取真时T4,取假时F4
y>5取真时T4,取假时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(1−2−4−5−7−8−9−10) |
输入:
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(1−2−7−9−10) |
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(1−2−4−5−7−8−9−10) | 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(1−2−4−5−7−9−10) | 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(1−2−7−8−9−10) | 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(1−2−7−9−10) | 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;
}
}
测试类的编写
import org.junit.*;
import static org.junit.Assert.*;
public class WorkTest {
@BeforeClass
public static void before()
{
System.out.println("Global测试开始");
}
@AfterClass
public static void after()
{
System.out.println("Global测试结束");
}
@Before
public void setUp() throws Exception{
System.out.println("-------------");
System.out.println("一个测试开始了");
}
@After
public void tearDown() throws Exception{
System.out.println("一个测试结束了");
}
//语句覆盖
@Test
public void testStatement(){
System.out.println("正在进行语句覆盖测试");
assertEquals(2,new Work().DoWork(4,4,2));
}
//判定覆盖
@Test
public void testDecision1(){
System.out.println("正在进行判定覆盖测试1");
assertEquals(2,new Work().DoWork(4,4,2));
}
@Test
public void testDecision2(){
System.out.println("正在进行判定覆盖测试2");
assertEquals(0,new Work().DoWork(2,2,5));
}
//条件覆盖
@Test
public void testCondition1(){
System.out.println("正在进行条件覆盖测试1");
assertEquals(2,new Work().DoWork(4,4,2));
}
@Test
public void testCondition2(){
System.out.println("正在进行条件覆盖测试2");
assertEquals(0,new Work().DoWork(2,2,11));
}
//路径覆盖
@Test
public void testPath1(){
System.out.println("正在进行路径覆盖测试1");
assertEquals(2,new Work().DoWork(4,4,2));
}
@Test
public void testPath2(){
System.out.println("正在进行路径覆盖测试2");
//
assertEquals(1,new Work().DoWork(5,10,8));错误的用例设计
assertEquals(1,new Work().DoWork(10,5,7));
}
@Test
public void testPath3(){
System.out.println("正在进行路径覆盖测试3");
assertEquals(1,new Work().DoWork(2,6,12));
}
@Test
public void testPath4(){
System.out.println("正在进行路径覆盖测试4");
assertEquals(0,new Work().DoWork(2,2,11));
}
}
最后
以上就是传统过客为你收集整理的软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试的全部内容,希望文章能够帮你解决软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复