白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。
白盒的测试用例需要做到:
保证一个模块中的所有独立路径至少被使用一次
对所有逻辑值均需测试 true 和 false
在上下边界及可操作范围内运行所有循环
检查内部数据结构以确保其有效性
白盒测试的目的:
通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
白盒测试的特点:
依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。
白盒测试的方法
静态方法
动态方法
语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得 A=true B=true C=true 即可
分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。
上例需要设计测试用例使其分别满足下列条件即可:
(1)A=true,B=true,C=true,D=false
(2)A=true,B=false,C=false,D=false。
条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到 A=true,A=false,B=true,B=false
第二个判断应考虑到C=true,C=false,D=true,D=false
所以上例中可以设计测试用例满足下列条件
(1)A=true,B=true,C=true,D=true
(2)A=false,B=false,C=false,D=false。
条件组合覆盖:选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次。
路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件
白盒测试的优缺点
优点
- 迫使测试人员去仔细思考软件的实现
- 可以检测代码中的每条分支和路径
- 揭示隐藏在代码中的错误
- 对代码的测试比较彻底
- 最优化
缺点 - 昂贵
- 无法检测代码中遗漏的路径和数据敏感性错误
- 不验证规格的正确性