修正的判定条件覆盖例题_语句覆盖、判断覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修正条件覆盖...

int function(bool a,bool b,boolc){intx;

x=0;if(a&&(b||c)){

x=1;returnx;

}

}

51ca6b0f76c64bddc4cfdb23e05cafa2.png

1、语句覆盖(SC)

选择足够多的测试数据,使得被测程序中的每条语句至少执行一次。

测试用例:a=T,b=T,c=T

2、判断覆盖(DC)

设计足够的测试用例,使得程序中的每个判定至少都获得一次真值或假值。或者使得程序中的每一个取真分支和取假分支至少经历一次,因此判定覆盖又称为分支覆盖。

序号

a

b

c

a&&(b||c)

a||(b||c)

判定覆盖率

1

T

T

T

T

T

50

2

F

F

F

F

F

50

上述两组测试用例不仅满足了判定覆盖,而且满足了语句覆盖,从这一点看,判定覆盖要比语句覆盖更强一些,但是同样的,假如这一程序段中判定的逻辑运算有问题。判定的第一个运算符  &&  错写成运算符  || 。或者第二个运算符 ||  错写成运算符 &&,这时使用上面的测试用例可以达到100%的判定覆盖,仍然无法发现上述的逻辑问题。

3、条件覆盖(CC)

构造一组测试用例,使得每一判定语句中,每个逻辑条件的可能是至少满足一次。

用例一:

a=F,b=T,c=F

a=T,b=F,c=T

用例一在满足条件覆盖的同时,把判定的两个分支也覆盖了。是否可以说,达到了条件覆盖就必然实现了判定覆盖呢?

用例二:

a=F,b=T,c=T

a=T,b=F,c=F

用例二覆盖了条件的测试用例并没有覆盖分支。

4、条件判定组合覆盖(CDC)

设计足够的测试用例,使得判定中的每个条件的所有可能真或假,至少出现一次,并且每个判定本身的判定结果真或假也至少出现一次。

bb41f4fb02256446390e8c63067224be.png

5、多条件覆盖(MCC)

设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然,满足多条件覆盖的测试用例是一定满足,判定覆盖、条件覆盖、条件判定组合覆盖的。

测试用例指数级增加(2**conditions)

4101d574dd87d1a1fff123c020d6f4a2.png

6、修正条件覆盖(MCDC)

它要求满足两个条件,首先,每一个程序模块的入口和出口都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次程序的判定被分解为通过逻辑操作符(and、or)连接的bool条件,每个条件对于判定的结果值是独立的。

ff0af1ff6b0838740613a7da46a1a640.png

从表中我们可以看出,布尔变量a可以通过用例1和5达到MCDC的要求(用例2和6或者用例3和7也可以满足相应要求)。变量b也可以通过用例2和4 达到MCDC的要求。变量c可以通过用例3和4达到MCDC的要求。因此用例集{1,2,3,4,5}即可满足MCDC的要求。显而易见,这不是唯一的用力结合

a  1,5 (TF)        2,6(TF)       3,7(TF)       4,8(FF)  ---->符合条件:1,5 (TF)        2,6(TF)       3,7(TF)

b   1,3 (TT)       2,4(TF)       5,7(FF)       6,8(FF)  ---->符合条件:  2,4(TF)

c   1,2(TT)        3,4(TF)       5,6(FF)       7,8(FF)  ---->符合条件:  3,4(TF)

用例集:{1,2,3,4,5}

{2,3,4,6}

{2,3,4,7}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL2-类模板

1、类模板实现 函数模板在调用时可以自动类型推导 类模板必须显式指定类型 #include<iostream> using namespace std;template<class T> class Person { public:T mId;T mAge; public:Person(T id,T age){this->mAge age;this->mId id;}void Show(){cout…

STL3-MyArray动态数组类模板实现

注意 1、右值的拷贝使用 2、拷贝构造函数的使用 #include<iostream> using namespace std;template<class T> class MyArray{ public:MyArray(int capacity){this->mCapacity capacity;this->mSize 0;//申请内存this->pAddr new T[this->mCapac…

mysql udf提权hex_Mysql_UDF提权

Mysql_UDF提权作者&#xff1a;admin 发布于&#xff1a;2013-5-25 18:55 Saturday分类&#xff1a;MYSQLRoot权限一、上传udf.dll小于mysql5.1版本C:\\WINDOWS\\udf.dll 或C:\\WINDOWS\\system32\\udf.dll等于mysql5.1版本%mysql%\\plugin\\udf.dll 用 selectplugin_dir 查询…

STL4-类型转换

#include<iostream> using namespace std;class Building{}; class Animal{}; class Cat :public Animal {}; //Cat是Animal的子类//static_cast //用于内置的数据类型及具有继承关系的指针或者引用 void test01() {int a 97;//static_cast<要转换的类型>(转换的…

线程池写入mysql_用多线程写入数据库的问题(150分)

把 一少的程序稍加修改就可以多个线程处理一个文件了unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 class(TForm)Button1: TButton;procedure FormCreate(Sender: TObject);procedure Bu…

java对象排序_Java™ 教程(对象排序)

对象排序List l可以如下排序。Collections.sort(l);如果List包含String元素&#xff0c;它将按字母顺序排序&#xff0c;如果它由Date元素组成&#xff0c;它将按时间顺序排序&#xff0c;这是怎么发生的&#xff1f;String和Date都实现了Comparable接口&#xff0c;Comparable…

python argparse模块

argparse模块 argparse是python用于解析命令行参数和选项的标准模块&#xff0c;用于代替已经过时的optparse模块 使用步骤 import argparse # 1 导入模块&#xff0c;这个没什么说的 parser argparse.ArgumentParser() # 2 实例化一个对象&#xff0c;默认参数一堆&#…

java解析yml文件_如何基于JAVA读取yml配置文件指定key内容

这篇文章主要介绍了如何基于JAVA读取yml配置文件指定key内容,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下先引入需要的依赖org.yamlsnakeyaml1.23读取YML文件工具类的代码import org.apache.commons.lang3.St…

STL5-异常

异常可以跨函数 异常必须处理 1、 #include<iostream> using namespace std; //c异常机制 跨函数 //c异常必须处理 不能留&#xff0c;否则报错 int divided(int x, int y) {if (y 0)throw y; //抛异常return (x / y); } void test01() {int x 10, y 0;//试着去捕获…

java 并发组件_Java 并发计数组件Striped64详解

作者&#xff1a; 一字马胡转载标志 【2017-11-03】更新日志日期更新内容备注2017-11-03添加转载标志持续更新Java Striped64Striped64是在java8中添加用来支持累加器的并发组件&#xff0c;它可以在并发环境下使用来做某种计数&#xff0c;Striped64的设计思路是在竞争激烈的时…

ubuntu的MySQL远程数据库连接问题查找

1、开放端口3306 2、添加权限 3、服务器本身没有在安全组规则中开放权限 添加安全组规则后重试。

java中集合怎么定义_Java集合系列(一):集合的定义及分类

1. 集合的定义什么是集合呢&#xff1f;定义&#xff1a;集合是一个存放对象的引用的容器。在Java中&#xff0c;集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器&#xff0c;就会想起数组&#xff0c;那么集合和数组的区别是什么呢&#xff1f;(这里是重点&…

STL6-输入输出流

cout 是 console output 缩写 程序 和键盘 之间有一个输入缓冲区 程序 和 显示器 之间有一个输出缓冲区 #include<iostream> #include<windows.h> #include<iomanip> using namespace std; #if 0 cout << "dd"; //全局流对象&#xff0c;默…

azul java_Java版本更新重大提醒 - Azul

2019年1月对于Java开发人员和用户都特别重要。原因是Oracle JDK 8发布了更新202&#xff0c;这是Oracle的JDK 8的最终公开更新(针对商业用户)。用户现在需要仔细考虑将来如何更新升级Java版本了。对于非商业桌面用户&#xff0c;将继续通过现有Java Update机制提供对Oracle Jav…

java 自定义 钩子_Java添加关闭钩子里面的方法

在我的代码中&#xff0c;我使用CompletionService和ExecutorService来启动一堆Thread来执行某些任务(这可能需要很长时间) . 所以我有一个创建ExecutorService和CompletionService的方法&#xff0c;然后开始提交线程然后获取结果 . 我想添加一个关闭钩子&#xff0c;以便优雅…

Ubuntu nginx+uwsgi部署Django项目

前提条件&#xff1a;首先项目使用一下命令启动成功后&#xff0c;输入公网ip后可以启动成功 python manage.py runserver 0.0.0.0:80 一、阿里云配置安全组 添加8000端口 二、安装配置uwsgi 1、确定django项目可以正常运行了&#xff0c;ctrlc停止项目&#xff0c;下面我们来…

STL7-基础

1、容器可以嵌套容器 2、容器分为序列式容器和关联式容器 序列式容器&#xff1a;容器的元素的位置是由进入容器时机和地点来决定 关联式容器&#xff1a;容器已经有规则&#xff0c;进入容器的元素的位置不是由进入容器时机和地点来决定 只与此容器的排列规则有关 3、迭代…

java 0xaarrggbb 转换_RRGGBBAA或者RRGGBB转换成rgba()

//十六进制颜色值的正则表达式var reg /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;/*16进制颜色转为RGB格式*/var colorRgb function(color){if(color.length>7){var num color.slice(7,9).toUpperCase();var x opacityColor(num)color color.slice(0,7);}var sColor color…

java 假设当前时间_Java中与日期和时间相关的类和方法

一、currentTimeMillis()方法System 类中的方法 currentTimeMillis() 方法可以返回从 GMT1970 年 1 月 1 日 00 : 00 : 00 开始到当前时刻的毫秒数。System.currentTimeMillis(); //返回值为long类型二、Date类1.构造方法(1)public Date (); 以当前系统时间创建一个Date对象&am…

STL8-string容器

C 没有 string 类&#xff0c;但提供了直接对字符数组、字符串操作的函数 -> 如 str_len()等等 -> 需要包含 “string.h”#include<iostream> #include<string> using namespace std;//初始化 void test01() {string s1; //调用无参构造string s2(10, a);str…