软件测试学习笔记四__白盒测试
1 定义
白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。根据程序的控制结构设计测试用例,主要用于软件或程序验证。
白盒测试检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。
注意:
即使每条路径都测试过,仍然可能存在错误,有可能程序功能错误,或程序路径有遗漏,并且路径测试发现不了一些与数据相关的错误
2 常用测试用例设计方法
(1)逻辑覆盖法
(2)基本路径测试法
3 基本概念
(1)控制流图
1)定义
控制流图是对程序流程图进行简化后得到的,它可以更加突出的表现程序控制流的结构
2)符号
控制流图中包括两种符号
1 节点 : 用带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(不包含复合条件)
2 控制流线 :用带箭头的弧线表示,可称为边。代表程序中的控制流。
程序流程图与控制流图的转换
(2)环形复杂度
1)定义
环形复杂度也称圈复杂度,是一种为程序逻辑复杂度提供定量尺度的软件度量。
2)计算
计算环形复杂度 V(G) 有三种方法
① V(G) = E - N + 2
E为控制流图G中边的变量,N为控制流图中的节点数量
② V(G) = P + 1
P 是控制流程图G中判定节点的数量
③ 控制流图G中区域的数量 = V(G)
4 逻辑覆盖法
(1)测试覆盖率
用于确定测试所执行的覆盖项的百分比,测试覆盖率越高,效果越好。
测试覆盖率包括功能点覆盖率和结构覆盖率
功能点覆盖率:软件已实现的功能与软件需要实现的功能之间的比例关系
结构覆盖率:包括语句覆盖率、分支覆盖率、循环覆盖率、路径覆盖率等
(2)逻辑覆盖分类:
根据覆盖目标不同分类:
①语句覆盖:执行足够多的测试用例,使得程序中每个执行语句至少执行一次
②判定覆盖:执行足够多的测试用例,使得每个判定至少获得一次真值和假值
③条件覆盖:执行足够多的测试用例,使得每个判定包含的条件至少获得一次真值和假值
④判定/条件覆盖:执行足够多的测试用例,使得每个判定包含的每个条件的真 / 假至少出现一次,并且每个判定本身的真 / 假也至少出现一次
⑤组合覆盖:执行足够多的测试用例,使得程序中每个判定的所有可能的条件真 / 假组合都至少出现一次
⑥路径覆盖:执行足够多的测试用例,要求覆盖程序中所有可能的路径
5 基本路径测试法
(1)路径表达式
1)弧a和弧b相乘,表示为ab,表明路径先经过弧a,在经历弧b,a和b是先后相连的
2)弧a和弧b相加,表示为a + b,表明两条弧是或的关系,是并行的路段
路径数的计算
在路径表达式中,将所有弧均以数值1来代替,在进行表达式的相乘和相加运算,最后得到的数值就是该程序的路径数
(2)路径测试方法步骤
1)画出程序控制流图
2)计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数量的上界
3)导出基本路径集,确定程序的独立路径
4)根据 3)中确定的独立路径设计测试用例
(3)实例
1.画出控制流图
2.计算环形复杂度
V(G) = E - N + 2 = 10 - 8 + 2 = 4
3.导出独立路径
路径1:4 -->14
路径2:4–> 6 --> 7 -->13 -->4 --> 14
路径3:4 --> 6 --> 9 -->10 -->13 -->4 --> 14
路径3:4 --> 6 --> 9 -->12 -->13 -->4 --> 14
4.设计测试用例
测试用例 | 输入数据 | 预期输出 |
---|---|---|
1 | a=0 , b=0 | x=0, y=0 |
2 | a=1, b=0 | x=2, y=0 |
3 | a=1 , b=1 | x=10, y=0 |
4 | a=1 , b=2 | x=20, y=0 |
6 最少测试用例数计算
(1)计算步骤
1)画N-S图
2)如果N-S图中有并列层次A1和A2,A1和A2的最少测试用例个数a1和a2,则由A1,A2层所组合的N-S图对应最少测试用例数为a1*a2
上图最少测试用例数为3,因为没有并列的层次,所以直接算方块数就可以了。
上图 2345组成的整体和67组成的整体并列,而2345中方块数是5, 67中方块数是3
5*3=15,最后左边还有一个方块,所以整个程序最少测试用例数是15 + 1 = 16