【问题标题】:What is branch coverage?什么是分支覆盖?
【发布时间】:2017-04-23 12:19:35
【问题描述】:

我正在为 ISTQB 考试做准备,我遇到了这个问题。

对于下面给出的代码片段,哪个答案正确代表 语句覆盖率和分支覆盖率分别需要的最低测试?

Discount rate=1;
Fare = 1000;
If ((person == “senior citizen”) and (“travel month = January”))
Bonuspoints = 100+Bonuspoints
If (class==”first”)
discountRate = .5;
Fare = fare * discountRate;
  • 一个。语句覆盖率 = 1,分支覆盖率 = 2
  • 乙。语句覆盖率 = 2,分支覆盖率 = 2
  • c。语句覆盖率 = 1,分支覆盖率 = 3
  • d.语句覆盖率 = 2,分支覆盖率 = 4

答案是A

但我的答案是C,原因是我为它绘制的流程图如下。

  1. 从头到尾直接前进

  2. 第一个“如果”为假

  3. 第二个'if'的第二个假

我的问题是:

  1. 如果问题本身没有给出,我们是否应该为“错误”条件“显式”绘制一条边。
  2. 这里的分支覆盖率是 2 吗?

【问题讨论】:

标签: testing flowchart


【解决方案1】:

我认为您的图表/流程图不正确。

对我来说更有意义的是,两个 IF 语句都将始终运行。第一个 IF 语句中的“False”结果意味着代码将执行第二个 If 语句。

测试 1 将涵盖正面情景。您的两个 IF 语句都将为 TRUE,这意味着完全通过您的条件语句的所有积极结果

Test 2 将为第一个 IF 语句提供 False,然后再次为第二个 IF 语句提供 False,它涵盖了所有否定这个分支的结果。

【讨论】:

    【解决方案2】:

    计算语句覆盖率

    找出将覆盖所有节点的最短路径数。
    在此流程图中,我定义了节点和边,如下所示:

    1. 1,2 3 等是节点
    2. A、B、C 等是边

    使用路径1A-2B-3C-4D-5G-6G-7H,覆盖所有节点 1,2,3...7。
    因此,Statement Coverage 将为 1,因为我们不需要其他路径来覆盖所有节点。

    计算分支覆盖率

    找出确保覆盖所有边缘的最小路径数。

    使用路径1A-2B-3C-4D-5G-6G-7H,我们已经覆盖了这个流程图中的1条边(I,J是剩余的)

    因为该路径将是

    1A-2B-3I-5J  
    1A-2B-3C-4D-5G-6G-7H 
    

    通过结合以上两条路径,我们可以确保通过所有路径,所以正确答案是:-

    一个。语句覆盖率 = 1,分支覆盖率 = 2

    流程图:-

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 2016-06-21
      • 2018-09-27
      • 2016-05-04
      • 2021-03-28
      • 2015-02-08
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多