白盒测试的5种逻辑覆盖法
文章目录
- 判定覆盖法 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种覆盖的包含关系为
相关文章:

[sinatra] Just Do It: Learn Sinatra, Part One Darren Jones
1. Install sinatra gem gem install sinatra --no-ri --no-rdoc2. Basic App #!/usr/bin/ruby require sinatra get / do"Just Do It" endruby低于1.9,需要在文件开头加require rubygems ruby basic.rbOpen up your browser and go to http://localhost:4567. 3. I…
GMTC 大前端时代前端监控的最佳实践
摘要: 今天我分享的内容分成三个部分: 第一部分是“大前端时代前端监控新的变化”, 讲述这些年来,前端监控一些新的视角以及最前沿的一些思考。 第二部分"前端监控的最佳实践", 从使用的角度出发,介绍前端监…

Visual C#访问接口
对接口成员的访问 对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。但由于接口支持多继承,在多继承中,如果两个父接口含有同名的成员&am…

powerdesigner类图在子类中显示从父类继承来的方法
首先确保画了子类和父类之间的继承线 然后在子类的选项卡中点击

[UML]UML系列——用例图中的各种关系(include、extend)
[UML]UML系列——用例图中的各种关系(include、extend) 原文:[UML]UML系列——用例图中的各种关系(include、extend)用例图中的各种关系 一、参与者与用例间的关联关系 参与者与用例之间的通信,也成为关联或通信关系。…

熬夜写了一个小游戏,向SpaceX聊表敬意
2019独角兽企业重金招聘Python工程师标准>>> 这是我长久放在桌面上的一张图片。 这张照片的名字叫做 Pale Blue Dot(暗淡蓝点),是旅行者1号在距地球64亿公里回望太阳系时所拍下的。照片右侧中部有一个隐约可见的小蓝点,…

【转】Linux Oracle服务启动停止脚本与开机自启动
在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设置相关参数,首先先介绍一般而言如何启动oracle。 一、在Lin…

ASP.Net中MD5加密-16位32位
publicstringmd5(stringstr,intcode){if(code16) //16位MD5加密(取32位加密的9~25字符){return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;} else//32位加密{retur…

PL/SQL编程:将两个数进行交换的存储过程
创建过程exchangeTwo 调用过程enchangeTwo

WCF之多个终结点
1.服务端配置如下(一个Service节点下可有多个endpoint,): 1 1<system.serviceModel>2 2 <services>3 3 <service name"Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration"returnFaul…

YAML 语言入门教程
2019独角兽企业重金招聘Python工程师标准>>> YAML简介 另一种标记语言(Yet Another Markup Language) YAML(英语发音:/ˈjməl/,尾音类似camel骆驼)是一个可读性高,用来表达资料序列…

我翻译的一篇文章,OO设计中对象的创建和使用
OO设计中对象的创建和使用 转载于:https://www.cnblogs.com/lishu1980/archive/2006/06/22/432526.html

SQL Server Profiler工具
SQL Server Profiler工具 原文:SQL Server Profiler工具一、SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询;在后台收集查询信息;分析性能;诊断像死锁之类…

Nginx—核心配置location匹配规则说明
2019独角兽企业重金招聘Python工程师标准>>> location介绍 location指令是Nginx中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器、非法的请求直接拒绝并返回403ÿ…

Windows Live Messenger 正式版已经发布
Windows Live Messenger 正式版已经发布!这是新一代的 Messenger。它拥有全新的名字,可以免费下载。并且除了延续使用原 Messenger 的全部功能外,它还提供了几种出色的全新交流方式,实现与朋友的即时共享和交流。转载于:https://www.cnblogs.…

关闭ubuntu启动时System Program Problem Detected提示
修改vi /etc/default/apport 将其值设置1-->0转载于:https://www.cnblogs.com/snail-micheal/p/3607969.html

C++开源跨平台类库集
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可 经典的C库 STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合 标准比较远的情况…

僵尸进程和孤儿进程
一 . 僵尸进程: 子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程 处理僵尸进程的方法:wait 和 waitpid 调用wait和waitpid不仅可以获得子进程的终止信息,还可以使父进程阻塞等待子进程终止…

Castle ActiveRecord(一)概述
一、ActiveRecord与Castle ActiveRecordActiveRecord是《Patterns of Enterprise Application Architecture》中描述的著名模式。基本上,当实例每一行的时候,所有的静态方法会作用于全部纪录。 Castle ActiveRecord 是ActiveRecord 模式的一个实现&am…
一步步学习SPD2010--第十一章节--处理母版页(8)--从母版页创建网页
一步步学习SPD2010--第十一章节--处理母版页(8)--从母版页创建网页 在SPD中,你可以使用许多不同的方法创建ASP.NET页面。然而,因为页面将是SP网站的一部分,你很可能想像其他页面一样,保持相同的导航元素和外…

Confluence 6 查看空间活动
空间活动信息是默认禁用(disabled by default)的。活动(Activity)的标没有显示,如果你的 Confluence Usage Stats 插件没有启用的。请查看下面的说明: 如果启用的话,空间活动界面显示了每一个空…

flash模拟EEROM
FLASH中:0x08000000--0x08000000SIZE保存的是用户代码 Rule: 16位为传输单位 读数据: u16 STMFLASH_ReadHalfWord(u32 faddr) 可以在通用地址空间直接寻址:data*(vu16*)ADDR;[ADDR为32位数据,指向的数据为uv16型]写数据…

OSChina 周六乱弹 —— 就少个接吻的女友了
2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 andonny :分享Mamas & The Papas的单曲《California Dreaming》 《California Dreaming》- Mamas & The …

存儲過程解密SQL
存儲過程解密SQLif exists (select * from dbo.sysobjects where id object_id(N[dbo].[sp_decrypt]) and OBJECTPROPERTY(id, NIsProcedure) 1)drop procedure [dbo].[sp_decrypt]GO /*--破解函數,視圖,程儲過程,触發器,限于SQLSERVER2000 --作者:J9988--*//*--使用示例 --解…

软件缺陷生命周期图示及当中涉及到的缺陷的状态
缺陷状态: 激活/打开 已修正 已关闭/非激活 重新打开(对应图示验证通过否N) 推迟(对应图示的延期) 保留(对应图示无法解决) 不能重现 需要更多信息