白盒测试的5种逻辑覆盖法

news/2024/7/3 17:13:13

文章目录

    • 判定覆盖法 Decision Coverage (DC)
    • 条件覆盖 Condition Coverage (CC)
    • 判定-条件覆盖 Condition-Decision Coverage
    • 条件组合覆盖 Multiple Condition Coverage (MCC)
    • 修正的条件/判定覆盖 Modified Condition/Decision Coverage (MC/DC)
    • 5种覆盖的关系

判定覆盖法 Decision Coverage (DC)

判定覆盖法的基本思想:
设计若干测试用例,运行被测程序,使得程序中每个判断的取真和取假分支至少经历一次,即判断的真假值都至少被满足一次。
由于一个判定代表程序一个分支,因而判定覆盖也被成为分支覆盖。
问题在于:T and T = T , T or T =T. F and F = F , F or F =F. 对于一个双条件判定而言,如果采用(T,T)和(F,F)去测试,那么程序中的and换成or,或者or换成and的错误是发现不了的。
满足判定覆盖一定满足语句覆盖(每个可执行的语句至少执行一次)

条件覆盖 Condition Coverage (CC)

条件覆盖比判定覆盖的粒度更小,它要求使得程序中每个判断的每个条件的所有可能取值至少被满足一次。
满足条件覆盖不一定满足判定覆盖。这就引出了判定-条件覆盖。

判定-条件覆盖 Condition-Decision Coverage

判定-条件覆盖是需要同时满足判定覆盖和条件覆盖的逻辑覆盖法,即所有判断的每个结果和所有条件的所有可能取值至少满足一次。
问题在于:and 与 or互换的bug还是测不出来。这就引入了条件组合覆盖。

条件组合覆盖 Multiple Condition Coverage (MCC)

条件组合覆盖要求:每个判断的真假结果和导致真假结果的所有组合都至少出现一次。
条件组合覆盖虽然能覆盖前面提到的3种覆盖方式,但还是有可能无法覆盖全部基本路径。
除了不够充分外,还有浪费的弊端,这就引出了修正的条件/判定覆盖。

修正的条件/判定覆盖 Modified Condition/Decision Coverage (MC/DC)

修正的条件/判定覆盖是对条件组合覆盖做的优化。
它不要求每个判断导致真假结果的所有组合都出现过,而是要求每个条件都独立地影响过判断的结果。

5种覆盖的关系

5种覆盖的包含关系为
在这里插入图片描述


http://lihuaxi.xjx100.cn/news/242030.html

相关文章

c++复习笔记

1、堆和栈的区别与联系 1、栈区由编译器自动分配内存释放;堆区一般由程序员手动分配释放,若不释放,结束时可能由OS回收 2、堆的分配可能会有碎片,栈不会有这个问题 3、堆都是动态分配的,栈有动态和静态两种分…

零基础参加java培训主要学什么

互联网行业永远是一个需求非常大的行业,尤其是技术人员岗位,java技术岗一直很受大家的关注,不少学员都是零基础开始学,那么零基础参加java培训主要学什么呢?来看看下面的详细介绍。 零基础参加java培训主要学什么?其实无论学什么…

为什么vue.js一眼看上去很美?

对其他框架我是佩服,对vue.js我则是爱。我就是一眼看上了vue.js,于是用它做各种东西,反反复复多次,然后觉得有些融会贯通,然后,我稍微细的思量了下,到底vue.js靓丽在哪? 还是上案例对比说明。这…

白盒测试路径覆盖法中基本路径数和环形复杂度的关系

基本路径数 判断节点个数 x 2 环形复杂度 判断节点个数 1(还有另外两种计算方法)

Guava Cache缓存的移除与读取

2019独角兽企业重金招聘Python工程师标准>>> 1、通过put或putAll手动向Cache中添加数据,guava不缓存value是null的key。我们可以在系统启动的时候,就将某些数据手动放入缓存中,这样就可以避免系统启动后,第一个用户访问…

运用面向对象原则,设计一款音乐点唱机

2019独角兽企业重金招聘Python工程师标准>>> .设计内容及要求 能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充…

UI设计培训教程分享:UI设计师的色彩使用技巧

作为一名合格的UI设计师,色彩的使用是非常重要的,一个专业的UI设计师对于UI设计色彩的搭配是非常的出色的,下面小编就为大家分享UI设计培训教程:UI设计师的色彩使用技巧 UI设计培训教程分享:UI设计师的色彩使用技巧 一…

powerdesigner类图在子类中显示从父类继承来的方法

首先确保画了子类和父类之间的继承线 然后在子类的选项卡中点击