-2

给定以下代码片段,100% 的决策覆盖率需要多少测试?

if width > length then 
    biggest_dimension = width 
    if height > width then
        biggest_dimension = height 
    end_if 
else 
    biggest_dimension = length    
    if height > length then 
        biggest_dimension = height    
    end_if    
end_if

上述问题的答案是 4 。100% 的决策覆盖率需要 4 个测试用例。谁能说出以下问题的答案解释?

4

3 回答 3

6

控制流

我为您的代码构建了一个控制流来帮助解释。

需要 4 次测试才能实现 100% 的决策覆盖率,因为代码必须执行“IF”语句的“真”和“假”双方。编写的代码在第一个“IF”语句的每一侧都有一个“IF”语句,需要 4 次不同的测试才能做出每个决定。

示例测试:

  • 测试1:宽度= 50cm,长度= 40cm,高度= 40cm

  • 测试 2:宽度 = 50 厘米,长度 = 40 厘米,高度 = 60 厘米

从这两个测试中,决策覆盖率现在为 50%,因为一半的决策结果已被执行(第一个“IF”的“真”一侧)。

  • 测试 3:宽度 = 40cm,长度 = 50cm,高度 = 40cm

  • 测试 4:宽度 = 40cm,长度 = 50cm,高度 = 60cm

通过这两个测试,第一个“IF”的“假”侧被执行。这将使决策覆盖率达到 100%。

于 2017-03-10T15:34:34.843 回答
0

100% 决策覆盖率

在此处输入图像描述

代码遍历 4 条路径/决策以实现 100% 的决策覆盖率。

当决策语句嵌套时会发生这种情况。在这种情况下

" " 仅当 " " 为真height > width时才执行。width > length

" " 仅当 " " 为假height > length时才执行。width > length

因此,覆盖 100% 决策测试所需的最小测试用例数为 4。


100% 报表覆盖率

对于同一段代码,您只需 2 组输入即可实现 100% 的语句覆盖率,

情况1。

Height = 10
Width = 8
Length = 5

在这种情况下,

  • if width > length将是真的。biggest_dimension = width因此将执行下一条语句 。
  • 如果height > width也是真的。biggest_dimension = height因此将执行下一条语句 。

案例 2。

Height = 7
Width = 5
Length = 6

在这种情况下,

  • 如果width > length将是错误的。biggest_dimension = length因此将执行下一条语句 。
  • 如果height > length是真的。biggest_dimension = height因此将执行下一条语句 。

因此,您至少需要 2 次测试才能达到 100% 的语句覆盖率。

于 2021-02-26T07:13:43.567 回答
0

有四个测试用例,因为只有在外部语句为真时才能访问内部 if 语句,因此只能有四种组合:

  • 外=真,内=真
  • 外=真,内=假
  • 外=假,内=真
  • 外=假,内=假

当外部语句为假时,它将移至您的 else 语句。

希望这是有道理的。

于 2017-03-09T11:49:12.720 回答