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

 我是荔园微风,作为一名在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深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。
 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值