MC / DC-如何管理不是100%覆盖率的决策

时间:2018-07-24 14:28:04

标签: code-coverage test-coverage mc-dc

考虑“ (A && B)||(!A && C)”的决定,这导致MC / DC覆盖范围不足,因为不可能测试 F #F#

  1. 未达到MC / DC的100%是什么意思?只是质量 问题?
  2. 没有100%的MC / DC是否可以接受?
  3. 如何管理达到MC / CD 100%的决定?

非常感谢。

1 个答案:

答案 0 :(得分:2)

为回答您的问题,让我们首先看一下MC / DC标准的一些组成部分:

更多详细信息,请点击https://en.wikipedia.org/wiki/Modified_condition/decision_coverage#Definitions

  • 条件-条件应为原子布尔表达式。
  • Decision-由零个或多个布尔运算符组成的布尔表达式,而没有布尔运算符(AND和OR)的决定只是一个条件。

给出示例表达式(A && B)|| (!A && C),我们可以将其分为三个条件“ A”,“ B”和“ C”。请注意,A和!A都是布尔表达式,但是其中一个不是原子表达式。

然后我们可以创建真值表:

Truth Table

以黄色突出显示的是我们可以提出的“可能的” MC / DC评估。

确定后,我们然后选择哪些确定的项目是“真实的” MC / DC评估,这将为我们提供100%的覆盖率。我们如何识别“真实”评估?

Truth Table - Identified

我们确定每个条件的配对(真和假),并在可能的每一行中做出决定。在上图中,橙色高亮显示的行是“实际” MC / DC评估,它将为我们提供100%的分支覆盖率和100%的条件覆盖率。

请记住,它应该至少输出 n + 1 个测试。


  1. 如果您的MC / DC覆盖率不是100%,则可能意味着条件创建方式存在问题。为什么?举这个简单的例子(A &&!A),当条件“ A”为真时,则判定为假;当条件“ A”为假时,则决策仍然为假。在编程中,这个经典示例可能导致无法访问的代码。无法访问的代码是无用的,永远不会执行。
  2. MC / DC的目的是识别决策表达中的缺陷。这将视具体情况而定,因为有些关键软件需要一定程度的完善,例如在航空领域,MC / DC最常用于防止故障。在大多数情况比较普遍的软件开发活动中,可接受的范围是80%-90%。
  3. 重新评估您的条件。花一些时间来了解应用程序的逻辑和流程。我们之前做的一项活动是生成与真值表配对的控制流程图(CFG),以识别逻辑的正确性。 (CFG)是某个布尔表达式的图形表示。它类似于流程图,其中条件节点可以为真或为假,并且传递所有条件节点将导致特定决策。

希望这会有所帮助!