您现在的位置是:首页 >技术交流 >【软件测试】第三章 白盒测试网站首页技术交流
【软件测试】第三章 白盒测试
简介【软件测试】第三章 白盒测试
系列文章目录
文章目录
前言
- 白盒测试:结构测试或逻辑驱动测试
- 测试对象:程序的内部逻辑
- 静态白盒测试技术:代码检查、静态结构分析
- 动态白盒测试技术:程序插桩、逻辑覆盖、基本路径测试、域测试
【 第三章 白盒测试 】
3.1 逻辑覆盖
3.1.1 逻辑覆盖的类型
- 逻辑覆盖的类型:
- 语句覆盖:每条可执行语句
- 判定(分支)覆盖:每条分支路径
- 条件覆盖:每个判断的每个条件的所有可能取值
- 判定/条件覆盖:每个分支路径和每个判断的每个条件的所有可能取值
- 条件组合覆盖:每个判断的所有可能的条件取值组合
- 路径覆盖:每条可能的路径
- 只考虑整体:
- 语句覆盖:每条可执行语句
- 判定覆盖:每个判定的所有可能取值
- 路径覆盖:每条可能的路径
- 只考虑局部:
- 条件覆盖:每个判定中每个条件的所有可能取值
- 条件组合覆盖:每个判定所有可能的条件取值组合
- 兼顾整体局部:
- 判定/条件覆盖:同时满足判定覆盖和条件覆盖
- 逻辑覆盖的类型—语句覆盖
-
连锁选择结构:
-
优点:设计测试用例简单,可以很直观的从源代码得到测试用例,无须细分每条判定表达式
-
缺点:仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支是无法预测的。因此语句覆盖对于多分支的逻辑运算时无法全面反映的
- 逻辑覆盖的类型—判定(分支)覆盖
-
同真同假
-
交叉取值
-
优点:
- 比语句覆盖具有更强的测试能力;
- 具有简单性,无须细分每个判定即可得到测试用例
-
缺点:
- 往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径
- 逻辑覆盖的类型—路径覆盖
- 逻辑覆盖的类型—条件覆盖
-
同真同假
-
交叉取值
-
优点:增加了对符合判定情况的测试,增加了测试路径
-
缺点:需要足够多的测试用例,但条件覆盖并不能保证分支覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果
- 逻辑覆盖的类型—条件组合覆盖
- 优点:同时满足判定覆盖、条件覆盖和判定/条件覆盖准则
- 缺点:线性的增加了测试用例的数量
- 逻辑覆盖的类型—判定/条件覆盖
- 优点:同时满足判定覆盖和条件覆盖准则,弥补了二者的不足
- 缺点:未考虑条件的组合情况
3.1.2 复杂情况分析
- 复杂情况分析——分支结构
- 当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构
- 对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例;
- 对于连锁型分支结构, 若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径
- 复杂情况分析——简单循环
- 目标: 在循环内部及边界上执行测试
- 应重点测试的内容(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 黑盒测试与白盒测试的比较
总结
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。