软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试
一、流程图
根据需求画出流程图
1、两个判定
MMM
NNN
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、四条路径
P1(1−2−4−5−7−8−9−10):M&&NP1(1-2-4-5-7-8-9-10):M \&\& NP1(1−2−4−5−7−8−9−10):M&&N
P2(1−2−4−5−7−9−10):M&&¬NP2(1-2-4-5-7-9-10):M \&\& \lnot NP2(1−2−4−5−7−9−10):M&&¬N
P3(1−2−7−8−9−10):¬M&&NP3(1-2-7-8-9-10):\lnot M \&\& NP3(1−2−7−8−9−10):¬M&&N
P4(1−2−7−9−10):¬M&&¬NP4(1-2-7-9-10):\lnot M \&\& \lnot NP4(1−2−7−9−10):¬M&&¬N
4、五条语句
O:k=0,j=0O:k=0,j=0O:k=0,j=0
P:k=x∗y−1,j=sqrt(k)P:k=x*y-1, j=sqrt(k)P:k=x∗y−1,j=sqrt(k)
Q:j=x∗y+10Q:j=x*y+10Q:j=x∗y+10
R:j=j%3R:j=j\%3R:j=j%3
S:returnjS:return \;jS:returnj
二、设计测试用例
1、语句覆盖
测试用例 | 覆盖的语句 | 覆盖路径 |
---|---|---|
输入:x=4,y=4,z=2x=4,y=4,z=2x=4,y=4,z=2 输出:j=2j=2j=2 |
k=0,j=0k=0,j=0k=0,j=0 k=x∗y−1,j=sqrt(k)k=x*y-1, j=sqrt(k)k=x∗y−1,j=sqrt(k) j=x∗y+10j=x*y+10j=x∗y+10 j=j%3j=j\%3j=j%3 returnjreturn \;jreturnj |
P1(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=2x=4,y=4,z=2x=4,y=4,z=2 输出:j=2j=2j=2 |
T | T | P1(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=5x=2,y=2,z=5x=2,y=2,z=5 输出:j=0j=0j=0 |
F | F | P4(1−2−7−9−10)P4(1-2-7-9-10)P4(1−2−7−9−10) |
3、条件覆盖
对于MMM:
x>3取真时T1,取假时F1x>3取真时T1,取假时F1x>3取真时T1,取假时F1
z<10取真时T2,取假时F2z<10取真时T2,取假时F2z<10取真时T2,取假时F2
对于NNN:
x==4取真时T3,取假时F3x==4取真时T3,取假时F3x==4取真时T3,取假时F3
y>5取真时T4,取假时F4y>5取真时T4,取假时F4y>5取真时T4,取假时F4
测试用例 | 取值条件 | 具体取值条件 | 覆盖路径 |
---|---|---|---|
输入:x=4,y=4,z=2x=4,y=4,z=2x=4,y=4,z=2 输出:j=2j=2j=2 |
T1,T2,T3,T4T1,T2,T3,T4T1,T2,T3,T4 | x>3,z<10,x==4,y>5x>3,z<10,x==4,y>5x>3,z<10,x==4,y>5 | P1(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=11x=2,y=2,z=11x=2,y=2,z=11 输出:j=0j=0j=0 |
F1,F2,F3,F4F1,F2,F3,F4F1,F2,F3,F4 | x<=3,z>=10,x!=4,y<=5x<=3,z>=10,x!=4,y<=5x<=3,z>=10,x!=4,y<=5 | P4(1−2−7−9−10)P4(1-2-7-9-10)P4(1−2−7−9−10) |
4、路径覆盖
编号 | 覆盖条件取值 | 判定条件取值 | 判定条件组合 |
---|---|---|---|
1 | T1,T2 | MMM | x>3,z<10x>3,z<10x>3,z<10 |
2 | T1,F2 | ¬M\lnot M¬M | x>3,z>=10x>3,z>=10x>3,z>=10 |
3 | F1,T2 | ¬M\lnot M¬M | x<=3,z<10x<=3,z<10x<=3,z<10 |
4 | F1,F2 | ¬M\lnot M¬M | x<=3,z>=10x<=3,z>=10x<=3,z>=10 |
5 | T3,T4 | NNN | x==4,y>5x==4,y>5x==4,y>5 |
6 | T3,F4 | NNN | x==4,y<=5x==4,y<=5x==4,y<=5 |
7 | F3,T4 | NNN | x!=4,y>5x!=4,y>5x!=4,y>5 |
8 | F3,F4 | ¬N\lnot N¬N | x!=4,y<=5x!=4,y<=5x!=4,y<=5 |
测试用例 | 覆盖条件 | 覆盖路径 | 覆盖组合 |
---|---|---|---|
输入:x=4,y=4,z=2x=4,y=4,z=2x=4,y=4,z=2 输出:j=2j=2j=2 |
T1,T2,T3,T4T1,T2,T3,T4T1,T2,T3,T4 | P1(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=8x=10,y=5,z=8x=10,y=5,z=8 输出:j=1j=1j=1 |
T1,T2,F3,F4T1,T2,F3,F4T1,T2,F3,F4 | P2(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=12x=2,y=6,z=12x=2,y=6,z=12 输出:j=1j=1j=1 |
F1,F2,F3,T4F1,F2,F3,T4F1,F2,F3,T4 | P3(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=11x=2,y=2,z=11x=2,y=2,z=11 输出:j=0j=0j=0 |
F1,F2,F3,F4F1,F2,F3,F4F1,F2,F3,F4 | P4(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 {@BeforeClasspublic static void before(){System.out.println("Global测试开始");}@AfterClasspublic static void after(){System.out.println("Global测试结束");}@Beforepublic void setUp() throws Exception{System.out.println("-------------");System.out.println("一个测试开始了");}@Afterpublic void tearDown() throws Exception{System.out.println("一个测试结束了");}//语句覆盖@Testpublic void testStatement(){System.out.println("正在进行语句覆盖测试");assertEquals(2,new Work().DoWork(4,4,2));}//判定覆盖@Testpublic void testDecision1(){System.out.println("正在进行判定覆盖测试1");assertEquals(2,new Work().DoWork(4,4,2));}@Testpublic void testDecision2(){System.out.println("正在进行判定覆盖测试2");assertEquals(0,new Work().DoWork(2,2,5));}//条件覆盖@Testpublic void testCondition1(){System.out.println("正在进行条件覆盖测试1");assertEquals(2,new Work().DoWork(4,4,2));}@Testpublic void testCondition2(){System.out.println("正在进行条件覆盖测试2");assertEquals(0,new Work().DoWork(2,2,11));}//路径覆盖@Testpublic void testPath1(){System.out.println("正在进行路径覆盖测试1");assertEquals(2,new Work().DoWork(4,4,2));}@Testpublic void testPath2(){System.out.println("正在进行路径覆盖测试2");
// assertEquals(1,new Work().DoWork(5,10,8));错误的用例设计assertEquals(1,new Work().DoWork(10,5,7));}@Testpublic void testPath3(){System.out.println("正在进行路径覆盖测试3");assertEquals(1,new Work().DoWork(2,6,12));}@Testpublic void testPath4(){System.out.println("正在进行路径覆盖测试4");assertEquals(0,new Work().DoWork(2,2,11));}
}
软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试相关推荐
- 软件测试实验一 语句和判定覆盖测试设计
一.实验目的 1.巩固所学的语句和判定覆盖测试方法: 2.提高运用语句覆盖和判定覆盖测试方法的能力. 二.实验前提 1.掌握语句覆盖和判定覆盖的基本方法.概念: 2. 熟悉程序语言的逻辑结构与基础知识 ...
- 软件测试条件覆盖怎么画流程图,软件测试流程图白盒测试条件覆盖路径覆盖.doc...
软件测试流程图白盒测试条件覆盖路径覆盖.doc 上传人:ms****95 文档编号:43341421 上传时间:2020-01-21 格式:DOC 页数:7 大小:235.50KB 下载提示(请认真阅 ...
- 软件测试实验三 修正条件/判定覆盖测试设计
一.实验目的 1. 巩固所学的修正条件/判定覆盖测试方法: 2.提高运用语修正条件/判定覆盖测试方法的能力. 二.实验前提 1. 掌握逻辑覆盖的基本方法.概念: 2.熟悉程序语言的逻辑结构与基础知识: ...
- 软件测试-工作流程(需求分析评审、测试计划、测试用例、用例评审、执行测试、跟踪定位bug、测试报告、缺陷报告)
一.需求分析.评审 (1)需求分析 对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么. ①如何做需求分析? 通读需求,对需求有个大致的了解,比如: ...
- ssl1341-最小路径覆盖【最大匹配,最小路径覆盖,图论】
正题 大意 给一个无向图,求最少需要多少条路径可以连接所有点. 解题思路 一个公式就好了 最小路径覆盖数=最大匹配数 代码 #include<cstdio> #include<cst ...
- 详解软件测试中白盒测试基本概念及四种白盒测试方法以及六种逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)
在这篇文章中,我们将讲解白盒测试的基本概念,以及四大常用的白盒测试方法. 一.白盒测试基本概念 1.白盒测试的定义 白盒测试又称为结构测试或逻辑驱动测试,它是把测试对象看成一个透明的盒子,它允许测试人 ...
- python多个条件组合覆盖_白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖...
·昂贵 ·无法检测代码中遗漏的路径和数据敏感性错误 ·不验证规格的正确性 六种覆盖方法 首先为了下文的举例描述方便,这里先给出一张程序流程图.(本文以1995年软件设计师考试的一道考试题目为例,图中红 ...
- 控制流测试 (语句覆盖、分支覆盖、判定覆盖、路径覆盖) 与条件测试
控制流测试 控制流测试 (Control Flow Testing):是一种在考虑测试对象的控制流情况下导出测试用例的测试方法,并且借助于控制流图能评估测试的完整性(覆盖率). 原则 控制流图是一个带 ...
- 语句覆盖、分支覆盖、谓词测试和路径覆盖
目录 语句覆盖 分支覆盖(判定覆盖) 谓词测试 原子谓词覆盖(条件覆盖) 分支-谓词覆盖(判定条件覆盖或分支条件覆盖) 复合谓词覆盖(条件组合覆盖) 路径覆盖 包含关系 语句覆盖 "语句覆盖 ...
- 白盒测试各种“覆盖”间的拓扑关系及白盒用例常用要求
SC为语句覆盖 DC为分支覆盖/判定覆盖 CC为条件覆盖 CDC为判定-条件覆盖 MCC为条件组合覆盖 MC/DC修正条件/判定覆盖 BPC为基本路径覆盖
最新文章
- 数据不平衡(class_weight、评估方法、上采样、下采样)、详解及实战
- 【有福如林】OpenFlashChart C#flash图形控件的使用
- 阿里java高级工程师面试100题(建议收藏)
- mysql查询语句,int类型加引号居然也能查
- php curl keepalive,HTTPKeepAlive,开启还是关闭
- pycharm忽略whitespace警告
- 计算机管理usb出现问号,在Windows操作系统的设备管理器中的多个设备名上有问号...
- 禁用win10触摸屏手势_怎样禁用、启用Win10平板边缘滑动手势
- cpp设计并实现大整数
- 笔记本计算机在桌面显示器,解决办法:笔记本电脑如何关闭屏幕,但仍可以使用?...
- idea2020无限重置
- Archlinux安装yaourt
- AI换脸-简单换脸、人脸对齐、关键点定位与画图
- 修改游戏服务器的数据,修改游戏服务器数据的教程
- 二叉树面试题:前中序求后序、中后序求前序
- java使用set去重lit集合集合去重字符串集合去重
- Hadoop书籍介绍
- 琼瑶琨琚 中国古代佛教陶瓷塑像赏读
- Avoid mutating a prop directly since the value will be overwritten whenever the parent component...
- 互联网公司发员工期权靠谱吗?
热门文章
- 点互信息PMI(Pointwise Mutual Information)
- 百度地图api-个性化地图-主题更换
- hdu 6184 三元环数目
- Python爬虫实战 | 人民网爬虫 根据关键词筛选新闻文章
- 攻防世界,Reverse:logmein
- 西安电子科技大学计算机学院评论,西电高琳教授团队在Science子刊及领域著名期刊发表成果...
- 三菱机床的程序传输(DNC)支持上传到CF卡
- python 城市地图_Python查询一个城市的谷歌地图的经度和纬度
- 编写存储过程批量造数据
- nii、npz、npy、dcm、mhd 的数据互转处理,及多目标分割处理汇总