白盒测试‘
所谓白盒测试,就是研究代码,找出代码中的错误。
分类:
按照是否运行有:静态测试与动态测试
具体的测试方法有:程序控制流分析,数据流分析,逻辑覆盖,域测试,符号路径测试等。
数据流分析和代码覆盖方法比较有实用价值
基于数据流的白盒测试
理解:基于数据流的白盒测试是通过查看变量的引用和定义,来判断数据方面存在的错误。
一些基本概念:
变量的定义:意味着数据被赋值 在赋值语句的左边
变量的引用:在赋值等式的右边 是右值
举例:
(1)double a;
(2)Area=3.14×r×r;
(3)if(r<1);
答案:
(1)a及没被引用也不是定义,这叫变量声明
(2)Area是被定义,r是被引用 Area在赋值语句左边, r在右边
(3)r被引用
基于数据流的测试通常就是编辑器自动给你找出错误。。
基于控制流的白盒测试(重点)
基于控制流的测试就是根据结构测试。
结构可分为三个级别
1.组件级别:代码的结构,即语句,判定/分支,循环结构
2.集成级别:结构是调用树。即模块之间的调用的图表
3.系统级别:菜单结构,业务过程,以及web结构等大的方面的结构
控制流图和流程图
控制流图和流程图是组建级别的测试的方法。
流程图画法举例:
冒泡排序的流程图
控制流图的规范:
1.将多条顺序执行的语句抽象为一个语句节点。 如冒牌排序最开始的变量定义可以抽象为一个语句节点
2.一句语句节点用圆形表示
3.在丰富边的内容标上符号(就是循环结构那里标上符号1,2,3)
上述我写的控制流图没画标准,没有给丰富边画符号,以及路径没有标注
基于控制流的白盒测试的方法
语句覆盖
判定覆盖
条件覆盖
条件组合覆盖
由上至下层层完善
我们给个具体例子来说明几种方法
我们画出控制流图
语句覆盖方法
就是每个语句节点都有执行到。
因为上面两个判断语句是相互矛盾的,所以不能一下子1-2-3-4-5执行下来,所以分为两个测视例
1-2-5
3-4-5
测试用例 | X,Y | X>0 and Y>10 | X<-10 or Y<0 | 路径 |
---|---|---|---|---|
1 | 1,11 | T | T | 1-2-4-5 |
2 | -9,1 | F | F | 3-4-5 |
判定覆盖
就是上方两个判定都需要执行到
即(x>0 and Y>0 和 X<-10 or Y<0)
我们可以用上方语句覆盖的测试例,也满足判定判定覆盖
测试用例 | X,Y | X>0 and Y>10 | X<-10 or Y<0 | 路径 |
---|---|---|---|---|
1 | 1,11 | T | T | 1-2-5 |
2 | -9,1 | F | F | 3-4-5 |
条件覆盖
每个判断语句的逻辑条件至少为真假各一次。
首先:
我们定义 :
X>0为T1 Y<0为F1 这是第一个条件记录为1
Y>10 为T2 Y<10 为F2 第二个条件记录为2
X<-10为T3 X>-10为F3 第三个条件记录为3
Y<0 为T4 Y>0为F4 第四个条件记录为4
这四个条件中的每个条件中的真假都需要取一次。
设计路径有:
1-2-5
3-4-5
同样的上方语句覆盖测试例符合条件覆盖
测试用例 | X,Y | X>0 and Y>10 | X<-10 or Y<0 | 路径 |
---|---|---|---|---|
1 | 1,11 | T1,T2 | T3,T4 | 1-2-5 |
2 | -9,1 | F1,F2 | F3,F4 | 3-4-5 |
条件组合覆盖
就是每个判定条件的取值的各种组合都出现一次。
即每个判定条件中每个逻辑条件真假组合至少出现一次。
T1 T2 真真
F1 F2 假假
T1 F2 真假
F1 T2 假真
同样的3 4个条件如此
测试验例
测试用例 | X,Y | X>0 and Y>10 | X<-10 or Y<0 | 路径 |
---|---|---|---|---|
1 | 1,11 | T1,T2, | F3, F4 | 1-2-5 |
2 | -9,1 | F1, F2, | T3, T4 | 3-4-5 |
3 | 1,1 | T1,F2, | F3, T4 | 1-3-5 |
4 | 2,-2 | F1,T2, | T3, F4 | 1-3-4-5 |