美文网首页
深入浅出MC/DC

深入浅出MC/DC

作者: 迪捷软件 | 来源:发表于2022-01-11 09:42 被阅读0次

概述:

随着计算机行业的发展,嵌入式系统在通讯、网络、工控、医疗、电子等领域都发挥着越来越重要的作用。尤其是在一些安全关键领域,如航空航天等,软件一旦出现故障,可能会产生灾难性的后果。这就要求在软件投入使用前,必须对其进行严格的测试、确认和验证。

测试覆盖率是在嵌入式软件测试中非常重要的一部分。它是一种测试技术指标,用来表明我们的测试用例是否真正完全覆盖了程序执行的各种可能以及运行这些测试用例时执行了多少代码块。通过覆盖率统计分析,得出软件执行的覆盖情况,可以查看软件中有哪些函数未执行,函数中哪些分支未执行。通过调整测试用例使尽可能多的函数和函数分支得到测试,同时可以分析代码未执行的原因,以便及时更正代码,从而大大提高了软件的稳定性。

覆盖率可以分为函数覆盖率、语句覆盖率、分支覆盖率、MC/DC(Modified Condition/Decision Coverage,修正条件判定覆盖率)等。每一种覆盖率测试的力度和精确性都不一样。比如语句覆盖率达到100%,但是分支覆盖率可能会只有50%,也就意味着分支覆盖率能测出软件问题的概率会更大。在众多覆盖率种类中,MC/DC是最高效的覆盖率。它使用的测试用例最少,测试力度最大。所以在航空安全领域中,根据DO-178C(适航符合性方法)中描述:A级软件必须独立开展MC/DC测试。

▲DO-178C《机载系统合格审定过程中的软件考虑》对软件等级的描述

定义

接下来我们看一下MC/DC的定义。在讲MC/DC之前,我们首先要明确C(Condition)和D(Decision)的概念:

条件(Condition):除了一元运算符(NOT,“否”)之外,不含有任何布尔运算符(如&&、||)的布尔表达式。比如:a>0;b!=0等等,这些表达式不包含布尔运算符,但是他们属于布尔表达式(结果为true或false)。

判定(Decision):由条件和布尔运算符组成的布尔表达式。如果一个条件在一个判定中出现不止一次,则每次出现都是一个不同的条件。我们将A,B视为条件,那么A&&B或A||B就是所谓的判定。

根据DO-178(适航符合性方法)中对MC/DC的描述:要求在一个程序中每一种输入输出至少出现一次,每一个判定中的每一个条件必须产生所有输出结果至少一次,每一个判定必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的结果。一个条件可以通过以下方式独立地影响判定的结果:

(1)改变该条件,同时保持其他条件不变,

(2)改变该条件,同时保持其他影响结果的条件不变。

可能上述定义有点抽象,我们通过A||(B&&C)这个例子来明确概念:

▲A||(B&&C)判定所有的测试用例情况

每一种输入输出至少出现一次,也就意味A||(B&&C)这个判定必须测试用例执行到。

每一个判定中的每一个条件必须产生所有输出结果至少一次:A,B,C三个条件都必须产生true和false至少一次。如执行了测试用例1和8(A=F,B=F,C=F与A=T,B=T,C=T),那么这个条件就满足。

每一个判定必须产生所有可能的输出结果至少一次:A||(B&&C)这个判定最终的结果至少有一次true,至少有一次false。如执行了测试用例4和5(A=F,B=T,C=T与A=T,B=F,C=F),满足上一条件,但是这个两个测试用例的最终结果都是false,那么就不满足这个条件。

每一个判定中的每一个条件必须能够独立影响一个判定的结果:该描述中强调了条件需要独立影响,为了能找到某一个条件的独立影响性,必须要找到两个对应的测试用例,才算符合独立影响。如测试用例1和5(A=F,B=F,C=F与A=T,B=F,C=F),这两个测试用例只改变了条件A,同时保持其他条件不变,但是最终的结果不同,这就是独立影响的意思。

我们再深挖一下定义,MC/DC标准其实就是想要找到判定中每个条件的独立影响性,其实也就意味着我们需要每个条件都找到一对符合独立影响的测试用例对(Independent Pair)。以下是A||(B&&C)每个测试用例的独立影响对的全部情况。

▲A||(B&&C)独立影响对(Independent Pair)的全部情况

如上图,测试用例1和5组成了条件A的独立影响对;测试用例2和4组成了条件B的独立影响对。如果测试用例在构成独立影响对时可以重复使用,如测试用例4,既能与测试用例2构成条件B的独立影响对,又能与测试用例3构成条件C的独立影响对。那么,在理论上,最少只需要n+1(n为条件数),最多需要2n个测试用例即可满足MC/DC的标准。如测试用例2、3、4和7这四个测试用例就可以满足MC/DC标准。

计算公式

由于MC/DC是判定覆盖率的一个标准,所以计算MC/DC就是计算满足MC/DC标准的判定覆盖率。

并且在未满足MC/DC标准的判定(Decision)中,可以计算有多少条件的测试对是符合独立影响的:

总结

目前为止,我们已经了解了MC/DC的定义,MC/DC就是需要找出每个判定中每个条件的独立影响对。所以我们在编写测试用例时也需要多思考,怎么样的测试用例是会满足的MC/DC标准的。

由迪捷软件自主研发的SkyEye全数字实时仿真软件是基于可视化建模的硬件行为级仿真平台,支持MC/DC覆盖率统计功能。只需在SkyEye全数字实时仿真软件中导入需要被验证、分析的二进制程序,并在相应的虚拟硬件平台上运行,再使用MC/DC覆盖率统计功能,即可得到MC/DC覆盖率分析的结果。根据覆盖率分析结果对二进制程序进行分析、校正,进而提高程序的可靠性和稳定性。

相关文章

  • 深入浅出MC/DC

    概述: 随着计算机行业的发展,嵌入式系统在通讯、网络、工控、医疗、电子等领域都发挥着越来越重要的作用。尤其是在一些...

  • 硬件工程师知识点2 -- 对power的基本认识

    电源系统根据变换方式,可以分为AC/DC,DC/DC,DC/AC和AC/AC,目前只将AC/DC,DC/DC电源称...

  • MC奇遇记(目录)

    一.MC奇遇记(一) 二.MC奇遇记(二) 三.MC奇遇记(三) 四.MC奇遇记(四) 五.MC奇遇记(五) 六....

  • mc高迪大话西游伴奏

    分类:MC喊麦伴奏标签:Mc高迪,mc高迪大话西游,mc高迪大话西游伴奏,mc高迪大话西游另类伴奏,大话西游,大话...

  • mc半阳命伴奏

    分类:MC喊麦伴奏标签:mc半阳,mc半阳命伴奏,mc半阳命歌词,mc半阳命的伴奏,你打架你家底有多厚麦词,你打架...

  • 汽车大梁钢S460MC 钢板材质|S460MC 熔炼分析

    S460MC 钢板名称:冷成型热轧汽车结构钢 S460MC 钢板材质 / 牌号:S460MC S460MC 钢板产...

  • MCvs迷你世界

    迷你:mc画质垃圾。 MC:我们有光影。 迷你:我们有黑科技。 MC:我们还有红石,命令方块,mod。 迷你:我们...

  • 史上最全的电源电路设计软件总结(值得收藏),文末有彩蛋

    Saber Saber用来设计各种电源设备,如DC/DC、AC/DC、DC/AC、AC/AC,能够全面分析系统的各...

  • 为MC抱打不平

    一次,我向我的朋友介绍MC,让他也来玩MC,结果你们猜怎么了? 他居然说,MC算什么?MC就是对迷你世界的抄袭。你...

  • 看一看

    请以后不要再评论MC玩家 请看《抱歉之MC玩家》

网友评论

      本文标题:深入浅出MC/DC

      本文链接:https://www.haomeiwen.com/subject/qjlbcrtx.html