我是靠谱客的博主 传统过客,最近开发中收集的这篇文章主要介绍软件测试实验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
TT 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
FF 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、路径覆盖

编号覆盖条件取值判定条件取值判定条件组合
1T1,T2 M M M x > 3 , z < 10 x>3,z<10 x>3,z<10
2T1,F2 ¬ M lnot M ¬M x > 3 , z > = 10 x>3,z>=10 x>3,z>=10
3F1,T2 ¬ M lnot M ¬M x < = 3 , z < 10 x<=3,z<10 x<=3,z<10
4F1,F2 ¬ M lnot M ¬M x < = 3 , z > = 10 x<=3,z>=10 x<=3,z>=10
5T3,T4 N N N x = = 4 , y > 5 x==4,y>5 x==4,y>5
6T3,F4 N N N x = = 4 , y < = 5 x==4,y<=5 x==4,y<=5
7F3,T4 N N N x ! = 4 , y > 5 x!=4,y>5 x!=4,y>5
8F3,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;
}
}

测试类的编写

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测试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部