-
白盒测基本特点
-
优点:代码覆盖率高
-
缺点:
-
覆盖所有代码路径难度大
-
业务功能覆盖可能不全
-
测试开销大
-
-
-
白盒测试设计方法
- 静态设计方法
- 桌面检查,也就是交叉检查
- 代码审查
- 代码走查
- 代码扫描工具
- 动态设计方法
- 逻辑覆盖法
- 语句覆盖
- 判断覆盖
- 条件覆盖
- 判定条件覆盖
- 条件组合覆盖
- 路径覆盖
- 基本路径测试法
- 逻辑覆盖法
- 静态设计方法
-
逻辑覆盖法
- 定义:对程序逻辑结构遍历实现逻辑覆盖
- 覆概率:是用来度量测试完整性的一个手段(被执行数/item总数)
-
测试案例
-
语句覆盖:
-
定义:使每条语句都被执行
-
{x=3,y=1,magic=2} //覆盖语句1,4 {x=-3,y=-1,magic=-2} //覆盖语句2,3,4
-
缺点:语句覆盖标准最弱,不能准确覆盖语句中逻辑错误,例如:
-
if (x>0 && y >0)//正确代码 if (x>0 || y >0)//错误代码 //之前的测试用例都会覆盖所有语句,但没有发现代码错误
-
-
判定覆盖:
-
定义:使每个判断的真和假都至少被执行一次,也就是说程序的每个分支都会被执行一次
-
if (x>0 && y >0)//记为P1 if (magic <0 )//记为P2 {x=3,y=1,magic=2} //P1:T, P2:F {x=-1,y=0,magic=-2} //P1:F, P2:T
-
缺点:也可能会错过条件中的逻辑运算符错误
-
if (x>0 && y >0)//正确代码 if (x>0 || y >0)//错误代码 //每个分支都被覆盖,逻辑错误依旧被忽略
-
补充: 判定覆盖必定满足语句覆盖
-
-
条件覆盖:
-
使得判定中的每个条件至少有一次真值和假值
-
if (x>0 && y >0)//记为P1 if (magic <0 )//记为P2 x>0//记为C1 y>0//记为C2 magic<0//记为C3 {x=3,y=0,magic=-2} //C1:T, C2:F, C3:T, P1:F, P2:T {x=3,y=15,magic=2} //C1:F, C2:T, C3:F, P1:F, P2:F
-
补充:条件覆盖不能保证判定覆盖
-
-
判定条件覆盖:
-
定义:每个判断本身的真假至少满足一次,且每个逻辑条件的真假也至少被满足一次
-
{x=3,y=3,magic=2} //C1:T, C2:T, C3:F, P1:T, P2:F {x=-3,y=0,magic=-2} //C1:F, C2:F, C3:T, P1:F, P2:T
-
缺点:
-
if (x>0 && y >0)//正确代码 if (x>0 || y >0)//错误代码 //依旧会忽略条件中取或的情况
-
补充:满足判定覆盖一定满足条件覆盖、判断覆盖、语句覆盖
-
-
条件组合覆盖:
-
定义:使得被测程序中每个判定结果的所有可能组合至少执行一次
-
{x=3,y=0,magic=-2} //C1:T, C2:F, C3:T, P1:F, P2:T {x=-3,y=15,magic=2} //C1:F, C2:T, C3:F, P1:F, P2:F {x=3,y=3,magic=2} //C1:T, C2:T, C3:F, P1:T, P2:F {x=-3,y=0,magic=-2} //C1:F, C2:F, C3:T, P1:F, P2:T
-
条件组合能满足 判定覆盖、条件覆盖、判定-条件覆盖、语句覆盖
-
缺点:不能保证所有路径被执行
{x=3,y=0,magic=-2} T F T F T {x=-3,y=15,magic=2} F T F F F {x=3,y=3,magic=2} T T F T F {x=-3,y=0,magic=-2} F F T F T
-
-
路径覆盖
-
定义:覆盖所有可能的路径
{x=3,y=3,magic=-2} T T T T T a-b-d-f {x=-3,y=3,magic=-2} F T T F T a-c-d-f {x=3,y=3,magic=2} T T F T F a-b-e-f {x=-3,y=15,magic=-2} F T F F F a-c-e-f
-
-
基本路径测试法
-
画出流程控制图
-
计算环路复杂度:给定流图G的圈复杂度V(G) = (边的数量)E - (节点的数量)N + 2(有环路比较复杂用)
-
导出可执行路径
-
设计测试用例
-