本周分享《测试用例设计》实验内容,由于知识含量较多,现在拆分为多篇分享,今日是第一篇。
回顾上周内容,请点击:
实 验 简 介
本实验主要讲解测试用例设计方法,包括等价类,边界值,正交试验表,判定表,流程分析法,状态迁移法,错误猜测等。
实 验 目 的
(1)、掌握测试用例设计方法,以便设计高效的测试用例。
实 验 流 程
2、边界值
边值分析方法的理论基础,是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附件的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小。
n 边值分析使用条件:
(1). 输入条件明确了一个值的取值范围,或是规定了值的个数。
(2). 输入条件明确了一个有序集合。
n 边值点定义:
(1). 上点:边界上的点,如果域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。
(2). 离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内。
(3). 内点:顾名思义,就是在域范围内的任意一个点。
假设a是整数,a的一个边界描述是a>0,是开放的,那么上点是0,离点是1。如果边界描述是a>=0,是封闭的,上点仍然是0,离点是-1。
假设a是实数,首先确定一个精度,比如精确到0.001。那么如果a的边界描述是a>0,是开放的,上点是0,离点是0.001。如果边界描述是a>=0,是封闭的,上点仍然是0,离点是-0.001。
n 边界值分析的原则:
(1).如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例。
(2). 如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
(3). 如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试用例。
(4). 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
n 边值分析法设计用例的步骤:
(1).分析输入参数的类型:从测试规格中分析得到输入参数类型。
(2). 等价类划分(可选):对于输入等价类划分方法进行等价类的划分。
(3). 确定边界:运用域测试分析方法确定域范围的边界(上点、离点与内点)。
(4). 相关性分析(可选):如果存在多个输入域,则需要运用因果图、判定表方法对这些输入域边界值的组合情况进行进一步分析。
(5). 形成测试项:选择这些上点、离点与内点或者这些点的组合形成测试项。
n 基于边界值分析方法选择测试用例的原则:
(1). 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……"。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。
(2). 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。
(3). 将规则1和2应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。
(4). 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
(5). 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
(6). 分析规格说明,找出其它可能的边界条件。
n 练习:
用户名和密码的规则如下:
1. 用户名长度为6至10位(含6位和10位)
2. 用户名由字符(a-z、A-Z)和数字(0-9)组成
3. 不能为空、空格和特殊字符
4. 密码规则同用户名规则
针对用户名和密码写出所有边界值。
n 等价类和边界值实战应用:保险费率计算
人人保险公司承担人寿保险已有多年历史,该公司保费计算方式为投保额*保 险率,保险率又依点数不同而有别,10点以上费率为0.6 % ,10点以下费率为0.1 %。
保险率和以下参数有关:
(1). 年龄:数字 0-150
(2). 性别:字符组合 区分大小写
(3). 婚姻:字符组合
(4). 扶养人:数字 1-9人
其中前三个为必填项,最后一个为选填项
年龄 | 20~39岁 | 6点 |
40~59岁 | 4点 | |
60岁以上20岁以下 | 2点 | |
性别 | MALE | 5点 |
FEMALE | 3点 | |
婚姻 | 已婚 | 3点 |
未婚 | 5点 | |
扶养人数 | 一 人 扣 0.5 点 最 多 扣 3 点 ( 四 舍 五 入 取 整 数 ) |
第一步:确定每个输入的输入条件
(1). 年龄:非负整数、0-150、必填
(2). 性别:字符组合、区分大小写、MALE或者FEMALE、必填
(3). 婚姻:字符组合、已婚或者未婚、必填
(4). 抚养人数:正整数、1-9、选填
第二步:对每个输入的输入条件进行等价类划分
输入 | 输入条件 | 有效等价类 | 无效等价类 |
年龄 | 非负整数 | 非负整数(1) | 负整数(7) 小数(8) 字母(9) 特殊字符(10) |
0-150 | 0-19(2) 20-39(3) 40-59(4) 60-150(5) | <0(11) >150(12) | |
必填 | 填(6) | 不填(13) | |
性别 | 字符组合 | 字符组合(1) | 非字符组合(6) |
区分大小写 | 大写(2) | 小写(7) 大小写混合(8) | |
MALE或者FEMALE | MALE(3) FEMALE(4) | 非MALE、FEMALE(9) | |
必填 | 填(5) | 不填(10) | |
婚姻 | 字符组合 | 字符组合(1) | 非字符组合(5) |
已婚或者未婚 | 已婚(2) 未婚(3) | 非已婚、未婚(6) | |
必填 | 填(4) | 不填(7) | |
抚养人数 | 正整数 | 正整数(1) | 非正整数(6) 小数(7) 字母(8) 特殊字符(9) |
1-9 | 1-6(2) 7-9(3) | <1(10) >9(11) | |
选填 | 填(4) 不填(5) |
第三步:针对每个输入设计数据覆盖等价类
输入 | 有效值 | 无效值 |
年龄 | 15(覆盖1、2、6) 25(覆盖1、3、6) 50(覆盖1、4、6) 80(覆盖1、5、6) | -20(覆盖7) 15.5(覆盖8) a(覆盖9) &(覆盖10) -999.5(覆盖11) 180(覆盖12) 不填(覆盖13) |
性别 | MALE(覆盖1、2、3、5) FEMALE(覆盖1、2、4、5) | 6553(覆盖6) male(覆盖7) fEMALE(覆盖8) 男(覆盖9) 不填(覆盖10) |
婚姻 | 已婚(覆盖1、2、4) 未婚(覆盖1、3、4) | 1234(覆盖5) 离婚(覆盖6) 不填(覆盖7) |
抚养人数 | 5(覆盖1、2、4) 8(覆盖1、3、4) 不填(覆盖5) | -6(覆盖6) 5.1(覆盖7) A(覆盖8) $(覆盖9) -100(覆盖10) 100(覆盖11) |
第四步:考虑边界值
输入 | 有效值 | 无效值 |
年龄 | 15(覆盖1、2、6) 25(覆盖1、3、6) 50(覆盖1、4、6) 80(覆盖1、5、6) 边界值: 0 19 20 39 40 59 60 150 | -20(覆盖7) 15.5(覆盖8) a(覆盖9) &(覆盖10) -999.5(覆盖11) 180(覆盖12) 不填(覆盖13) 边界值: -1 151 |
性别 | MALE(覆盖1、2、3、5) FEMALE(覆盖1、2、4、5) | 6553(覆盖6) male(覆盖7) fEMALE(覆盖8) 男(覆盖9) 不填(覆盖10) |
婚姻 | 已婚(覆盖1、2、4) 未婚(覆盖1、3、4) | 1234(覆盖5) 离婚(覆盖6) 不填(覆盖7) |
抚养人数 | 5(覆盖1、2、4) 8(覆盖1、3、4) 不填(覆盖5) 边界值: 1 6 7 9 | -6(覆盖6) 5.1(覆盖7) a(覆盖8) $(覆盖9) -100(覆盖10) 100(覆盖11) 边界值: 0 10 |
第五步:设计用例覆盖多个输入的有效值和无效值
用例编号 | 年龄 | 性别 | 婚姻 | 抚养人数 | 点数 |
1 | 15 | MALE | 未婚 | 不填 | 12 |
2 | 25 | FEMALE | 已婚 | 8 | 9 |
3 | 50 | MALE | 未婚 | 5 | 11 |
4 | 80 | FEMALE | 已婚 | 1 | 7 |
5 | 0 | MALE | 未婚 | 不填 | 12 |
6 | 19 | FEMALE | 未婚 | 不填 | 10 |
7 | 20 | MALE | 未婚 | 不填 | 16 |
8 | 39 | FEMALE | 已婚 | 6 | 9 |
9 | 40 | MALE | 已婚 | 7 | 9 |
10 | 59 | FEMALE | 已婚 | 9 | 7 |
11 | 60 | MALE | 未婚 | 不填 | 12 |
12 | 150 | FEMALE | 已婚 | 9 | 5 |
13 | -20 | FEMALE | 已婚 | 9 | 无 |
14 | 15.5 | FEMALE | 已婚 | 9 | |
15 | a | FEMALE | 已婚 | 9 | |
16 | & | FEMALE | 已婚 | 9 | |
17 | -999.5 | FEMALE | 已婚 | 9 | |
18 | 180 | FEMALE | 已婚 | 9 | |
19 | 不填 | FEMALE | 已婚 | 9 | |
20 | -1 | FEMALE | 已婚 | 9 | |
21 | 151 | FEMALE | 已婚 | 9 | |
22 | 39 | 6553 | 已婚 | 9 | |
23 | 39 | male | 已婚 | 9 | |
24 | 39 | fEMALE | 已婚 | 9 | |
25 | 39 | 男 | 已婚 | 9 | |
26 | 39 | 不填 | 已婚 | 9 | |
27 | 39 | MALE | 1234 | 9 | |
28 | 39 | MALE | 离婚 | 9 | |
29 | 39 | MALE | 不填 | 9 | |
30 | 39 | FEMALE | 已婚 | -6 | |
31 | 39 | FEMALE | 已婚 | 5.1 | |
32 | 39 | FEMALE | 已婚 | a | |
33 | 39 | FEMALE | 已婚 | $ | |
34 | 39 | FEMALE | 已婚 | -100 | |
35 | 39 | FEMALE | 已婚 | 100 | |
36 | 39 | FEMALE | 已婚 | 0 | |
37 | 39 | FEMALE | 已婚 | 10 |
等价类和边界值设计方法适用面非常广,也是最为常用的两种测试用例设计方法。一些基础的功能性测试的BUG几乎都有这两者的影子。
下周分享:测试用例设计(三)
为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。