1. 什么是白盒测试
白盒测试也称结构测试、逻辑驱动或基于程序的测试,是一种测试用例设计方法。
一般用于分析程序的内部结构。
针对特定的条件和循环设计测试用例,对程序的逻辑路径进行测试。
用这种发方法进行程序设计时,测试者可以看到被测程序,并分析其内部结构,白盒测试要求对被测程序的结构特性做到一定程度的覆盖。
从这个角度上说,白盒测试也是基于覆盖的测试技术。
2. 白盒测试方法概述
白盒测试通常分为静态和动态两种类型,包含很多常用的方法。
静态分析:
按照一定步骤直接见车源代码或代码的测试方法。
包括-代码审查、桌面检查、代码走查等方法
动态测试:
指按照一定步骤生成测试用例并驱动被测程序运行来发现错误。
包括-基本路径测试、符号测试、逻辑驱动覆盖、循环测试、数据流测试等方法。
3. 逻辑覆盖法
这里就从逻辑覆盖法开始了我的白盒测试学习历程。
逻辑覆盖是白盒测试中以程序内部的逻辑结构为基础的设计测试程序用例的技术。
是一系列测试过程的总称。
根据测试覆盖目标不同,以及覆盖源程序的详尽程度分析由高到低排序,可以分为:
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
条件组合覆盖
路径覆盖
-------------------------分割线----------------------------------
[从实例开始说起]
程序流图如下:
路径:
p1 = {a,c,e}
P2 = {a,c,d}
P3 = {a,b,e}
P4 = {a,b,d}
判断条件
M = {A > 0 && B = 0}
N = {A = 2 || X > 1}
1. 语句覆盖
语句覆盖是选择足够多的测试用例,使得程序中每一条可执行语句至少被执行一次。
可以说是最弱的逻辑覆盖准则
测试用例id | 测试用例输入 | 输出 | 判定M的取值 | 判定N的取值 | 覆盖路径 |
001 | A=2,B=0,X=4 | A=2,B=0,X=3 | T | T | P1 |
2. 判定覆盖
使得程序总每个判定至少都获得一次“真”一次“假”,每次可以同时真或假,保证总共有真有假就好了。
测试用例id | 测试用例输入 | 输出 | 判定M的取值 | 判定N的取值 | 覆盖路径 |
002 | A=2,B=0,X=4 | A=2,B=0,X=3 | T | T | P1 |
003 | A=1,B=1,X=1 | A=1,B=1,X=1 | F | F | P4 |
3.条件覆盖
使得程序中每个判定中包含的每个条件都至少获得一次“真”一次“假”。
对判定M:
T1: A>1, 假为F1
T2: B=0, 假为F2
对判定N:
T3: A=2, 假为F3
T4: X>1, 假为F4
设计用例如下
测试用例id | 测试用例输入 | 输出 | 取值条件 | 具体取值条件 | 覆盖路径 |
004 | A=2,B=0,X=4 | T1,T2,T3,T4 | A>1,B=0,A=2,X>1 | P1 | |
005 | A=1,B=1,X=1 | F1,F2,F3,F4 | A<=1,B!=0,A!=2,X<1 | P4 |
4. 判定/条件覆盖
每个判定和判定包含条件的真假结果都出现一次
测试用例id | 测试用例输入 | 输出 | 覆盖条件取值 | 覆盖条件组合 | 覆盖路径 |
006 | A=2,B=0,X=3 | T1,T2,T3,T4 | 1,5 | P1 | |
007 | A=2,B=1,X=2 | T1,F1,T2,F2 | 2,6 | P3 |
5. 组合覆盖
所有条件组合都有一次
测试用例id | 测试用例输入 | 输出 | 覆盖条件取值 | 覆盖条件组合 | 覆盖路径 |
008 | A=2,B=0,X=4 | A=2,B=0,X=3 | T1,T2,T3,T4 | 1,5 | P1 |
009 | A=2,B=1,X=1 | A=2,B=1,X=2 | T1,F1,T2,F2 | 2,6 | P3 |
010 | A=1,B=0,X=3 | A=1,B=0,X=4 | F1,T2,F3,T4 | 3,7 | P3 |
011 | A=1,B=1,X=1 | A=1,B=1,X=1 | F1,F2,F3,F4 | 4,8 | P4 |
6.路径覆盖
顾名思义每个路径都走一次
测试用例id | 测试用例输入 | 输出 | 覆盖条件取值 | 覆盖条件组合 | 覆盖路径 |
012 | A=2,B=0,X=4 | A=2,B=0,X=3 | T1,T2,T3,T4 | 1,5 | P1 |
013 | A=1,B=0,X=1 | A=1,B=0,X=1 | T1,F2,T3,F4 | 2,6 | P4 |
014 | A=2,B=1,X=1 | A=2,B=1,X=2 | F1,T2,F3,T4 | 3,7 | P3 |
015 | A=3,B=0,X=1 | A=3,B=0,X=2 | F1,F2,F3,F4 | 4,8 | P2 |