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