声明和分支覆盖

时间:2015-07-25 16:45:57

标签: loops testing white-box-testing

大家好,这些天我正在准备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 = AB和错误)。

然而,答案说,2个语句覆盖测试和2个分支覆盖测试。有人可以解释一下。

2 个答案:

答案 0 :(得分:2)

分支覆盖率::

  

分支覆盖率是对程序中每个分支的要求   (例如,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因此分支就在那里。因此,分支覆盖范围的定义表明我们需要遍历程序中的每个分支。

3开始,我可以转到45(2个分支),让我们说分支34是{ {1}}和3L分支35(L和R表示左右)。类似地,对于语句3R,2个分支可以是88(如果是10)和C != D8然后是{{1 }}。然后让这两个分支分别称为910。 (只是为了理解而命名)

因此,从测试用例2 您可以意识到您已经从测试用例1 覆盖了您的分支8L8R,您可以意识到你已经覆盖了你的分支3L8R

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

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

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

  

我解决了3个分支(1.如果A> B为真2.if A> B为假3.如果C = D   是真的)和3个陈述(C = A + B,C = A-B和错误)。

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

答案 1 :(得分: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)是两个满足语句覆盖范围的测试用例。

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