等价类划分
划分等价类的标准
掌握必须使同类数据的处理过程及处理结果完全一致的大原则,可参考以下划分方法
输入条件 |
有效等价类 |
无效等价类 |
合格成绩取值范围为[60,100]之间的整数 |
[60,100]之间的整数 |
大于100; |
输入等价类 |
有效等价类 |
无效等价类 |
日期的类型及长度 |
①6位数字字符 |
②有非数字字符 ③少于6位数字字符 ④多于6位数字字符 |
年份范围 |
⑤在1990~2049之间 |
⑥小于1990 ⑦大于2049 |
月份范围 |
⑧在01~12之间 |
⑨等于00 ⑩大于12 |
2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:
测试数据 期望结果 覆盖的有效等价类
200211 输入有效 ①、⑤、⑧
3)为无效等价类设计测试用例,设计结果如下:
测试数据 期望结果 覆盖的无效等价类
95June 无效输入 ②
20036 无效输入 ③
2001006 无效输入 ④
198912 无效输入 ⑥
200401 无效输入 ⑦
200100 无效输入 ⑨
200113 无效输入 ⑩
使用等价类划分法测试的实例(续)
某保险公司的人寿保险的保费计算方式为:
投保额×保险费率
其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:
年龄 |
性别 |
婚姻 |
抚养人数 |
||||
20~39 |
40~59 |
其它 |
M |
F |
已婚 |
未婚 |
1人扣0.5点 最多扣3点 (四舍五入取整) |
6点 |
4点 |
2点 |
5点 |
3点 |
3点 |
5点 |
(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。
(2)根据(1)中的等价类表,设计能覆盖所有等价类的 测试用例。
输入条件 |
有效等价类 |
编号 |
无效等价类 |
编号 |
年龄 |
20~39岁 |
1 |
||
40~59岁 |
2 |
|||
1~19岁 60~99岁 |
3 |
小于1 |
12 |
|
大于99 |
13 |
|||
性别 |
单个英文字符 |
4 |
非英文字符 |
14 |
非单个英文字符 |
15 |
|||
‘M’ |
5 |
除‘M’和‘F’之外的 其它单个字符 |
16 |
|
‘F’ |
6 |
|||
婚姻 |
已婚 |
7 |
除’已婚’和’未婚’之外的其它字符 |
17 |
未婚 |
8 |
|||
抚养人数 |
空白 |
9 |
除空白和数字之外 的其它字符 |
18 |
1~6人 |
10 |
小于1 |
19 |
|
6~9人 |
11 |
大于9 |
20 |
边界值分析方法
以往的测试经验表明,由于需求界定不准确、设计不严密、程序书写手误等等原因,对于这些数据范围边界的判断是软件极容易出错的地方。大量的错误往往发生在输入或输出范围的边界上,因此针对各种边界情况设计测试用例,可以检查出更多的错误。
1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据
2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
3)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况,因此在等价类的边界上以及两侧的情况设计测试用例。
1) 输入(输出)条件规定了取值范围
2) 输入(输出)条件规定了值的个数
3) 程序规格说明书中提到的输入或输出是一个有序的集合
4) 程序中使用了一个内部数据结构
再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。
因果图法
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)
因果图法的简介
(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。
(2)将得到的因果图转换为判定表。
(3)为判定表中每一列所表示的情况设计一个测试用例
因果图
因果图中的4种基本关系
在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。
在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。
判定表
“阅读指南”判定表
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
||
问题 |
觉得疲倦? |
Y |
Y |
Y |
Y |
N |
N |
N |
N |
感兴趣吗? |
Y |
Y |
N |
N |
Y |
Y |
N |
N |
|
糊涂吗? |
Y |
N |
Y |
N |
Y |
N |
Y |
N |
|
建议 |
重读 |
√ |
|||||||
继续 |
√ |
||||||||
跳下一章 |
√ |
√ |
|||||||
休息 |
√ |
√ |
√ |
√ |
决策表的组成
将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。
决策表的生成
(1) 确定规则的个数。
(2) 列出所有的条件桩和动作桩。
(3) 填入条件项。
(4) 填入动作项,得到初始决策表。
(5) 简化决策表,合并相似规则。
合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件
测试方法的选择
(1)在任何情况下都必须采用边界值分析法。这种方法设计出的测试用例发现程序错误的能力最强。
(2)必要时采用等价类划分法补充测试用例。
(3)采用错误推断法再追加测试用例。
(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖 程度。如果没有达到要求的覆盖标准,则应当再补充更多的测试用例。
(5)如果程序的功能说明中含有输入条件的组合情况,则应一开始就选用因果图法。
用户登录界面测试用例设计: