路径测试和分支测试

你能解释一下Path和Branch测试之间的区别吗?

我在很多文章中读到过,但我仍然对这两篇文章感到困惑。

我在堆栈溢出中搜索,但我没有找到任何合适的答案,如果我重复这个问题,请通过提供链接来帮助我。

谢谢


答案 1

快速摘要

总结自 https://www.cs.drexel.edu/~jhk39/teaching/cs576su06/L4.pdf

路径测试:

  • 100%路径覆盖率。
  • 通过程序执行所有可能的控制流路径。

语句测试:

  • 100%的报表覆盖率。
  • 在某个测试下至少执行一次程序中的所有语句。

分支测试:

  • 100%的分支机构覆盖率。
  • 执行足够的测试,以确保每个分支备选方案在某个测试下至少执行一次。

一般来说,路径测试>=分支测试>=语句测试,就它们能为系统的正确性提供多少信心而言。

讨论

路径覆盖率计算通过执行的程序从输入到输出的完整路径数,而分支覆盖率计算在任何时间点测试的分支数。在此定义中,全路径覆盖将导致全分支覆盖。

可能有多个路径命中单个条件语句,并且完整路径覆盖率可能会测试不同的变体(因为在 if 语句中,可能会调用外部资源,该分支覆盖率无法识别)。分支覆盖率更像是测试分支在某个时候被击中,并且参数被正确地传递给模拟外部资源(不一定是之后发生的事情)。

如下所示:https://www.cs.drexel.edu/~jhk39/teaching/cs576su06/L4.pdf,我们有时可以通过流程图来表示所有路径的集合,目标是验证从开始到结束的每个路径在路径测试中是否按预期工作。

分支测试附加说明

从这里:分支测试

Testing in which all branches in the program source code are tested at least once

路径测试附加说明

从这里:http://www.qualitytesting.info/forum/topics/what-is-difference-between-2http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Web/Testing/PathTest.html

A path is a sequence of executable statements. Testers are concerned with
"entry-exit paths", which begin at the entry point into a given process and
proceed to its exit point. 

The objective of path testing is to ensure that each independent path through
the program is executed at least once. An independent program path is one that
traverses at least one new edge in the flow graph. In program terms, this means
exercising one or more new conditions. Both the true and false branches of all
conditions must be executed.

答案 2

基路径测试,一种结构化测试或白盒测试技术,用于设计测试用例,旨在至少检查一次所有可能的执行路径。为所有可能的路径创建和执行测试可产生 100% 的语句覆盖率和 100% 的分支覆盖率。

分支覆盖率是一种测试方法,旨在确保每个决策点的每个可能的分支至少执行一次,从而确保执行所有可访问的代码。

也就是说,每个分支都采取各种方式,真假。它有助于验证代码中的所有分支,确保没有分支导致应用程序的异常行为。


推荐