白盒测试
一、白盒测试定义
白盒测试:又称结构测试,是在已知程序的内部工作过程的情况下,用来测试程序的内部结构,并判定其结果是否与预期的结果一致。
一般说来,白盒测试相对简单,因为白盒测试是在已知程序的内部工作流程的情况下进行的。
而且白盒测试不会直接根据源代码,而是根据程序流程图来设计测试用例和编写测试代码,所以进行白盒测试之前首先要画出程序流程图。
二、白盒测试目的
通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
三、白盒测试种类及方法
种类:主要有静态分析测试、语句分支覆盖测试
方法:
1.语句覆盖
语句覆盖就是设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
例如:下面的几行代码
{x=3, y=3}可以执行到action1
{x=-3, y=0}可以执行到action2
这样通过两个测试用例即可达到语句覆盖的要求。
if(x>0&&y>0) action1; else action2;
2.分支覆盖(判断覆盖)
分支覆盖要求在软件测试中,每个分支都至少获得一次真/假取值的经历。
简单来说就是设计足够多的测试用例,使得被测试程序中的每个判断语句的真假分支至少被执行一次
例如:以下代码中有两个判断语句,分别是if(x>0&&y>0)和if(z<0)
所以为了满足分支覆盖可使用以下测试用例
数据 | if(x>0&&y>0) | if(z<0) |
{x=3, y=3,z=1} | T | F |
{x=-3, y=0, z=-1} | F | T |
if(x>0&&y>0) action1; else action2; if(z<0) action3; action4;
3.谓词覆盖
谓词覆盖有分为原子谓词覆盖、分支-谓词覆盖、复合谓词覆盖
原子谓词覆盖:要求每个复合谓词所包含的每个原子谓词都至少获得一次“真”和一次“假”,也就是说要使每个判断中的每个条件的可能取值至少满足一次。
分支-谓词覆盖:要求不仅每个复合谓词所包含的每个原子谓词都至少获得一次“真”和一次“假”,而且每个复合谓词本身也至少获得一次“真”和一次“假”。
复合谓词覆盖:要求每个谓词中的条件的各种可能组合都至少出现一次。
四、白盒的测试用例
1.保证一个模块中的所有独立路径至少被使用一次
2.对所有逻辑值均需测试 true 和 false
3·在上下边界及可操作范围内运行所有循环
4·检查内部数据结构以确保其有效性
五、黑盒测试和白盒测试的区别
黑盒测试 | 白盒测试 |
不涉及程序结构 | 考察程序逻辑结构 |
用软件规格说明书生成测试用例 | 用程序结构信息生成测试用例 |
可适用于从单元测试到系统验收测试 | 主要适用于单元测试和集成测试 |
某些代码段得不到测试 | 对所有逻辑路径进行测试 |