首页 > 其他分享 >修正判定条件覆盖(MC/DC)

修正判定条件覆盖(MC/DC)

时间:2023-01-29 08:11:05浏览次数:41  
标签:MC 覆盖 DC 用例 判定 条件

MC/DC是DO-178B Level A认证标准中规定的,欧美民用航空器强制要求遵守该标准。

    MC/DC定义如下:
    Condition —— a Boolean expression containing no Boolean operators:
    Decision —— a Boolean expression composed of conditions and zero or more Boolean operators:
    Modified Condition/Decision Coverage —— every point of entry and exit in the program has been invoked at least once,every condition in the program has taken all possible outcomes at least once,and each condition in a decision has been shown to independently affect a decision S outcome by varying just that condition while holding fixed all other possible conditions.

    条件表示不含有布尔操作符号的布尔表达式;
    判定表示由条件和零或者很多布尔操作符号所组成的一个布尔表达式;
    修正条件判定覆盖要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。

    上面的定义有点不好理解,解释一下:
    MC/DC首先要求实现条件覆盖、判定覆盖,在此基础上,对于每一个条件C,要求存在符合以下条件的两次计算:
    1)条件C所在判定内的所有条件,除条件C外,其他条件的取值完全相同;
    2)条件C的取值相反;
    3)判定的计算结果相反。

    核心意思是每个条件都要独立影响判定结果。为什么说“两次计算”,而不是“两个用例”呢?当循环中有判定时,一个用例下同一判定可能被计算多次,每次的条件值和判定值也可能不同,因此,一个用例就可能完成循环中判定的MC/DC。

    MC/DC是条件组合覆盖的子集。条件组合覆盖要求覆盖判定中所有条件取值的所有可能组合,需要大量的测试用例,实用性较差。MC/DC具有条件组合覆盖的优势,同时大幅减少用例数。满足MC/DC的用例数下界为条件数+1,上界为条件数的两倍,例如,判定中有三个条件,条件组合覆盖需要8个用例,而MC/DC需要的用例数为4至6个。如果判定中条件很多,用例数的差别将非常大,例如,判定中有10个条件,条件组合覆盖需要1024个用例,而MC/DC只需要11至20个用例。

    下面是MC/DC的示例:

    代码:
    int func(BOOL A, BOOL B, BOOL C)
    {
        if(A && (B || C))
            return 1;
        return 0;
    }

    用例:

 

    对于条件A,用例1和用例2,A取值相反,B和C相同,判定结果分别为1和0;
    对于条件B,用例1和用例3,B取值相反,A和C相同,判定结果分别为1和0;
    对于条件C,用例3和用例4,C取值相反,A和B相同,判定结果分别为0和1。

 

 

原创:http://www.kailesoft.com/Help/TestBox/MCDC.htm

标签:MC,覆盖,DC,用例,判定,条件
From: https://www.cnblogs.com/hkj8808/p/17071661.html

相关文章

  • linux系统下安装jdk8/tomcat9/mysql8.0
    这两天学习linux的使用,今天初步安装好了java8和tomcat9,mysql8,记录下安装经历使用Linux系统版本CentOS-7-x86_64-DVD-2009linux有4中软件安装方式;1.二进制发布包安......
  • Minio客户端工具mc
    简介:mc(MinioClient)是Minio提供访问和操作服务端的客户端工具,有Windows和Linux两个平台版本。 一、安装(基于Linux)1.mc下载:wget https://dl.min.io/client/mc......
  • DC-9
                                                   DC-9试验机:DC-7(网......
  • 大公司为什么禁止SpringBoot项目使用Tomcat?
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招......
  • [ecstore]开启memcache缓存的ecstore,磁盘满了后,打开提示header function does not exi
    开启memcache缓存的ecstore,磁盘满了后,打开提示headerfunctiondoesnotexistin/home/wwwroot/xxxx/app/base/lib/component/compiler.phponline368的解决方法1、先......
  • 大公司为什么禁止SpringBoot项目使用Tomcat?
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • IDEA与tomcat相关配置与Servlet_体系结构
    IDEA与tomcat相关配置1.IDEA会为了每一个tomcat部署的项目单独与建立一份配置文件.   查看控制台的log:UsingCATAL......
  • Tomcat 解决一些基本配置问题。
    解决Tomcat进入manger管理界面需要账号密码问题第一步,打开Tomcat的conf文件夹进入tomcat-users.xml文件在标签里面复制以下内容<rolerolename="admin-gui"/>``<ro......
  • MCU与GPU技术分析
    MCU与GPU技术分析车规MCU知识梳理一辆传统燃油车需要大约500到600颗芯片,轻混汽车大约需要1000颗,插电混动和纯电动汽车则需要至少2000颗芯片。这意味着,随着智能电动汽车的......
  • 运行解压版tomcat中的startup.bat一闪而退的解决办法
    Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat则调用了setclasspath.bat,只要在setclasspath.bat的开头声明环境变量(红色两行)就可以了,原因是后来较新版本安装完不......