1

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

模拟考试第 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.if A>B 为假 3. 如果 C=D 为真)和 3 语句覆盖测试( C=A+B ,C=AB 和错误)。

但是答案说 2 次测试语句覆盖率和 2 次分支覆盖率。有人可以解释一下吗。

4

2 回答 2

3

分行覆盖 ::

分支覆盖要求对于程序中的每个分支(例如,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 个测试用例即可涵盖所有语句。

现在,来到分支覆盖

如果您制作上述代码的程序流程图,并按照上面的定义,在 statement3和 at statement有一个分支8,因为它们是if条件,所以它们可以是true或者false因此分支在那里。所以,Branch Coverage 的定义说我们需要遍历程序中的每一个分支。

因为 from 3I 可以去任何一个45(两个分支),让我们说分支343L,分支353R(L 和 R 表示左和右)。同样对于 statement 8,两个分支可以是8to 10(if C != D) 和8to 9and then 108L然后分别调用这两个分支8R。(仅为理解起名)

所以,从测试用例 2你可以意识到你已经覆盖了你的分支3L8R测试用例 1,你可以意识到你已经覆盖了你的分支3R并且8L

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

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

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

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

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

于 2015-07-25T17:16:08.107 回答
1

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

对于语句覆盖标准,每条语句必须至少执行一次,因此必须达到条件和外部的所有语句。为此,我们需要 (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-07-25T17:15:38.213 回答