【问题标题】:statement and branch coverage语句和分支覆盖
【发布时间】:2018-05-22 06:20:15
【问题描述】:

大家好,这几天我正在准备 ISTQB 考试,但我遇到了一个问题。

mock exam QUESTION 16

问题在(原复制粘贴)这里:

给定以下代码,这是真的:

IF A > B THEN
    C = A – B 
ELSE 
    C = A + B 
ENDIF 
Read D 
IF C = D 
    Then Print “Error” 
ENDIF 

a.1 测试语句覆盖率,3 测试分支覆盖率

b.2 测试语句覆盖率,2 次分支覆盖率

c.2 测试语句覆盖率。 3 用于分支覆盖

d.3 测试语句覆盖率,3 次测试分支覆盖率

我解决了 3 个分支覆盖测试(1. 如果 A>B 为真 2.如果 A>B 为假 3. 如果 C=D 为真)和 3 个语句覆盖测试( C=A+B ,C =A-B 和错误)。

但是答案说 2 次测试语句覆盖率和 2 次分支覆盖率。谁能给我解释一下。

【问题讨论】:

  • 请正确格式化代码。
  • @RespectMyAuthoritah 完成!

标签: loops testing white-box-testing


【解决方案1】:

分支机构覆盖范围::

分支覆盖是一个要求,对于程序中的每个分支 (例如,if 语句、循环),每个分支至少已执行 测试期间一次。 (有时也被描述为说 每个分支条件必须至少为真一次,并且在 在测试期间至少一次。)

声明覆盖范围 ::

语句覆盖率是一种白盒测试技术,它涉及 在源代码中至少执行一次所有语句。 它是一个度量,用于计算和衡量的数量 源代码中已执行的语句。

所以,试着为你的代码添加行号::

1. READ A --> Added just to make it more clear
2. READ B --> Added just to make it more clear
3. IF A > B 
4.     THEN C = A – B 
5. ELSE 
6.     C = A + B ENDIF 
7. Read D 
8. IF C = D 
9.     Then Print “Error” ENDIF 
10. END OF PROGRAM

所以,考虑到上面的定义并采取一些测试用例::

测试用例 1 :: A = 10, B = 11, D = 21

涵盖的声明 = 1、2、3、5、6、7、8、9、10。

测试用例 2 :: A = 11, B = 10, D = 10

涵盖的声明 = 1、2、3、4、7、8、10。

因此,如果您查看所涵盖的语句,您会发现只需要 2 个测试用例即可涵盖所有语句。

现在,来到分支机构覆盖范围

如果你把上面的代码做一个程序流程图,按照上面的定义,在语句3和语句8有一个分支,因为它们是if条件,所以它们可以是truefalse 因此分支就在那里。所以,Branch Coverage 的定义说我们需要遍历程序中的每一个分支。

由于从3 我可以转到45(这两个分支),假设分支343L 和分支3 到@987654334 @ 是 3R(L 和 R 表示左右)。同样对于语句8,两个分支可以是810(如果C != D)和89,然后是10。让这两个分支分别称为8L8R。 (只是为了理解而命名)

所以,从 Test Case 2 你可以意识到你已经覆盖了你的分支 3L8RTest Case 1,你可以意识到你已经覆盖了你的分支3R8L

因此,只需 2 个测试用例,您就涵盖了所有分支和语句。

希望它能让你清楚!我尽力做到了。万一您不明白,请尝试制作程序流程图并重新阅读答案。

编辑 :: 在您的问题描述中引用

我解决了 3 个分支(1.如果 A>B 为真 2.如果 A>B 为假 3.如果 C=D 为真)和 3 条语句(C=A+B、C=A-B 和错误)。

我编号的每一行都是一个陈述,而不仅仅是你写的那些。此外,每个if 条件有 4 个分支 2。重点是用测试用例覆盖每个分支和每个语句。而且问题还问需要多少个测试用例,而不是分支和语句的数量!

【讨论】:

  • 我通过您简单而有用的示例理解了这一点。非常感谢您的帮助。
【解决方案2】:

它要求的是分支和语句覆盖所需的测试数量,而不是语句和分支的数量。

对于语句覆盖条件,每条语句必须至少执行一次,因此必须达到条件和外部的所有语句。为此,我们需要 (A>B) 条件一次评估为真,另一个评估为假,并且 (C=D) 条件评估为真。这可以通过两个测试来完成,因为两个条件(A>B 和 C=D)彼此独立。例如,(A=2, B=1, C=1, D=1) 和 (A=1, B=2, C=3, D=3) 是满足语句覆盖的两个测试用例。

对于分支覆盖,我们需要每个条件判断一次为真,另一个判断为假。同样,这可以通过两个测试来完成,因为条件是相互独立的,所以例如这两个测试:(A=2, B=1, C=1, D=1) 和 (A=1, B=2, C=3, D=6) 将满足分支覆盖标准,因为在我们的测试集中,A>B 和 C=D 都至少评估了一次真假。

【讨论】:

    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 2016-06-21
    • 2011-06-12
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多