分类: 项目管理
2009-05-11 09:01:15
本章介绍黑盒测试的概念和进行黑盒测试的目的与意义,及关于等价类划分、边界值分析、因果图法、判定表法、正交试验法、功能图法等测试用例设计方法的原理与实现,并从测试设计说明、测试用例说明、测试程序说明三个方面介绍如何编写测试用例,最后结合一个ATM的例子体现如何设计测试用例。
软件测试是一个工程,要通过制定测试用例指导测试的实施。
* 什么是测试用例
测试用例设计:将软件测试的行为和活动,作一个科学化的组织归纳。软件测试是有组织性、步骤性和计划性的,而设计软件测试用例的目的,就是为了能将软件测试的行为转换为可管理的模式。测试用例就是将测试行为具体量化的方法之一。
使用测试用例的好处:
A. 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。
B. 测试用例的使用令软件测试的实施重点突出、目的明确。
C. 在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低了工作强度,缩短项目周期。
D. 测试用例的通用化和复用化使软件测试易于开展,并随着测试用例的不断精华而提高效率。
(1) 等价类划分法:把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类的其他值
(2) 边界值分析法:通过选择等价类边界的测试用例。不仅重视输入条件边界,而且也必须考虑输出域边界
(3) 错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法
(4) 因果图法:从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输入或程序状态的改变),可以通过因果图转换成判定表
(5) 判定表驱动法:利用判定表进行测试用例的设计
(6) 正交试验设计法:使用已设计好的正交表格来安排试验,并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率
(7) 功能图法:用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构成
* 等价类划分法
(1)划分基础:分析和推敲需求规格说明书的各项需求特别是功能需求,输入、输出的要求要区别开来。
(2)等价类:某个输入域的子集合;分为有效等价类和无效等价类
l 有效等价类:指对于程序规格说明书来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明书中的功能和性能
l 无效等价类:与有效等价的定义恰巧相反
(3)划分等价类原则(6条)
序号 |
输入条件(数据) |
划分等价类 |
1 |
规定了取值范围 值的个数 |
一个有效等价类 两个无效等价类 |
2 |
规定了输入值的集合 规定了“必须如何”的条件 |
一个有效等价类 一个无效等价类 |
3 |
是一个布尔量 |
一个有效等价类 一个无效等价类 |
4 |
输入数据的一组值(n个),并且程序对每一个输入值分别进行处理 |
n个有效等价类 一个无效等价类 |
5 |
规定必须遵守的规则 |
一个有效等价类(符合规则) 若干个无效等价类 |
6 |
在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类 |
(4) 列出等价类表
在确定了等价类之后,建立等价类表,列出所有划分出的等价类
输入条件 |
有效等价类 |
无效等类 |
…… |
…… |
…… |
(5) 确定测试用例步骤
l 第一步:为每个等价类规定一个惟一的编号
l 第二步:设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
l 第三步:设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
小结:采用等价类划分方法设计测试用例,按照划分等价类、列出等价列表、确定测试用例三个步骤完成,目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。
实例:复制和粘贴的5种执行方式。
Windows文件名可以包含除了\/ : * ? " < > 和 |之外字符.文件名为 1 to 255 字符. 测试文件名的等价类可以如下划分:合法字符,非法字符,合法的长度名称,长度过长的名称和长短过短的名称。
三角形、等腰三角形、等边三角形的用例。
输入条件 |
有效等价类 |
无效等价类 |
是否三角形的三条边 |
(A>0), (1) (B>0), (2) (C>0), (3) (A+B>C), (4) (B+C>A), (5) (A+C>B), (6) |
(A≤0), (7) (B≤0), (8) (C≤0), (9) (A+B≤C), (10) (B+C≤A), (11) (A+C≤B), (12) |
是否等腰角形 |
(A=B), (13) (B=C), (14)(C=A),
(15) |
(A≠B)and(B≠C)and(C≠A)
(16) |
是否等边三角形 |
(A=B)and(B=C)and(C=A)
(17) |
(A≠B), (18) (B≠C), (19) (C≠A), (20) |
以下是测试用例的覆盖
(1) 正常的不等边三角形
(2) 正常的等边三角形
(3) 正常的等腰三角形,包括两条相等的边的三种不同的排列方法
(4) 正常的直角三角形
(5) 正常等腰直角三角形,包括两边相等的三种不同的排列方法
(6) 退化的三角形(即,两边之和等于第三边),包括三种不同的排列方法
(7) 三条边不能构成三角形(两边之和小于第三边),包括三种排列方法
(8) 一条边长度为零,两条边为零,三边为零的9种排列方法
(9) 输入数据包含负数
(10) 输入数据不全(只知道2边的长度不知道第三边)
(11) 输入的数据不符合程序规定的数据类型.
序号 |
【A,B,C】 |
覆盖等价类 |
输出 |
1 |
【3,4,5】 |
(1),(2),(3),(4),(5),(6) |
一般三角形 |
2 |
【0,1,2】 |
(7) |
不能构成三角形 |
3 |
【1,0,2】 |
(8) |
不能构成三角形 |
4 |
【1,2,0】 |
(9) |
不能构成三角形 |
5 |
【1,2,3】 |
(10) |
不能构成三角形 |
6 |
【1,3,2】 |
(11) |
不能构成三角形 |
7 |
【3,1,2】 |
(12) |
不能构成三角形 |
8 |
【3,3,4】 |
(1),(2),(3),(4),(5),(6),(13) |
等腰三角形 |
9 |
【3,4,4】 |
(1),(2),(3),(4),(5),(6),(14) |
等腰三角形 |
10 |
【3,4,3】 |
(1),(2),(3),(4),(5),(6),(15) |
等腰三角形 |
11 |
【3,4,5】 |
(1),(2),(3),(4),(5),(6),(16) |
非等腰三角形 |
12 |
【3,3,3】 |
(1),(2),(3),(4),(5),(6),(17) |
等边三角形 |
13 |
【3,4,4】 |
(1),(2),(3),(4),(5),(6),(14),(18) |
非等边三角形 |
14 |
【3,4,3】 |
(1),(2),(3),(4),(5),(6),(15),(19) |
非等边三角形 |
15 |
【3,3,4】 |
(1),(2),(3),(4),(5),(6),(13),(20) |
非等边三角形 |