第3章 软件测试方法--基于逻辑覆盖的方法(白盒测试)


白盒测试:关注源代码程序结构

优势

  1. 针对性强,测试效率高,通过不同的白盒覆盖指标有助于衡量对被测对象的测试覆盖程度。
  2. 在函数级别开始测试工作,缺陷修复的成本低

局限性:对测试人员的技术要求高,没有一定编程经验的人是无法做白盒测试的

适用阶段:
测试对象为函数时, 对应的是单元测试阶段,主要由开发人员自己来完成测试工作。
测试对象为功能时,对应的是集成测试甚至系统测试阶段,主要由测试人员来完成测试工作

3.4.1 语句覆盖

语句覆盖法:设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次

缺陷:发现不了判定中逻辑运算的错误,不是一种充分的检验方法。只在乎是否完成运行,不考虑其他情况。

eg:在这里插入图片描述
(a,b,c)=(1,1,2)可以执行所有语句。但是如果将逻辑符号and或or输入错误则无法执行。
在这里插入图片描述
语句覆盖是最弱的逻辑覆盖标准。

优点:直观地从代码中得到测试用例,无须细分每条判定表达式。

3.4.2 判定覆盖

判定覆盖法:设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。

eg:
在这里插入图片描述
在这里插入图片描述
两个测试用例可以满足每个判定的真假值均被满足一次。

优点:比语句覆盖更强的测试能力。
缺点:无法确定判断内部条件的错误(若是某一条件错误,测试用例仍能通过)。容易遗漏部分测试路径。

3.4.3 条件覆盖

条件覆盖:设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次(每个条件)。

eg: 首先列出所有条件
在这里插入图片描述
在这里插入图片描述
四个条件的真假全覆盖。

优点:比判定覆盖增加了对符合判定情况的测试,增加了测试路径。
缺点:不能保证判定覆盖(无法考虑所有判定结果)。

3.4.4 判定-条件覆盖

判定-条件覆盖:判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次

eg.
在这里插入图片描述
在这里插入图片描述
所有条件的真假判定结果的真假都要执行一次。

3.4.4 条件组合测试

条件组合覆盖:设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次(它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次),并且每个判断本身的判定结果也至少出现一次

eg:首先列出条件所有组合
在这里插入图片描述
在这里插入图片描述

3.4.6 基本路径覆盖

路径覆盖:设计所有的测试用例,来覆盖程序中的所有可能的执行路径

基本路径覆盖的设计过程
在这里插入图片描述

  1. 画出控制流图

  2. 计算环复杂度
    ①流图中区域的数量(封闭+开放) = 环形复杂度
    ②V = E - N+ 2; E是边数 N是节点数
    ③v = P + 1; P是判定节点数

  3. 基本复杂度:通过对程序图中的结构化设计节点进行不断压缩,最终得到一个无法压缩的程序图,该图的环复杂度就称为基本复杂度

  4. 独立路径抽取:
    环复杂度 = 独立路径条数
    ①确定主路径:该路径应包含尽可能多的判定节点
           应包含尽可能复杂的判定表达式
           应对应尽可能高的执行概率
           应包含尽可能多的语句
    ②根据基础路径抽取其他独立路径
    eg:A、B、C为判定点
    在这里插入图片描述
    Path1:A, B, C, G(经过判定节点A、B、C);
    Path2:A, D, E, F, G(在判定节点A处执行e2分支);
    Path3:A, B, E, F, G(在判定节点B处执行e5分支);
    Path4:A, B, C, B, C, G(在判定节点C处执行e3分支);
    Path5:A, D, F, G(在判定节点D处执行e7分支)
    覆盖判定点的每条路径

测试用例设计步骤

  1. 根据程序源代码生成程序图
  2. 计算程序图的环复杂度,确定独立路径集合的大小
  3. 以最复杂的路径为基础路径,通过覆盖所有判定分支确定其他路径,抽取独立路径集合
  4. 注意剔除不可行路径(程序的设计缺陷导致不可行路径),必要时补充其他重要的路径
  5. 根据得到的路径集合对应设计测试用例

:基本路径测试并不是测试所有路径的组合,仅仅保证每条基本路径被执行一次

3.4.7 循环测试

循环测试:在循环内部及边界上执行测试

循环分为四种:简单循环、嵌套循环、连锁循环和非结构循环

  1. 简单循环(迭代次数n)
    在这里插入图片描述

测试方法:
    1.完全跳过循环
    2.只经过循环一次
    3.经过循环两次
    4.经过循环m( m < n )次
    5.分别经过循环n-1, n, n+1 次

  1. 嵌套循环
    在这里插入图片描述

测试方法:在最里面的循环完成前面所述的简单循环测试,同时设定外部循环的最小迭代次数,逐步向外循环进行,直到所有循环被测试

  1. 连锁循环(串行连接的循环)
    在这里插入图片描述
    独立循环–》可以分别看着简单循环测试
    依赖性循环–》可以看着是嵌套循环
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
软件测试中的三角形逻辑覆盖(Triangle Coverage)是一种测试方法,它主要用于分析程序控制流。三角形覆盖是路径覆盖的一种扩展,它的名称来源于逻辑覆盖图中测试用例产生的三角形区域。在图形表示中,每个逻辑分支会形成一个节点,而测试用例的组合会在这些节点之间形成路径。三角形覆盖要求至少包含以下三种类型的路径: 1. **基本路径(Base Case)**:如果一个逻辑结构有三个或更多的条件,则每个条件都有一种可能为真和其余为假的组合,这样的路径称为基本路径。 2. **边界路径(Boundary Case)**:当某个条件刚好处于真值的边缘(如最大值或最小值),或者逻辑表达式的结果刚好等于边界值时,对应的路径叫做边界路径。 3. **回溯路径(Backtrack Path)**:如果一个条件在某条路径上为真,但在后续的路径上变为假,形成了一个U形或倒L形的路径,这被称为回溯路径。 三角形覆盖确保了对程序控制流的深度和广度都有充分的覆盖,但是它并不保证所有可能的输入情况都被测试到,因为某些复杂的条件组合可能并未构成三角形区域。因此,三角形覆盖常常与其他覆盖标准(如路径覆盖、条件覆盖等)结合使用,以提供更全面的测试覆盖率。如果你需要了解如何在实际代码中实施三角形覆盖,或者想了解如何设计测试用例以满足这个标准,我们可以深入讨论具体的测试策略和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值