单元测试用例设计
单元测试用例设计
培训教材
http://www.51testing.com 上海博为峰软件技术有限公司
课程内容
• 逻辑覆盖法 • 等价类分析法 • 边界值分析法 • 错误猜测法 • 软件单元测试用例设计举例
http://www.51testing.com
上海博为峰软件技术有限公司
2
语句覆盖法设计测试用例
在测试时,首先设计若干个测试用例,然后运行被测程 序,使程序中的每个可执行语句至少执行一次
A = 2 B = 0 ………………CASE1 X = 3 A = 2 B = 1 ………………CASE2 X = 3
CASE1 CASE2
a F b
(A>1) AND (B=0)
T
c
X = X/A
F d
(A=2) OR (X>1)
T e
X = X+1
能达到语句覆盖 不能达到语句覆盖
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
3
分支覆盖法设计测试用例
在测试时,首先设计若干个测试用例,然后运行被测程序,使 得程序中每个判断的取真分支和取假分支至少经历一次,即判 断的真假值均曾被满足。 a
F b
(A>1) AND (B=0)
T
c
X = X/A
A = 2 B = 0 X = 3 A = 1 B = 0 X = 1
………………CASE1:路径ace
F d
(A=2) O R (X>1)
T e
X = X+1
………………CASE2:路径abd
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
4
条件覆盖法设计测试用例(1)
在测试时,首先设计若干个测试用例,然后运行被测程序,要 使每个判断中每个条件的可能取值至少满足一次
a
条件 A>1
取值 取真 取假
标记 T1 F1 T2 F2 T3 F3 T4 F4
d
b
F
(A>1 ) AND (B=0 )
T
c
X = X/A
B=0
取真 取假
F
(A=2 ) O R (X>1 )
T e
X = X+1
A=2
取真 取假
X>1
取真 取假
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
5
条件覆盖法设计测试用例(2)
a
测试用例 CASE1 CASE2 CASE3 A B X 2 0 3 1 0 1 2 1 1 所走路径 a c e a b d a b e 覆盖条件 T1,T2,T3,T4 F1,T2,F3,F4 T1,F2,T3,F4
F b
(A>1) AND (B=0)
T
c
X = X/A
F d
(A=2) OR (X>1)
T e
X = X+1
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
6
条件覆盖法设计测试用例(3)
a
测试用例 CASE1 1 A B X 0 3 所走路径 a b e 覆盖条件 F1T2F3T4
F b
(A>1) AND (B=0)
T c X = X/A
CASE2
2
1
1
a b e
T1F2T3F4
F d
(A=2) OR (X>1)
T e X = X+1
覆盖了条件的测试用例不一定覆盖 了分支
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
7
分支条件法设计测试用例(1)
在测试时,首先设计若干个测试用例,然后运行被测程序,使得判断中每个条件的 所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次
a F
(A>1) AND (B=0)
T
c
X = X/A
组合编号 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧
条件取值 A > 1,B = 0 A > 1,B ≠ 0 A ≤1,B = 0 A ≤1,B ≠ 0 A =2,X > 1 A =2,X ≤ 1 A ≠2,X > 1 A ≠2,X ≤ 1
标记 T1,T2 T1,F2 F1
,T2 F1,F2 T3,T4 T3,F4 F3,T4 F3,F4
b
F d
(A=2) OR (X>1)
T e
X = X+1
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
8
分支条件法设计测试用例(2)
a
测试用 例 CASE1 CASE2 CASE3 CASE4 ABX 覆盖组 合 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 所走路径 覆盖条件
F b
(A>1) AND (B=0)
T
c
X = X/A
2 0 3 2 1 1 1 0 3 1 1 1
ace abd abe abd
T1,T2,T3,T4 T1,F2,T3,F4
F
F1,T2,F3,T4 F1,F2,F3,F4
(A=2) OR (X>1)
T e
X = X+1
d
1、以上四个测试用例覆盖了100%条件、分支 2、从路径角度看仅覆盖了3条路径,漏掉了路径acd http://www.51testing.com
被测程序段流程图
上海博为峰软件技术有限公司
9
路径覆盖法设计测试用例
在测试时,首先设计若干个测试用例,然后运行被测程序,要求覆盖程序中所有可 能的路径
a F
(A > 1 ) A ND (B =0 )
T
c
X = X/A
测试用例 CASE1 CASE2 CASE3 CASE4
ABX 2 0 3 1 0 1 2 1 1 3 0 1
覆盖路径 ace abd abe
b
F d
(A =2 ) O R (X>1 )
T e
X = X+ 1
acd
被测程序段流程图
http://www.51testing.com
上海博为峰软件技术有限公司
10
路径覆盖的困难
右图包含的不同执行路径数达5的 20次方条,假定对每一条路径进行测 试需要1毫秒,一年工作365 × 24小 时,要想把所有路径测试完,需3170 年
测试中做到完全的路径覆盖是无法 实现的,为解决这一难题只得把覆盖 的路径数压缩到一定限度内
http://www.51testing.com
上海博为峰软件技术有限公司
11
基本路径覆盖法
基本路径覆盖法是在程序控制流图的基础上,通 过分析控制结构的环路复杂性,导出基本可执行路 径集合,设计测试用例的方法 该方法把覆盖的路径数压缩到一定限度内,程序 中的循环体最多只执行一次 设计出的测试用例要保证在测试中,程序的每一 个可执行语句至少要执行一次
http://www.51testing.com 上海博为峰软件技术有限公司
12
基本路径覆盖法
程序的控制流图
符号○为控制流图的一个结点,表示一个或多个无 分支的源程序语句。箭头为边,表示控制流的方向
http://www.51testing.com
上海博为峰软件技术有限公司
13
基本路径覆盖法
程序的控制流图
在选择或多分支结构中,分支的汇聚处应有 一个汇聚结点 边和结点圈定的区域叫做区域,当对区域计数 时,图形外的区域也应记为一个区域 如果判断中的条件表达式是由一个或多个逻辑 运算符 (OR, AND, NAND, NOR) 连接的复合条 件表达式,则需要改为一系列只有单条件的嵌套的 判断。
http://www.51testing.com 上海博为峰软件技术有限公司
14
基本路径覆盖法
http://www.51testing.com
上海博为峰软件技术有限公司
15
基本路径覆盖法
http://www.51testing.com
上海博为峰软件技术有限公司
16
基本路径覆盖法
程序环路复杂性
程序的环路复杂性:程序基本路径集中的独立 路径数量,这是确保程序中每个可执行语句至少执 行一次所必需的测试用例数目的上界 独立路径:至少包含有一条在其它独立路径中 从未有过的边的路径 程序环路复杂性和区域数一致
上海博为峰软件技术有限公司
http://www.51testing.com
17
基本路径覆盖法
例如,在图示的控制流图中,一 组独立的路径是
path1:1 path2:1 path3:1 path4:1 11 2 - 3 - 4 - 5 - 10 - 1 - 11 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 2 - 3 - 6 - 7 - 9 - 10 - 1 – 11
路径 path1,path2,path3, path4组成了控制流图的一个基本路 径集
上海博为峰软件技术有限公司
http://www.51testing.com
18
基本路径覆盖法
从详细设计导出流图 确定流图的环路复杂度 确定独立路径的基本集 导出测试用例,确保基本路径集中的每一条路径的执 行 根据判断结点给出的条件,选择适当的数据以保证某 一条路径可以被测试到 — 用逻辑覆盖方法
http://www.51testing.com
上海博为峰软件技术有限公司
19
课程内容
• 逻辑覆盖法 • 等价类分析法 • 边界值分析法 • 错误猜测法 • 软件单元测试用例设计举例
http://www.51testing.com
上海博为峰软件技术有限公司
20
等价类划分方法
等价类:某个输入域的集合,在这个集合中每个输入条件 都是等效的,如果其中一个的输入不能导致问题发生,那 么集合中其它输入条件进行测试也不可能发现错误 • 有效等价类:指对于程序的规格说明来说是合理的,有意义 的输入数据构成的集合 • 无效等价类:指对于程序的规格说明来说不合理的,无意义 的输入数据构成的集合
http://www.51testing.com
上海博为峰软件技术有限公司
21
确定等价类的原则
• • • • • 在如果输入条件规定了取值范围或值的格式,则可以确定一个有效等 价类和两个无效等价类 输入条件规定了输入值的集合,或是规定了必须如何的条件,则可 以确定一个有效等价类和一个无效等价类 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个 无效等价类 如果我们确知,已经划分的等价类中各个元素在程序中的处理方式 不同的,则应该将此等价类进一步划分 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类 (符合规则)和若干个无效等价类(从不同角度违反规则)
http://www.51testing.com
上海博为峰软件技术有限公司
22
利用等价类设计用例
• 为每个输入划分等价类,得到等价类表,为每个等价类规定一个唯一编号
输入条件 ...... ...... ......
有效等价类 ...... ...... ......
无效等价类 ...... ...... ......
• • • •
设计一个测试用例,使其尽可能多的覆
盖所有尚未覆盖的有效等价类。重 复这一步骤,使得有效等价类均被测试用例所覆盖 设计一个测试用例,使其只覆盖一个无效等价类。重复这一步骤使得所有 无效等价类均被覆盖
http://www.51testing.com
上海博为峰软件技术有限公司
23
课程内容
• 逻辑覆盖法 • 等价类分析法 • 边界值分析法 • 错误猜测法 • 软件单元测试用例设计举例
http://www.51testing.com
上海博为峰软件技术有限公司
24
边界值分析方法
边值分析方法的理论基础,是假定大多数的错误是发生在 各种输入条件的边界上,如果在边界附件的取值不会导致程 序出错,那么其它的取值导致程序错误的可能性也很小 • 边界值分析方法是对等价类划分方法的补充 • 长期的测试工作经验告诉我们,大量的错误是发生在输入或输 出范围的边界上,而不是发生在输入输出范围的内部 • 通常输入和输出等价类的边界,就是应着重测试的边界情况 • 应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数 据,而不是选取等价类中的典型值或任意值作为测试数据
http://www.51testing.com
上海博为峰软件技术有限公司
25
边界点的定义
• 上点:边界上的点,如果域的边界是封闭的,上点就在域范 围内;如果域的边界是开放的,上点就在域范围外 • 离点:就是离上点最近的一个点,如果域的边界是封闭的, 离点就在域范围外,如果域的边界是开放的,离点就在域范 围内 • 内点:顾名思义,就是在域范围内的任意一个点
http://www.51testing.com
上海博为峰软件技术有限公司
26
边界点的定义
离点 离点 离点
内点
上点 闭区间
内点
上点 开区间
内点
上点 半开半闭 区间
http://www.51testing.com
上海博为峰软件技术有限公司
27
边界值分析法思路
• • • • 分析规格说明,找出其它可能的边界条件 对各边界条件的上点和离点作为测试输入数据 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少 一,比最大个数多一的数作为测试数据 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集 合的第一个元素和最后一个元素作为测试用例
http://www.51testing.com
上海博为峰软件技术有限公司
28
课程内容
• 逻辑覆盖法 • 等价类分析法 • 边界值分析法 • 错误猜测法 • 软件单元测试用例设计举例
http://www.51testing.com
上海博为峰软件技术有限公司
29
错误猜测法
• 错误猜测法
– 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对 性的设计测试用例的方法
• 错误猜测法的基本思想
– 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据
他们选择测试用例 – 错误猜测法只能作为测试设计的补充而不能单独用来设计测试用 例,否则可能会造成测试的不充分
http://www.51testing.com
上海博为峰软件技术有限公司
30
课程内容
• 逻辑覆盖法 • 等价类分析法 • 边界值分析法 • 错误猜测法 • 软件单元测试用例设计举例
http://www.51testing.com
上海博为峰软件技术有限公司
31
单元测试用例设计举例
• 分析文档中的函数GetWordFromStr() • 确定单元测试用例设计采用的方法组合 • 根据选择的方法,设计相应的单元测试用例
http://www.51testing.com
上海博为峰软件技术有限公司
32
答疑&交流
http://www.51testing.com
上海博为峰软件技术有限公司
33