软件测试 - 控制流路径



软件测试可以分为两种主要技术:白盒黑盒测试。在白盒测试中,代码内部会被验证。控制流路径是白盒测试下的一个概念。它以图形方式表示软件代码的流程,并显示运行代码时可以遍历的每条路径。

什么是控制流路径?

控制流路径测试是一种软件代码的结构测试。测试人员需要了解代码结构、设计、实现逻辑、算法才能进行控制流路径测试。然而,它大多由开发人员自己完成,他们实际上已经实现了代码。这种方法测试了整个实现逻辑,以及软件的各个模块是如何相互连接的。

控制流路径测试的过程

控制流路径测试的过程如下所示:

  • 创建控制流图 - 从可用的代码片段中,手动或使用工具创建控制流图。
  • 覆盖目标 - 在控制流图中,借助节点、边、路径、分支等描述覆盖目标。
  • 创建测试用例 - 创建涵盖所有覆盖目标的测试用例。
  • 执行测试用例 - 执行测试用例。
  • 分析测试结果 - 将测试用例执行的结果与预期结果进行比较,以确认软件中是否存在错误。

什么是控制流图?

控制流图被称为程序代码完整流程的图形表示。由于它描绘了代码的整个过程,因此主要用于静态分析和编译器软件。

控制流图的特征

控制流图的特征如下所示:

  • 它由程序代码中遵循的完整过程驱动。
  • 它发现运行代码时可以覆盖的每条路径。
  • 它是一个完整的有向图。
  • 它的边描述了可以遍历的路径,而节点描述了基本块。
  • 它有两个部分,即入口块,它指向控制流图的入口点,以及出口块,它指向控制流图的出口点。

控制流图的不同组成部分

控制流图的不同组成部分如下所示:

If-then-else 块

If-then-else Block

While 块

While Block

Do While 块

Do While Block

For 块

For Block

示例

让我们以以下代码块为例,从中我们将绘制控制流图。

IF I = 250
   THEN IF J > K
   THEN I = J
ELSE I = K
   END IF
END IF
PRINT I

上面几行代码的控制流图如下所示:

control flow graph

控制流测试的目标

控制流测试的目标如下所示:

  • 它确保代码的所有路径至少被遍历一次。
  • 它确保代码的所有条件点至少被判断为假和真一次。
  • 它确保通过至少运行代码中每个条件点一次来触及条件的所有可能结果。
  • 它分析代码在各种用例中的运行方式,即零次、一次和多次迭代。
  • 它检查代码中是如何进行异常处理的。
  • 它评估决策语句中的简单和复杂条件。
  • 它降低了代码的圈复杂度。
  • 它验证了软件的不同组件在集成后如何相互通信。
  • 它验证了当将极端边界值输入到软件中时,代码的反应。

控制流测试的优点

控制流测试的优点如下所示:

  • 它检测在单元测试阶段将被识别出的最大数量的错误。
  • 它也能够检测在整个测试周期中将被识别出的某些部分的错误。

  • 它支持手动和自动化两种方法,因为控制流图既可以通过手动创建,也可以借助工具创建。

控制流测试的缺点

开发代码的开发人员在进行控制流测试时,并不总是能够检测到自己是否覆盖了代码中的所有路径。

结论

本教程全面介绍了软件控制流路径,到此结束。我们从描述什么是控制流路径、控制流路径测试的过程是什么、什么是控制流图、控制流图的特征是什么、控制流图的不同组成部分是什么、控制流图的示例是什么、控制流测试的目标是什么、控制流测试的优点是什么以及控制流测试的缺点是什么开始。这使您能够深入了解软件控制流路径。明智的做法是不断实践您所学到的知识,并探索与软件测试相关的其他内容,以加深您的理解并拓宽您的视野。

广告