《软测》期末复习白盒测试内容+题型总结(更新中)

第三章 白盒测试

3.0 概述

0.1 白盒测试定义

•白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。
•又称为 结构测试逻辑驱动测试

0.2 遵循原则

•采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:
➢保证一个模块中的所有独立路径至少被测试一次。
➢所有逻辑值均需测试真 (true) 和假 (false) 两种情况。
➢检查程序的内部数据结构,保证其结构的有效性。
➢在上下边界及可操作范围内运行所有循环。

0.3白盒测试方法

白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有:
➢逻辑覆盖法(逻辑驱动测试)
➢基本路径法
•此外还有:
–循环测试法
–程序插桩法

3.1逻辑覆盖测试

3.1.1 语句覆盖
  • 【定义】
    语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

  • 【语句覆盖率】
    ▫️已执行的可执行语句占程序中可执行语句总数的百分比
    ▫️复杂的程序不可能达到语句的完全覆盖
    ▫️语句覆盖率越高越好

  • 【优点】
    (1)检查所有语句
    (2)结构简单的代码的测试效果较好
    (3)容易实现自动测试
    (4)代码覆盖率高
    (5)如果是程序块覆盖,则不涉及程序块中的源代码

  • 【缺点】
    由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。

3.1.2 判定覆盖
  • 【定义】
    •判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
    •判定覆盖又称为分支覆盖。

  • 【优点】
    判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

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

3.1.3 条件覆盖
  • 【定义】
    往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。
  • 【优点】
    增加了对条件判定情况的测试,增加了测试路径。
  • 【缺点】
    条件覆盖不一定包含判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
3.1.4 判定/条件覆盖
  • 【定义】
    •判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法,
    •就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判定的可能结果也至少出现一次。
    •设计测试用例覆盖4个条件的8种取值以及4个判定分支。
  • 【优点】 :能同时满足判定、条件两种覆盖标准。
  • 【缺点】 :判定/条件覆盖准则的缺点是未考虑条件的组合情况。
3.1.5 组合条件覆盖
  • 【定义】
    条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
  • 【优点】 :条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。
  • 【缺点】 :线性地增加了测试用例的数量。
3.1.6 路径覆盖
  • 【定义】
    路径覆盖就是设计足够的测试用例,覆盖程序中所有可能的路径。
  • 【说明】
    1)满足路径覆盖的测试用例并不一定满足组合覆盖。
    2)对于比较简单的小程序,实现路径覆盖是可能做到的。但如果程序中出现较多判断和较多循环,可能的路径数目将会急剧增长,要在测试中覆盖所有的路径是无法实现的。为了解决这个难题,只有把覆盖路径数量压缩到一定的限度内,如程序中的循环体只执行一次。
    3)在实际测试中,即使对于路径数很有限的程序已经做到路径覆盖,仍然不能保证被测试程序的正确性,还需要采用其他测试方法进行补充。
3.1.7 小结
  • 各种各种方法的逻辑覆盖程度
    在这里插入图片描述 - 采用任何一种覆盖方法都不能满足我们的要求,所以,在实际的测试用例设计过程中,可以根据需要将不同的覆盖方法组合起来使用,以实现最佳的测试用例设计 。
3.1.8 解题步骤/模版

(1)根据题目代码画出流程图(若题目已给出流程图,此步省略)
(2)在流程图上标出路径(即分枝,一般用字母)
(3)设计用例图

  • 语句覆盖(使每条语句执行一次,用例个数=分支个数)
    在这里插入图片描述

  • 判定、条件、判定/条件覆盖

  • 组合覆盖

  • 路径覆盖

3.1.9 例题

【题】设计测试用例,实现语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖.
【解】

3.2 基本路径测试

3.2.1 控制流图
  1. 根据程序抽象出程序流程图,每个节点表明数字(数字代表程序语句所在行号);
  2. 将所有的节点都抽象为圆形。在选择或者多分支结构中分支的汇聚处,即使汇聚处没有执行语句也要添加一个汇聚节点。记得在每条边上标注顺序,一般为a/b/c;
3.2.2 环形复杂度

一种为程序逻辑复杂度提供定量的尺度的软件度量。
一般有三种方法:

流图中区域的数量对应于环形复杂度;
给定流图 G 的环形复杂度为 V ( G ) ,定义为
V (G)= E − N − 2 E是流图中边的数量, N是流图中节点的数量;
V ( G ) = P + 1 P 是流图 G 中判定节点的数量。

3.2.3 独立路径

独立路径是指从程序的入口到出口的多次执行中,每次至少有一个语句是新的,未被重复的,也即每次至少要经历一条从未走过的弧。

3.2.4 设计步骤/模版
  1. 标路径、画控制流图
  2. 计算环形复杂度
  3. 找出独立路径(数目=环形复杂度)
  4. 设计测试用例
    在这里插入图片描述
3.2.5 例题

3.3循环测试

3.4静态测试—代码检查

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值