白盒测试是一种根据代码进行的测试方式。根据是否运行代码,白盒测试可分为静态测试与动态测试。
静态测试
不要求实际运行待测程序,主要以一些人工模拟技术对软件进行分析和测试。静态测试有以下的常用方法:
- 代码Review;
- 代码结构静态分析;
- PC-lint等工具检查;
动态测试
通过运行一组预先按照一定测试准则构造的示例数据运行待测程序,从而检查是否有错误的测试过程。动态测试有以下的常用方法:
- 语句覆盖:程序中每个语句至少都能被执行一次;缺点在于当部分条件判定有误时,语句覆盖可能难以检测问题所在。
- 判定覆盖:程序中每个分支至少都通过一次;缺点在于如果异常发生需要两个判断条件均为真,那么条件覆盖就测不出该异常。
- 条件覆盖:程序中每个条件获得各种可能的结果;缺点在于在部分情况下,可能难以覆盖部分特定条件下才能触发的语句;
- 判定/条件覆盖:程序中每个条件取到各种可能的值,并使每个判定取到各种可能的结果;缺点在于对于大多数计算机来说,条件往往被拆分成多个简单判定,实际可能有未取到的路径;
- 条件组合覆盖:程序中每个判定条件的各种可能组合都至少出现一次;缺点可能会有部分路径覆盖缺失;
- 路径覆盖:程序中每条路径都需要被覆盖;缺点在于未必考虑判定条件结果的组合,不能替代条件覆盖和条件组合覆盖。
覆盖要求
- 保证模块中所有独立路径至少被使用一次
- 对所有逻辑值均需测试true和false
- 在上下边界及可操作范围内运行所有循环
- 检查内部数据结构以确保其有效性