软件中的路径测试和基础路径测试示例

软件测试中的路径测试是什么?
路径测试是一种结构测试方法,它涉及使用程序的源代码来查找所有可能的可执行路径。它有助于确定一段代码中的所有错误。此方法旨在执行计算机程序中的所有或选定的路径。
任何非平凡程序都包含许多可能的执行路径。测试每一条路径既困难又耗时,而且大多数路径都会重叠。基本路径测试通过识别出能够至少执行到每个语句和每个分支一次的最小路径集合来减少这种冗余。
软件工程中的基础路径测试
基础路径测试 在软件工程中 白色 Box 测试与验证 该方法基于程序中可采用的流程或逻辑路径来定义测试用例。基本路径测试的目标是定义独立路径的数量,因此可以明确定义所需的测试用例数量,以最大化测试覆盖率。
In 软件工程,基础路径测试涉及执行程序中所有可能的块,并以最少的测试用例实现最大的路径覆盖率。它是分支测试和路径测试方法的混合方法。
一个简单的例子就能使这个概念具体化。
上面的流程图包含条件语句,因此控制流可以通过多条路径到达出口。需要三条独立的路径才能覆盖整个流程:
- 路径1:1,2,3,5,6,7
- 路径2:1,2,4,5,6,7
- 路径31 6,7
如何绘制控制流程图
基础路径测试的每一步都依赖于控制流图,因此,精确地构建控制流图是值得的。
- 节点: 一系列始终同时执行的语句,用圆圈表示。没有分支的语句序列会合并成一个节点。
- 边缘: 控制权从一个节点转移到下一个节点,用箭头表示。控制权转移的唯一途径就是通过边。
- 谓词节点: 包含条件的节点,且有两条或多条边从该节点发出。这些边决定了节点的复杂度。
- 地区: 由边和节点围成的区域。区域数加一也等于环路复杂度。
考虑一个包含两个决策的简短模块:
if (a > b) { // node 1, predicate max = a; // node 2 } else { max = b; // node 3 } if (max > limit) { // node 4, predicate alert(); // node 5 } return max; // node 6
该图有 6 个节点和 6 条边,根据边数公式,V(G) = 6 – 6 + 2 = 2。谓词计数法可以更快地得出相同的结果:2 个决策加 1 等于 3 条独立路径,分别经过两个分支。选择你能可靠计算的方法,并与其他方法进行交叉验证。
两条规则可以避免大多数错误。 首先,复合病症,例如 如果 (x > 0 && y > 0) 因为短路会产生第二个决策,所以算作两个谓词节点,而不是一个。其次,无论循环迭代多少次,它都只贡献一个谓词节点。
基础路径测试步骤
基本路径测试的基本步骤包括
基础路径测试的优势和局限性
基础路径测试的优势
- 它有助于减少冗余测试
- 它重点关注程序逻辑
- 它以分析为基础,取代了任意的测试用例选择。
- 执行基础集的测试用例将至少执行一次程序中的每个语句
基础路径测试的局限性
- 找不到缺失的代码。 从未实现的需求没有路径,因此不会为其生成测试用例。基础路径测试必须与基于需求的测试相结合。
- 路径数量增长迅速。 嵌套循环和复合条件会迅速增加复杂度,V(G) 大于 20 的模块用这种方式覆盖就变得不切实际了。
- 覆盖面广并不等于正确性。 执行某个路径只能证明代码能够运行,并不能证明它能产生正确答案。每个测试仍然需要一个有意义的断言。
- 数据相关路径。 有些路径只能通过特定的输入组合才能到达,而这些输入组合可能很难甚至不可能构建。

