我正在准备测试认证。这些类型的问题经常被问到。

Example 1:
Read P
Read Q
IF P+Q > 100 THEN
Print “Large”
ENDIF
If P > 50 THEN
Print “P Large”
ENDIF


Example 2:
 READ X
 READ Y
 I F X>Y THEN Z = 0
 ENDIF


Example 3:
1 READ X
 2 READ Y
 3 Z =X + 2*Y
 4 IF Z> 50 THEN
 5 PRINT large Z
 6 ENDIF




流程图中的节点和边是什么?

Statement Coverage: 1A-2C-3D-E-4G-5H = 1
Branch Coverage: 1A-2C-3D-E-4G-5H , 1A-2B-E-4F = 2
Path Coverage: 4
1A-2B-E-4F
1A-2B-E-4G-5H
1A-2C-3D-E-4G-5H
1A-2C-3D-E-4F


请解释一下,答案是怎么来的?

在这些示例中,我们如何识别语句,分支和条件?我们如何衡量覆盖率?请提供所有3个示例的详细说明。

评论

您的答案是什么,您如何看待正确答案?为什么学习指南不够用?

删除手动测试,测试管理,测试设计标签,因为问题与测试无关;使用“技术”标签,因为“技术”可能有任何含义;和“ code-review”标签,因为该问题与代码审查有关。

#1 楼

答案的计算方式


声明:简单来说,这些就是您在包装盒和菱形中所拥有的。


您可以涵盖所有通过编写遵循以下路由的1个测试用例在流程图中的语句


1A-2C-3D-E-4G-5H。


因此,语句的覆盖范围为1



分支/决策:您可以在流程流程图中进行的决策(例如,如果您认为语句2有两个分支)


通过编写遵循以下两条路线的2个测试用例,您可以覆盖流程图中的所有分支


1A-2C-3D-E-4G-5H
1A-2B-E-4F


因此,分支机构覆盖范围是2







路径:可以在流程图中从头到尾传播的路径。


您可以通过编写遵循以下f的4个测试用例来覆盖流程图中的所有路径。我们的路线


1A-2B-E-4F
1A-2B-E-4G-5H
1A-2C-3D-E-4G-5H
1A-2C-3D-E-4F


因此,路径覆盖范围是4





>覆盖率

可以为上述三种技术计算覆盖率。


声明覆盖率


让我们说您的测试用例涵盖以下路线-1A-> 2B-> E-> 4F


流程图中总共有5条语句
您仅涵盖3条语句

计算语句覆盖率-(3/5)* 100




您的测试用例具有60%的语句覆盖率






分支覆盖范围


让我们说您的测试用例涵盖以下路线- 1A-> 2B-> E-> 4F



您的流程图中共有4个分支/决定(第2号声明的2个决定和第4号声明的2个决定)
您只涵盖2个分支/决定

计算分支/决策覆盖率-(2/4)* 100



您的测试用例因此具有50%的语句覆盖率





路径覆盖范围


让我们说您的测试用例涵盖以下路径-1A-> 2B- > E-> 4F


流程图中总共有4条路径
您仅覆盖1条路径

计算路径覆盖率-(1 / 4)* 100



因此,您的测试用例具有25%的路径覆盖率





希望这能回答您的问题。

您可以在此处找到有关这些术语的更多信息,或者简单的Google搜索将为您提供足够的资源。

#2 楼

在进行控制流测试之前,需要绘制流程图,然后选择要使用的覆盖率。

对于语句覆盖率,需要找到遍历所有路径的路径(从流程图的开始到结尾)。语句,这些路径的数量最小。换句话说,如果您运行找到的所有路径,则将执行所有语句,并且这些路径的数量最小。

对于分支覆盖,您发现的所有路径必须覆盖所有行。

要覆盖路径,您需要找到从流程图开始到结尾的所有可能路径。从开始到E有2种方法,从E到结束有2种方法,那么总数为2 * 2 =4。

#3 楼

让我们从基本的东西开始。
您提供的流程图只是示例代码1的另一种表示。每个控制流都表示为edge(在此为线),并且始终连接两个节点(在此处为语句)。

与黑盒测试相反,您知道要在白盒测试中测试的程序代码。在您的示例中,您将测试代码,并确定其语句,分支和路径覆盖范围。使用@vhreal表示的代码图形化表示总是有帮助的。
通常,无论您具有什么覆盖率,都应尝试使其最大化(意味着100%覆盖率)。

你怎么做呢?从程序的开头(流程图)开始,您尝试到达程序的结尾。这就是所谓的路径。在这两者之间,您尝试达到当前所查看内容的100%覆盖率。让我们为语句做一次。


语句1是您的起点。语句1的唯一输出边缘是A-> 1A
语句2是一个条件。我们有两种可行的方法-> 2B和2C


如果您选择了2B,则分支结束于if。只有边E继续前进-> E
如果采用2C,则到达语句3。同样,只有一个输出边D-> 3D


...

因此,我们通过4种不同的方法来查看流程图:



1A-> 2B-> E-> 4F(= 60%声明覆盖率)

1A-> 2B-> E-> 4G-> 5H(= 80%声明覆盖率)

1A-> 2C-> 3D-> E- > 4F(= 80%声明覆盖率)

1A-> 2C-> 3D-> E-> 4G-> 5H(= 100%声明覆盖率)

目标是使用路径4最少的测试用例数来达到100%的覆盖率。这很容易,但是如果要确定全部4%的100%陈述覆盖率,则要决定采用哪种路径更困难路径的语句覆盖率<100%。

#4 楼

语句覆盖率=一个真实的可能语句,该语句导致每个语句,块,分支中的事实。从头到尾:“ 1A-2C-3D-E-4G-5H”只是一种可能的方式。

分支覆盖率=一个正确的可能语句+一个错误的可能语句。每个分支条件。

路径覆盖率=每个分支条件中的所有可能路径。