软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法
文章目录
- 1 静态
- 2 动态
- 2.1 逻辑覆盖
- 2.1.1 语句覆盖
- 2.1.2 判定覆盖
- 2.1.3 条件覆盖
- 2.1.4 判定条件覆盖
- 2.1.5 条件组合覆盖
- 2.1.6 路径覆盖
- 2.2 基本路径测试法(重点)
- 小结
白盒设计方法分为静态和动态。
1 静态
静态的白盒测试方法有桌面检查、代码审查、代码走查和代码扫描工具。
2 动态
动态的白盒测试方法有逻辑覆盖法和基本路径测试法。
2.1 逻辑覆盖
逻辑覆盖法有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。
例1
int a=0;
public class E01(int x,int y,int m){if(x>&&y>0){a=x+y;//语句块1}else{a=x-y;//语句块2}if(m<0){a=m;//语句块3}return a;//语句块4
}
将上述程序画出流程图,如下:
2.1.1 语句覆盖
语句覆盖,就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。度量被测代码中每个可执行语句是否被执行到了。
语句覆盖标准最弱,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。
语句覆盖率=可执行的语句总数/被评价到的语句数量 x 100%
将例1进行语句覆盖,写出测试用例如下:
数据 | 语句 |
---|---|
x=1,y=1,m=2 | 1,4 |
x=-1,y=-1,m=-2 | 2,3,4 |
若将语句块1改为if(x>0||y>0)
,语句覆盖还是覆盖成功,不符合测试需求。因为语句覆盖不能准确的判断运算中的逻辑关系错误。(语句覆盖的缺点)
2.1.2 判定覆盖
定义:判定覆盖使设计的测试用例保证程序中每个判断的每个取值分支(ture or false)至少经历一次。
【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样分支(判定)覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
【缺点】:往往大部分的分支(判定)语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。
将例1进行判定覆盖,写出测试用例如下:
P1为“x>0&&y>0”判定,P2为“m<0”判定
P1 | P2 | 用例 |
---|---|---|
T | F | x=1,y=1,m=1 |
F | T | x=-1,y=-1,m=1 |
F | F | x=-1,y=-1,m=-1 |
T | T | x=1,y=1,m=-1 |
只要满足了判定覆盖标准就一定满足语句覆盖标准。
判定覆盖会忽略条件中取或(or)的情况。
若将语句块1改为if(x>0||y>0)
,判定覆盖还是覆盖成功,不符合测试需求。
2.1.3 条件覆盖
定义:设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。
回头看例1的流程图,判定条件定义如下:
x>0&&y>0判定记为:P1
m<0判定记为:P2
x>0记为:C1
y>0记为:C2
m<0记为:C3
测试用例设计如下:
C1 | C2 | C3 | P1 | P2 | 用例 | 路径 |
---|---|---|---|---|---|---|
T | F | T | F | T | x=1,y=-1,m=-1 | acd |
F | T | F | F | F | x=-1,y=1,m=-1 | ace |
条件覆盖比判定覆盖,增加了对判定中所有条件的测试。
但条件覆盖并不能保证判定覆盖。例如:P1为真,没有覆盖。
2.1.4 判定条件覆盖
定义:设计测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值(真假)也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。
判定条件覆盖率=每个判断本身的判定结果(真假)至少满足一次/判定结果的总数+条件结果的总数
例1代码中有2个判定,条件3个。所以,判定结果为2* 2(true,false)=4个,条件结果3*2(true,false)=6个。
设计测试用例执行3个判定结果,5个条件结果,判定条件覆盖率为:(3+5)/(4+6)=80%
将例1进行判定条件覆盖,写出测试用例如下:
C1 | C2 | C3 | P1 | P2 | 用例 | 路径 |
---|---|---|---|---|---|---|
T | T | F | T | F | x=1,y=1,m=1 | abe |
F | F | T | F | T | x=-1,y=-1,m=-1 | acd |
满足判定条件覆盖标准,一定能够满足条件覆盖、判定覆盖和语句覆盖。
判定条件覆盖会忽略条件中取或(or)的情况。
2.1.5 条件组合覆盖
定义
判定中条件的各种组合都至少被执行一次。
特点
(1)满足条件组合覆盖的用例一定满足语句覆盖、条件覆盖、判定覆盖和判定覆盖。
(2)条件组合覆盖没有考虑各判定结果(真或假)组合情况,不满足路径覆盖
(3)条件组合数量大,设计测试用例的时间花费较多。
例1使用条件组合覆盖,测试用例设计如下:
C1 | C2 | C3 | P1 | P2 | 用例 | 路径 |
---|---|---|---|---|---|---|
T | T | T | T | T | x=1,y=1,m=-1 | abd |
T | F | T | F | T | x=1,y=-1,m=-1 | acd |
F | T | T | F | T | x=-1,y=1,m=-1 | acd |
F | F | T | F | T | x=-1,y=-1,m=-1 | acd |
T | T | F | T | F | x=1,y=1,m=1 | abe |
T | F | F | F | F | x=1, y=-1,m=1 | ace |
F | T | F | F | F | x=-1,y=1,m=1 | ace |
F | F | F | F | F | x=-1,y=-1,m=1 | ace |
2.1.6 路径覆盖
定义
使程序的每条可能路径都至少执行一次。
特点
路径覆盖可以对程序进行彻底的测试,比前面五种覆盖面都广。
C1 | C2 | C3 | P1 | P2 | 用例 | 路径 |
---|---|---|---|---|---|---|
T | T | T | T | T | x=1,y=1,m=-1 | abd |
T | T | F | T | F | x=1,y=1,m=1 | abe |
T | F | T | F | T | x=1,y=-1,m=-1 | acd |
F | F | F | F | F | x=-1,y=-1,m=1 | ace |
2.2 基本路径测试法(重点)
定义
在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
步骤
第一步,根据代码画出程序控制流图;
第二步,计算程序的环路复杂度;
第三步,导出可执行路径;
第四步,设计测试用例。
void Sort(int a,int b){int x=0;int y=0;while(a-- >0){ //将此判断记为P1if(0==b) //将此判断记为P2x=y+2;break; //将此语句记为s1elseif(1==b) //将此判断记为P3x=y+10; //将此语句记为s2elsex=y+20; //将此语句记为s3}
}
第一步,控制流图,如下图:
第二步,计算程序环路复杂度
方法有三种:
流图中区域的数量对应于环型的复杂性。
给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中节点的数量。技巧:边数——数箭头,结点——数判断框和语句
边数10,结点8,所以V(G)=10-8+2。
给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是上图中判定节点的数量。V(G)=3+1
用环路复杂度验证测试用例是否覆盖全了。
第三步,导出可执行路径
回头看例子的程序流程图,此例子可导出路径为:
路径1:P1-退出程序
路径2:P1-P2-S1-退出程序
路径3:P1-P2-P3-S2-退出P3-P1-退出程序
路径4:P1-P2-P3-S3-退出P3-P1-退出程序
第四步,设计测试用例
测试数据 | 覆盖路径 |
---|---|
a=0 | 路径1 |
a=1,b=0 | 路径2 |
a=1,b=1 | 路径3 |
a=1,b=2 | 路径4 |
小结
白盒测试主要应用于单元测试阶段。白盒设计用例一般使用基本路径测试,重点模块使用多个覆盖率标准。
软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法相关推荐
- 软件测试 | 等价类用例设计方法及演示
常见的用例设计方法包括:等价类.边界值.因果图.判定表.状态迁移.场景分析法.正交实验法.下面是等价类用例设计方法. 1为什么需要使用等价类方法 如果我们输入的数据是一个很大范围数据时,我们测试时会出 ...
- 白盒测试 | 用例设计方法之判定覆盖
判定覆盖也被成为分支覆盖(Branch Coverage)是设计足够多的测试用例,使得程序中的每一个判断至少获得一次"真"和一次"假",即使得程序流程图中的每一 ...
- 白盒测试 | 用例设计方法之条件覆盖
条件覆盖,程序各判定中的每个条件获得各种可能的取值至少满足一次即可,不考虑路径的覆盖. 上图中有两个判定表达式,每个判定表达式中有两个条件,为了做到条件覆盖,第一个判断的所有条件的可能取值情况是A&g ...
- 白盒测试 | 用例设计方法之语句覆盖
语句覆盖,顾名思义就是针对代码语句的嘛.它的含义是我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次.通常语句覆盖被认为是"最弱的覆盖",原因是它仅仅考虑对代码中的执行语 ...
- 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择
文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...
- 软件测试流程及主要用例设计方法
软件测试流程及主要用例设计方法 测试新手人门,首先要掌握测试的流程和实际运作项目流程和基础的用例设计方法. 掌握测试和项目流程是了解研发过程中测试的主要工作:掌握最主要的用例设计方法就是掌握测试岗位最 ...
- 软件测试--黑盒测试用例、测试步骤设计方法(正交实验法、功能图法、其他用例设计方法)
黑盒测试用例设计(三) 正交实验法 正交表:一种特制的表,一般的正交表记为Ln(mk) m代表水平数,k代表因素数,n是需要进行实验的个数.这三个数没有任何数学关系. 仅适用于每个因素的水平数都相同的 ...
- 用例设计方法及其覆盖率
用例设计方法及其覆盖率 ---<软件测试:一个软件工艺师的方法>读书笔记 2018-01-27 1 基本概念 错误(error):同义词过失(mistake),编程时的错误成为bug. 故 ...
- 软件测试方法——黑盒测试九大用例设计方法
笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 笔者原创,文章转载需注明,如果喜欢请点赞+关注,感谢支持! 导读:面试和工作必备的九大黑盒软件测试方法. 目 ...
- 年月日软件测试用例的设计,实验三日期题白盒测试用例设计.doc
实验三日期题白盒测试用例设计 日期问题白盒测试用例的设计(实验时间2012.3.21) 一.实验目的 1.熟练掌握如何运用基路径测试方法进行测试用例设计. 二.实验内容 1.题目 前一日函数PreDa ...
最新文章
- 刚搭建的linux环境的基本优化以及优化脚本---菜鸟初写
- JavaScript 流程控制语句
- python用psf函数_python学习之-类的内置函数
- php视图查询的优势,ThinkPHP视图查询详解
- linux-压缩与解压缩
- 仿微信选取图片发表朋友圈功能
- 无人出价!贾跃亭所持2210万股乐视网股票首次拍卖流拍
- 数据结构(严蔚敏 第二版)绪论部分中关于算法的相关知识
- 中国铁路车次编号规则
- matlab 三阶段dea模型,三阶段DEA模型SFA二阶段剔除过程
- JDK 的下载与安装(非常详细!)
- python实现误差逆传播算法
- [Android]自定义锁屏并屏蔽按键
- macOS 升级12.6后 Electron 应用闪退
- 【兴趣】QQ音乐VS网易云音乐竞品分析
- IEEE会议投稿资料汇总http://cadcg2015.nwpu.edu.cn/index.htm
- 【毕业设计】基于STM32及OpenMV的云台追踪装置
- 骗子改电脑配置信息兜售垃圾,怕上当进来学习一下
- Genome Biology + 微生物组学研究,2022『热门研究与论文发表系列研讨会』 第六期即将开讲!...
- 黑群晖 升级 失联 拯救方案(不丢数据)
热门文章
- Android热修复之阿里Sophix的使用详解
- 图神经网络的困境,用微分几何和代数拓扑解决
- 2022聚合工艺复训题库及在线模拟考试
- 华为鸿蒙deveco studio编译时提示Browserslist: caniuse-lite is outdated的解决办法
- Transformations in signals and systems DSP
- realtek 8111E 网卡 修改MAC 地址
- 2020年中青杯数学建模B题思路
- mysql卸载安装pxc_PXC 5.7.14 安装部署
- java调用fudannlp_利用FudanNLP進行新聞關鍵詞提取 | 學步園
- 决策树应用实例③——银行借贷模型