您现在的位置是:首页 >技术交流 >【软件测试】第三章 白盒测试网站首页技术交流

【软件测试】第三章 白盒测试

小手の冰凉 2024-07-04 11:18:03
简介【软件测试】第三章 白盒测试

系列文章目录



前言

  • 白盒测试:结构测试或逻辑驱动测试
  • 测试对象:程序的内部逻辑
  • 静态白盒测试技术:代码检查、静态结构分析
  • 动态白盒测试技术:程序插桩、逻辑覆盖、基本路径测试、域测试

【 第三章 白盒测试 】

3.1 逻辑覆盖

3.1.1 逻辑覆盖的类型

  • 逻辑覆盖的类型:
    • 语句覆盖:每条可执行语句
    • 判定(分支)覆盖:每条分支路径
    • 条件覆盖:每个判断的每个条件的所有可能取值
    • 判定/条件覆盖:每个分支路径和每个判断的每个条件的所有可能取值
    • 条件组合覆盖:每个判断的所有可能的条件取值组合
    • 路径覆盖:每条可能的路径
  • 只考虑整体:
    • 语句覆盖:每条可执行语句
    • 判定覆盖:每个判定的所有可能取值
    • 路径覆盖:每条可能的路径
  • 只考虑局部:
    • 条件覆盖:每个判定中每个条件的所有可能取值
    • 条件组合覆盖:每个判定所有可能的条件取值组合
  • 兼顾整体局部:
    • 判定/条件覆盖:同时满足判定覆盖和条件覆盖
  1. 逻辑覆盖的类型—语句覆盖
  • 连锁选择结构:
    在这里插入图片描述

  • 优点:设计测试用例简单,可以很直观的从源代码得到测试用例,无须细分每条判定表达式

  • 缺点:仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支是无法预测的。因此语句覆盖对于多分支的逻辑运算时无法全面反映的
    在这里插入图片描述

  1. 逻辑覆盖的类型—判定(分支)覆盖
  • 同真同假
    在这里插入图片描述

  • 交叉取值
    在这里插入图片描述

  • 优点:

    • 比语句覆盖具有更强的测试能力;
    • 具有简单性,无须细分每个判定即可得到测试用例
  • 缺点:

    • 往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径
  1. 逻辑覆盖的类型—路径覆盖

在这里插入图片描述

  1. 逻辑覆盖的类型—条件覆盖
  • 同真同假
    在这里插入图片描述

  • 交叉取值
    在这里插入图片描述

  • 优点:增加了对符合判定情况的测试,增加了测试路径

  • 缺点:需要足够多的测试用例,但条件覆盖并不能保证分支覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果
    在这里插入图片描述

  1. 逻辑覆盖的类型—条件组合覆盖

在这里插入图片描述
在这里插入图片描述

  • 优点:同时满足判定覆盖、条件覆盖和判定/条件覆盖准则
  • 缺点:线性的增加了测试用例的数量
    在这里插入图片描述
  1. 逻辑覆盖的类型—判定/条件覆盖

在这里插入图片描述
在这里插入图片描述

  • 优点:同时满足判定覆盖和条件覆盖准则,弥补了二者的不足
  • 缺点:未考虑条件的组合情况
    在这里插入图片描述

3.1.2 复杂情况分析

  1. 复杂情况分析——分支结构
  • 当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构
  • 对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例;
  • 对于连锁型分支结构, 若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径
    在这里插入图片描述
  1. 复杂情况分析——简单循环
  • 目标: 在循环内部及边界上执行测试
  • 应重点测试的内容(n为循环最大次数):
    • 零次循环(跳过循环)
    • 一次循环:检查循环初始值
    • 二次循环
    • m次循环,其中2<m<n-1
    • n-1,n和n+1次循环
      在这里插入图片描述

3.复杂情况分析——嵌套循环

  • 对最内层循环做简单循环的全部测试。所有其他层的循环变量置为最小值;
  • 逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其他嵌套内层循环的循环变量取“典型”值。
  • 反复进行,直到所有各层循环测试完毕。
  • 对全部各层循环同时取最小循环次数,或者同时取最大循环次数。
    在这里插入图片描述

4.复杂情况分析——串接循环

  • 如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。
  • 但如果几个循环不是互相独立的,则需要使用测试嵌套循环的办法来处理。
    在这里插入图片描述

5.复杂情况分析——不规则循环

  • 不能进行测试
  • 需要重新设计成结构化的程序后再进行测试
    在这里插入图片描述

3.1.3 覆盖测试准则——Foster

  • 【规则1】对于A rel B(rel为<、=和>)型的分支谓词,应适当选择A与B的值,使得测试执行到该分支语句时,A<B、A=B、A>B分别出现一次
  • 【规则2】对于A rel1 C(rel1为<或>,A是变量,C是常量)型的分支谓词,当rel1为<时,应适当选择A的值,使A=C-M;同样,当rel1为>时,应适当选择A的值,使A=C+M
  • 【规则3】对外部输入变量赋值,使其在每一测试用例中均有不同的值与符号,并与同一组测试用例中其他变量的值与符号不一致

3.2 基本路径测试

3.3 静态白盒测试技术

3.4 其他白盒测试方法

3.5 白盒测试策略

3.6 黑盒测试与白盒测试的比较


总结

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。