白盒测试
白盒测试:又称结构测试,基于代码的测试,此方法把测试对象看做一个透明的盒子,对程序所有逻辑路径进行测试。
白盒测试产生的测试用例主要检查点:
(1)程序模块中的所有独立路径至少执行一次;
(2)对所有的逻辑判定的取值(true或false)都至少测试一次;
(3)在上下边界及可操作范围内运行所有循环;
(4)测试内部数据结构的有效性。
常用的白盒测试方法:
逻辑覆盖测试
基本路径测试
循环测试
㈠逻辑覆盖测试
一种基本的白盒测试方法,主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程序。
主要的覆盖标准有:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖。
1. 语句覆盖
语句覆盖就是设计若干个测试用例,运行被测程序,使得每一条可执行语句至少执行一次。
2. 判定覆盖
判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。
3. 条件覆盖
条件覆盖就是设计若干个测试用例,运行被测程序,使程序中每个判断的每个条件的可能取值至少执行一次。
4. 判定-条件覆盖
判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。
5. 条件组合覆盖
条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
6. 路径覆盖
路径覆盖就是设计足够的测试用例,运行被测程序,使得每条可能执行到的路径都至少经过一次(如果程序中包含环路,则要求每条环路至少经过一次)。
㈡基本路径测试
在程序控制流程图的基础上,导出可执行的路径集合,设计测试用例。
基本步骤
▪ 根据程序或设计图画出控制流图
▪ 计算程序环复杂度(即区域数)
▪ 根据环复杂度确定程序执行的基本路径
▪ 设计测试用例
条件测试路径选择
当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构。
对于嵌套型分支结构:若有n 个判定语句,需要n+1 个测试用例;
对于连锁型分支结构: 若有n 个判定语句,需要有2的n次方个测试用例,覆盖它的2的n次方条路径。当n 较大时将无法测试。
㈢循环测试路径选择
循环分为4种不同类型:简单循环、连锁循环、嵌套循环、非结构循环
(1)简单循环(单重循环)
零次循环:从循环入口到出口
1次循环:检查循环初始值
2次循环:检查多次循环
m次循环: 检查在多次循环
最大次数循环、比最大次数多一次、少一次的循环。
(2)嵌套循环(循环再连接循环)
内层循环按照简单循环来处理,之后外推,保持外层循环的循环变量取最小值,内层循环取典型值。
(3)连锁循环(多重循环)
两个独立循环完全没联系,按简单循环处理
循环不是相互独立 ,按嵌套循环处理。
(4)非结构循环(使用非结构的程序设计)
先将其结构化,然后再测试。
白盒测试的优缺点
1. 优点
·迫使测试人员去仔细思考软件的实现
·可以检测代码中的每条分支和路径
·揭示隐藏在代码中的错误
·对代码的测试比较彻底
·最优化
2. 缺点
·昂贵
·无法检测代码中遗漏的路径和数据敏感性错误
·不验证规格的正确性