今天写了两个小时的软件测试实验报告,原谅我上课没有好好听冯老师讲课,下课把老师课件系统的过了一遍才开始做实验报告。
再来说说我们的冯老师,带过去我离散数学、软件工程,现在带我软件测试,hahahh~~,我猜想冯老师会不会大四的毕业论文设计也带我叭。
好啦,言归正传,今天就来说说什么是白盒测试,以及白盒测试用例设计方法。
1. 什么是白盒测试
白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。
1.1 遵循原则
- 保证一个模块中的所有独立路径至少被测试一次;
- 所有逻辑值均需测试真 (true) 和假 (false) 两种情况;
- 检查程序的内部数据结构,保证其结构的有效性;
- 在上下边界及可操作范围内运行所有循环。
1.2 设计方法
白盒测试主要是检查程序的内部结构、逻辑、循环和路径。
常用测试用例设计方法有:
逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖等。
基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
2. 逻辑覆盖
2.1 语句覆盖
基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
a=2,b=1,c=6
2.2 判定覆盖
基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
a=2,b=1,c=6 可覆盖判断M的Y分支和判断N的Y分支;
a=-2,b=-1,c=-3 可覆盖判断M的N分支和判断N的N分支。
或
a=1,b=1,c=-3 可覆盖判断M的Y分支和判断N的N分支;
a=1,b=-2,c=3 可覆盖判断M的N分支和判断N的Y分支;
2.3 条件覆盖
基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。
判断M表达式:
设条件a>0 取真记为T1、取假记为F1
条件b>0 取真记为T2、取假记为F2
判断N表达式:
设条件a>1 取真记为T3、取假记为F3
条件c>1 取真记为T4、取假记为F4
- 条件覆盖设计的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4;
- 它覆盖了判定M的N分支和判断N的Y分支。
2.4 判定-条件覆盖
判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。
测试用例要满足如下条件:
- 所有条件可能至少执行一次取值;
- 所有判断的可能结果至少执行一次。
- 要满足T1、T2、 T3 、T4、F1、 F2 、F3、F4
2.5 条件组合覆盖
基本思想是设计足够的测试用例,使得程序中每个判断的所有可能的条件取值组合都至少出现一次。
与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次。
2.6 路径覆盖
路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。
- 覆盖组合为条件组合覆盖的组合编号。
3. 基本路径测试
设计出的测试用例要保证每一个基本独立路径至少要执行一次。
测试步骤:
- 依据代码绘制流程图;
- 确定流程图的圈复杂度(cyclomatic complexity );
- 确定线性独立路径的基本集合( basis set );
- 设计测试用例覆盖每条基本路径。
圈复杂度(Cyclomatic complexity): 代码逻辑复杂度的 度量,提供了被测代码的路径数量。复杂度越高,出错的概率越大。
V(G) = 区域数量(由节点、连线包围的区域,包括图形外部区域)
V(G) = 连线数量 - 节点数量 + 2
V(G) = 简单可预测节点数量 + 1
独立路径: 至少引入一系列新的处理语句或条件的任何路径;
基本集: 由独立路径构成的集合;
由基本集导出的测试用例,保证每行代码语句至少被执行一次,基本集合不一定唯一。
【例题】
【附录:白盒测试知识】
1. 白盒测试知识
2. 白盒测试理论
以上不足之处,请友友们指出,博主会及时改正。💪💪😊😊