分行覆盖 ::
分支覆盖要求对于程序中的每个分支(例如,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 3
I 可以去任何一个4
或5
(两个分支),让我们说分支3
到4
是3L
,分支3
到5
是3R
(L 和 R 表示左和右)。同样对于 statement 8
,两个分支可以是8
to 10
(if C != D
) 和8
to 9
and then 10
。8L
然后分别调用这两个分支8R
。(仅为理解起名)
所以,从测试用例 2你可以意识到你已经覆盖了你的分支3L
,8R
从测试用例 1,你可以意识到你已经覆盖了你的分支3R
并且8L
因此,只需 2 个测试用例,您就涵盖了所有分支和语句。
希望它能让你清楚!我尽力做到了。万一您不明白,请尝试制作程序流程图并重新阅读答案。
编辑::在您引用的问题描述中
我解决了 3 个分支(1.如果 A>B 为真 2.如果 A>B 为假 3.如果 C=D 为真)和 3 个语句(C=A+B,C=AB 和错误)。
我编号的每一行都是一个声明,而不仅仅是你写的那些。if
此外,每个条件有 4 个分支 2 。重点是用测试用例覆盖每个分支和每个语句。而且问题还问需要多少测试用例,而不是分支和语句的数量!