Windows编程开发中的语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖

news/2024/10/30 15:26:21/

 我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows编程开发中的语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖。

首先你要明白一点:

逻辑覆盖率:语句覆盖<条件覆盖<判定覆盖<条件-判定覆盖<组合覆盖<路径覆盖

最差的是语句覆盖,最好的是路路径覆盖,先把这个记下。

语句覆盖

基本思想:设计用例,使程序中的每个可执行语句至少执行一次。
每个可执行语句:每个语句,那么下图中执行为:1->2->3->4

 

优点:可以很直观的从源代码获得用例,无需细分每条判定表达式

缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的,如在多分支的逻辑运算中无法全面考虑。语句覆盖是最弱的逻辑覆盖

条件覆盖

定义

 

基本思想:设计用例,使每个判断中的每个条件的可能取值至少满足一次

 

重点是判断语句的条件(针对条件语句)

判断表达式1:
设条件 a>0 为真 记T1
            假 记F1
条件 b>0   为真 记T2
            假 记F2 
            
判断表达式3:
设条件 a>1 为真 记T3
            假 记F3
条件 c>1   为真 记T4
            假 记F4        

覆盖条件:

T1,F2,T3,F4
F1,T2,F3,T4

我们用条件覆盖的思想就是覆盖T1,T2,T3,T4,F1,F2,F3,F4

优点:增加了对条件判断情况的测试,增加了测试路径
缺点:条件覆盖不一定包含判定覆盖,例如,上面的测试用例中就不包含判断1的T分支,判断3的F分支。条件覆盖只能保证每个条件语句取值至少有一次为真,而不考虑所有的判定结果
 

判定覆盖

定义

 

基本思想:设计用例,使得程序中的每一个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足

 

重点是判定(针对于真假判断),覆盖条件:

条件1:T,条件3:F
条件1:F,条件3:T

或者

条件1:T,条件3:T
条件1:F,条件3:F

优点:判定覆盖比语句覆盖具有更强的测试能力。同时判定覆盖与具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例
缺点:往往大部分的测试用例是由多个逻辑条件组合的,若仅仅判断其整个的最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径,判定覆盖仍是很弱的逻辑覆盖

条件–判定覆盖

定义

 

基本思想:设计用例,使判定条件中的所有可能(条件成立、不成立)至少执行一次取值,同时,所有判断的可能结果(取真,取假),至少执行一次

覆盖条件用例:

T1,T2,T3,T4
F1,F2,F3,F4

要满足:T1,T2,T3,T4,F1,F2,F3,F4

  • 优点:能同时考虑到判定,条件两种覆盖
  • 缺点:未考虑条件的组合情况

 

组合覆盖

定义

 

基本思路:设计用例,使所有可能的条件取值组合至少执行一次

 

重点:所有条件取值的组合

编号覆盖条件取值
1T1,T2
2T1,F2
3F1,T2
4F1,F2
5T3,T4
6T3,F4
7F3,T4
8F3,F4
覆盖条件覆盖组合
T1,T2 , T3 , T41,5
T1,F2 , T3 , F42,6
F1,T2 , F3 , T43,7
F1,F2 , F3 , F44,8

优点:组合覆盖满足了判定覆盖、条件覆盖、和判定、条件覆盖准则。

缺点:线性的增加了测试用例的数量

路径覆盖

定义

 

 基本思想:设计测试用例,来覆盖程序中的所有可能执行的路径

继上面的的条件取值表格

覆盖路径覆盖组合
1-2-41,5
1-2-51,8
1-3-44,7
1-3-54,8

优点:这种测试方法可以对程序进行彻底的测试,比前面五种的测试要广

缺点:需要设计大量的,复杂的测试用例,使得工作量呈指数增长,不见得能把所有的条件组合都覆盖

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。
 


http://www.ppmy.cn/news/78482.html

相关文章

【Linux进阶之路】yum与vim操作

文章目录 前言一.yum——Linux的应用商店介绍基本使用① yum源②安装数据传输软件1.将Linux的文件传输到Windows平台上2.将Windows的文件传到Linux系统上 ③删除数据传输软件⑥查看安装包版本⑤练习安装与卸载小火车安装与卸载牛会说话 二.vim —— 一款优雅的编辑器①基本模式…

硅谷新王登国会山,呼吁加强 AI 监管;马斯克任命推特新 CEO;数字媒体巨头申请破产;欧盟通过全球首个全面监管加密资产框架 | 经济学人第 21 周

1. 硅谷新王登国会山&#xff0c;呼吁加强 AI 监管 Sam Altman, the chief executive of OpenAI, the firm behind the ChatGPT chatbot, called for tighter regulation of rapidly developing generative artificial intelligence, such as by forcing disclosure on images …

手把手教你用Python编写配置脚本引擎(福利篇)

版权声明&#xff1a;原创不易&#xff0c;本文禁止抄袭、转载需附上链接&#xff0c;侵权必究&#xff01; 目录 一、配置信息写入二、读取配置信息三、修改配置信息四、配置引擎总结五、作者Info 一、配置信息写入 配置信息初始化 定义配置引擎类和初始化方法&#xff0c;其…

Yet another ProblemHint 1

You are given an array aa of nn integers a1,a2,a3,…,an. You have to answer qq independent queries, each consisting of two integers ll and rr. Consider the subarray a[l:r]a[l:r] [al,al1,…,ar][al,al1,…,ar]. You can apply the following operation to the …

【医学图像】图像分割系列.2 (diffusion)

介绍几篇使用diffusion来实现医学图像分割的论文&#xff1a;DARL&#xff08;ICLR2023&#xff09;&#xff0c;MedSegDiff&#xff08;MIDL2023&#xff09;& MedSegDiff-V2&#xff08;arXiv2023&#xff09;&#xff0c;ImgX-DiffSeg&#xff08;arXiv2023&#xff09;…

try语句异常处理

文章目录 try语句异常的所有基类try语句的标准语法实战代码 try语句 ​ 使用try语句主要是为了进行异常的捕捉处理&#xff0c;异常在python也有几个基类 异常的所有基类 异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行Exc…

QT多线程(主动挂起线程)

文章目录 前言一、线程的挂起态二、QWaitCondition三、示例代码总结 前言 本篇文章来讲解一下QT中如何主动挂起线程&#xff0c;在不想让一个线程运行的时候我们应该如何让线程挂起呢&#xff1f;我们都知道使用sleep函数可以让线程挂起一段时间&#xff0c;但是一段时间过后线…

Java学习路线(10)——多态与内部类

一、多态 概念&#xff1a; 同类型对象执行同一个行为&#xff0c;表现出不同行为特性。 常见形式&#xff1a; 父类类型 对象名称 new 子类构造器; 接口 对象名称 new 实现类构造器;多态中的成员访问特点 方法调用&#xff1a; 编译看父类&#xff0c;运行看右边。&…