测试用例设计方法
学习目标
- 熟练掌握等价类划分方法
- 熟练掌握边界值法
- 熟练掌握因果图
- 熟练掌握判定表
- 了解正交排列法
- 熟练掌握场景法
- 了解错误推论法
一、等价类划分
1. 思想
将输入的数据,根据数据各自的特性,划分成若干个范围,再从每个范围内挑选出个别数据, 来做代表数据进行测试。若代表数据通过了测试,则认为所在的整个数据范围都通过了测试。
生活里的例子:某食品仓库中存有3个批次的面包,质检人员从每个批次中抽取两包代表样品,进行抽样测试, 若抽样的面包质检合格,则认为该批次的面包都是合格的,允许进行销售。
2. 应用场景
界面中有数据输入的控件,如:输入框、文件选择、时间选择
3. 等价类分类
- 有效等价类:正向、正确的数据范围
- 无效等价类:反向、错误的数据范围
4. 用法
- 填写等价类表:要求包含正向、反向的取值范围
- 根据等价类表编写测试用例(或思维导图用例)
实战演练一
假设有如下需求:

设置便签的标题,要求
- 字符个数最少为1个字符,最多为40个字符
- 不能包含 / : * ?这些特殊字符
明确需求:

确定有效等价类和无效等价类:

编写测试用例如下:

注意事项:
- 有效等价类的数据可以组合起来,即:一条正向的测试用例可以包含多个有效等价类范围
- 无效等价类的数据需要独立测试,在测试时间充裕的情况下,可以进行组合错误数据进行补充测试
- 可以多使用发散性思维,去进行补充等价类范围
- 数据类型通常需要覆盖:数字(整数、正数、负数、小数)、字母(大写、小写)、国语(根据不同国家,使用不同国语)、特殊符号(标点符号、输入法自带符号、emog表情)
实战演练二(需求分析当测试用例使用)
假设有如下需求:

解析:这是一个典型的表单页面,主功能是“创建活动”。如图可见,界面中只有【选择控件】和【输入控件】,外加一个【提交按钮】, 产品经理将每个控件的输入条件、报错提示均进行了详细描述,因此我们可以轻松地使用等价类划分的方法来一个个控件分解需求
- 例如,针对【活动图片】文件选择:

根据需求描述,可以在需求分析里增加如下分解:

该需求注意点:
- 图片格式:需求中说允许传jpg图片格式,但没说JPE、JPEG这两种图片格式。但从技术角度上来说,这三种图片格式都是互通的。 一般情况下,只要说了其中一种允许上传,也默认其他两种互通的格式也是允许上传的,不要为了这个与开发扯皮。
- 图片大小:需求说明“最上限”是500kb,但是没说“最下限”多少kb,又因为文件字节单位在kb之下的,还有B单位(即byte), 因此在未说明“最下限”的情况下,只要说明是大于0即可,不要较真非要找到一个最小值。
- 图片大小:测试数据选取的是300kb的数据,但是真实在执行测试时,不用非要找到一个刚好300kb整的图片,只要在300kb左右即可, 稍大一点 或 少小一点 都无伤大雅。
- 无效等价类的非图片格式:非图片格式有常规的文档格式、压缩包格式、多媒体格式等。同时,你也需要非文件格式的情况, 如:aaa、bbb、ccc这种瞎编的格式,当然这条用例的优先级会降低,属于延伸测试。
二、边界值
1. 思想
在有效数据和无效数据之间,存在边界点,边界点属于易出错、易受影响的区域,应单独对边界值进行分析测试
生活里的例子:某地区发生灾难,除了灾难中心以外,附近四周的地区也会收到一定影响
2. 应用场景
有数据输入的控件,且输入的数据与“数值”相关,如:年龄18~60岁、最多输入10字符、保留4位小数、有效期24小时等
3. 边界值分类
- 最大值:max 【有效数据中的最大值】
- 最小值:min 【有效数据中的最小值】
- 有效最大次边界:max- 【比最大值 小1个单位】
- 无效最大次边界:max+ 【比最大值 大1个单位】
- 有效最小次边界:min+ 【比最小值 小1个单位】
- 无效最小次边界:min- 【比最大值 大1个单位】

4. 用法
- 填写数据分析表:要求包含正向、反向的取值范围、边界取值
- 根据数据分析表编写测试用例(或思维导图用例)
实战演练一
假设有如下需求:

要求:
- 【姓名】:1~20字符,不能包含数字,不能为空
- 【年龄】:18~60之间的整数,不能为空
- 如果填写的信息正确,注册成功,并给出如下提示信息:
- 并在【注册信息】文本框中反显出相应的注册信息,如下图:


明确需求:

根据等价类+边界值规则,可填写数据分析表:

注意:“姓名”的“字符长度”1~20 等同于 1、20、2、19,因此只要测试有效边界值即可,不需要专门再去有效等价类中找一个值
注意:“姓名”的“字符长度”<1 等同于 0,因此两条可合并为1条用例
注意:“姓名”的“字符长度”>20 等同于 21,因此两条可合并为1条用例
注意:“年龄”的“规则”18~60 等同于 18、19、60、59,因此只要测试有效边界值即可,不需要专门再去有效等价类中找一个值
注意:“年龄”的“规则”<18 等同于 17,因此两条可合并为1条用例
注意:“年龄”的“规则”>60 等同于 61,因此两条可合并为1条用例
编写测试用例如下:

实战演练二(需求分析当测试用例使用)
还是活动图片的需求:

根据需求描述,可以在需求分析里增加如下分解:

三、因果图
1.思想
界面中有多个控件,不同控件之间存在组合或限制关系。不同的输入条件会得到不同的输出结果,同时条件和条件之间存在相互依存、互斥等关系。使用画图的方式理清这些关系
2. 基本图形符号
以图形的方式表明“输入条件”和“输出结果”之间存在的关系
- 恒等于(相等)
- 如果a=1,那么b=1:如果输入条件a是真的,那么输出结果b也是真的
- 如果a=0,那么b=0:如果输入条件a是假的,那么输出结果b也是假的
- 与(和、并且)
- 全1为1:所有的输入条件都是真的,那么输出结果也是真的
- 有0则0:所有的输入条件中存在1个假的,那么输出结果就是假的
- 或(或者)
- 全0为0:所有的输入条件都是假的,那么输出结果也是假的
- 有1则1:所有的输入条件中存在1个真的,那么输出结果就是真的
- 非(相反)
- 如果a=1,那么b=0:如果输入条件a是真的,那么输出结果b就是假的
- 如果a=0,那么b=1:如果输入条件a是假的,那么输出结果b就是真的
图形:

例如登录功能的“用户名”和“密码”之间的关系:

图形:

例如作为乘客上飞机:

图形:

图形:

3. 限制图形符号
以图形的方式表明“输入条件”和“输入条件”之间存在的关系
- 互斥(E-exclude)
- 可以不选,如果选择只能选择1个
- 唯一(O-only)
- 必须选择1个,不能多选,不能不选(有且仅有1个)
- 包含(I-include)
- 至少选1个,可以多选,但不能不选
- 要求(R-require)
- 如果a=1,那么要求b=1
- 如果a=0,那么b的值无所谓(1、0都可以)
- 屏蔽(M-mask)
- 如果a=1,那么b=0
- 如果a=0,那么b可能是1,可能是0

图形:


图形:


图形:


图形:


图形:

实战演练一
假设有如下系统:

列出所有的“因”(输入条件)
- ① 投币:50元
- ② 投币:100元
- ③ 充值:50元
- ④ 充值:100元
列出所有的“果”(输出条件)
- a.充值成功
- b.找零
- c.退卡
- d.未按充值按钮,重新操作!
- e.未按投币按钮,重新操作!
- f.投币金额不足!
列出所有的“因”之间的组合关系
- ① 投50 + ③ 充50
- ① 投50 + ④ 充100
- ② 投100 + ③ 充50
- ② 投100 + ④ 充100
- ① 投50
- ② 投100
- ③ 充50
- ④ 充100
列出所有的“因”之间的限制关系
- ① 投50 、 ② 投100属于互斥
- ③ 充50 、 ④ 充100属于互斥
以图形方式表达因果关系
- ① 投50 + ③ 充50 = a.充值成功 + c.退卡
- ① 投50 + ④ 充100 = b.找零 + c.退卡 + f.投币金额不足!
- ② 投100 + ③ 充50 = a.充值成功 + b.找零 + c.退卡
- ② 投100 + ④ 充100 = a.充值成功 + c.退卡
- ① 投50 = d.未按充值按钮,重新操作!
- ② 投100 = d.未按充值按钮,重新操作!
- ③ 充50 = e.未按投币按钮,重新操作!
- ④ 充100 = e.未按投币按钮,重新操作!








以图形方式表达因之间的限制关系
- ① 投50 、 ② 投100属于互斥
- ③ 充50 、 ④ 充100属于互斥


编写成测试用例:

四、判定表
1. 思想
界面中有多个控件,不同控件之间存在组合或限制关系。不同的输入条件会得到不同的输出结果,同时条件和条件之间存在相互依存、互斥等关系。使用表格的方式理清这些关系
2. 判定表结构

- 条件桩:列出所有的输入条件
- 动作桩:列出所有的输出结果
- 条件项:选择的条件
- 动作项:对应的结果
- 规则:条件+结果的组合为一条规则,即为一条测试用例
实战演练一
假设有如下系统:

画出判定表,列出组合和限制关系:

编写成测试用例:

实战演练二
假设有如下需求:

画出判定表,列出组合和限制关系:

需求分析中加入操作逻辑:

五、正交排列
1. 思想
界面中可操作的控件较多,且每个控件可选择不同的输入选项,若使用穷举方式,将花费大量时间。因此可使用正交排列,选出最优最有代表性的组合进行测试
2. 正交表
据说是日本数学科学家花了多年研究出来,在数学领域的科研成功。具备能从海量数据中挑选最优、最少的数据进行统计的特征,因此,被测试行业借鉴使用。
公式解析:

- L:行
- n:总行数
- m:每列的最大值,也叫做“水平”
- k:列数,也叫做“因素”
(1)L4(23)
|
列号 |
1 |
2 |
3 |
|
试验号 | |||
|
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
|
3 |
2 |
1 |
2 |
|
4 |
2 |
2 |
1 |
(2)L8(27)
|
列号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
试验号 | |||||||
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
|
3 |
1 |
2 |
2 |
1 |
1 |
2 |
2 |
|
4 |
1 |
2 |
2 |
2 |
2 |
1 |
1 |
|
5 |
2 |
1 |
2 |
1 |
2 |
1 |
2 |
|
6 |
2 |
1 |
2 |
2 |
1 |
2 |
1 |
|
7 |
2 |
2 |
1 |
1 |
2 |
2 |
1 |
|
8 |
2 |
2 |
1 |
2 |
1 |
1 |
2 |
(3)L12(211)
|
列号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
试验号 | |||||||||||
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
|
3 |
1 |
1 |
2 |
2 |
2 |
1 |
1 |
1 |
2 |
2 |
2 |
|
4 |
1 |
2 |
1 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
2 |
|
5 |
1 |
2 |
2 |
1 |
2 |
2 |
1 |
2 |
1 |
2 |
1 |
|
6 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
2 |
1 |
1 |
|
7 |
2 |
1 |
2 |
2 |
1 |
1 |
2 |
2 |
1 |
2 |
1 |
|
8 |
2 |
1 |
2 |
1 |
2 |
2 |
2 |
1 |
1 |
1 |
2 |
|
9 |
2 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
10 |
2 |
2 |
2 |
1 |
1 |
1 |
1 |
2 |
2 |
1 |
2 |
|
11 |
2 |
2 |
1 |
2 |
1 |
2 |
1 |
1 |
1 |
2 |
2 |
|
12 |
2 |
2 |
1 |
1 |
2 |
1 |
2 |
1 |
2 |
2 |
1 |
(4)L9(34)
|
列号 |
1 |
2 |
3 |
4 |
|
试验号 | ||||
|
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
2 |
|
3 |
1 |
3 |
3 |
3 |
|
4 |
2 |
1 |
2 |
3 |
|
5 |
2 |
2 |
3 |
1 |
|
6 |
2 |
3 |
1 |
2 |
|
7 |
3 |
1 |
3 |
2 |
|
8 |
3 |
2 |
1 |
3 |
|
9 |
3 |
3 |
2 |
1 |
(5)L16(45)
|
列号 |
1 |
2 |
3 |
4 |
5 |
|
试验号 | |||||
|
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
2 |
2 |
|
3 |
1 |
3 |
3 |
3 |
3 |
|
4 |
1 |
4 |
4 |
4 |
4 |
|
5 |
2 |
1 |
2 |
3 |
4 |
|
6 |
2 |
2 |
1 |
4 |
3 |
|
7 |
2 |
3 |
4 |
1 |
2 |
|
8 |
2 |
4 |
3 |
2 |
1 |
|
9 |
3 |
1 |
3 |
4 |
2 |
|
10 |
3 |
2 |
4 |
3 |
1 |
|
11 |
3 |
3 |
1 |
2 |
4 |
|
12 |
3 |
4 |
2 |
1 |
3 |
|
13 |
4 |
1 |
4 |
2 |
3 |
|
14 |
4 |
2 |
3 |
1 |
4 |
|
15 |
4 |
3 |
2 |
4 |
1 |
|
16 |
4 |
4 |
1 |
3 |
2 |
(6)L25(56)
|
列号 |
1 |
2 |
3 |
4 |
5 |
6 |
|
试验号 | ||||||
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
2 |
2 |
2 |
|
3 |
1 |
3 |
3 |
3 |
3 |
3 |
|
4 |
1 |
4 |
4 |
4 |
4 |
4 |
|
5 |
1 |
5 |
5 |
5 |
5 |
5 |
|
6 |
2 |
1 |
2 |
3 |
4 |
5 |
|
7 |
2 |
2 |
3 |
4 |
5 |
1 |
|
8 |
2 |
3 |
4 |
5 |
1 |
2 |
|
9 |
2 |
4 |
5 |
1 |
2 |
3 |
|
10 |
2 |
5 |
1 |
2 |
3 |
4 |
|
11 |
3 |
1 |
3 |
5 |
2 |
4 |
|
12 |
3 |
2 |
4 |
1 |
3 |
5 |
|
13 |
3 |
3 |
5 |
2 |
4 |
1 |
|
14 |
3 |
4 |
1 |
3 |
5 |
2 |
|
15 |
3 |
5 |
2 |
4 |
1 |
3 |
|
16 |
4 |
1 |
4 |
2 |
5 |
3 |
|
17 |
4 |
2 |
5 |
3 |
1 |
4 |
|
18 |
4 |
3 |
1 |
4 |
2 |
5 |
|
19 |
4 |
4 |
2 |
5 |
3 |
1 |
|
20 |
4 |
5 |
3 |
1 |
4 |
2 |
|
21 |
5 |
1 |
5 |
4 |
3 |
2 |
|
22 |
5 |
2 |
1 |
5 |
4 |
3 |
|
23 |
5 |
3 |
2 |
1 |
5 |
4 |
|
24 |
5 |
4 |
3 |
2 |
1 |
5 |
|
25 |
5 |
5 |
4 |
3 |
2 |
1 |
(7)L8(4×24)
|
列号 |
1 |
2 |
3 |
4 |
5 |
|
实验号 | |||||
|
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
2 |
2 |
|
3 |
2 |
1 |
1 |
2 |
2 |
|
4 |
2 |
2 |
2 |
1 |
1 |
|
5 |
3 |
1 |
2 |
1 |
2 |
|
6 |
3 |
2 |
1 |
2 |
1 |
|
7 |
4 |
1 |
2 |
2 |
1 |
|
8 |
4 |
2 |
1 |
1 |
2 |
(8)L12(3×24)
|
列号 |
1 |
2 |
3 |
4 |
5 |
|
试验号 | |||||
|
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
1 |
1 |
2 |
2 |
|
3 |
1 |
2 |
2 |
1 |
2 |
|
4 |
1 |
2 |
2 |
2 |
1 |
|
5 |
2 |
1 |
2 |
1 |
1 |
|
6 |
2 |
1 |
2 |
2 |
2 |
|
7 |
2 |
2 |
1 |
1 |
1 |
|
8 |
2 |
2 |
1 |
2 |
2 |
|
9 |
3 |
1 |
2 |
1 |
2 |
|
10 |
3 |
1 |
1 |
2 |
1 |
|
11 |
3 |
2 |
1 |
1 |
2 |
|
12 |
3 |
2 |
2 |
2 |
1 |
(9)L16(44×23)
|
列号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
试验号 | |||||||
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
|
3 |
1 |
3 |
3 |
3 |
2 |
1 |
2 |
|
4 |
1 |
4 |
4 |
4 |
2 |
2 |
1 |
|
5 |
2 |
1 |
2 |
3 |
2 |
2 |
1 |
|
6 |
2 |
2 |
1 |
4 |
2 |
1 |
2 |
|
7 |
2 |
3 |
4 |
1 |
1 |
2 |
2 |
|
8 |
2 |
4 |
3 |
2 |
1 |
1 |
1 |
|
9 |
3 |
1 |
3 |
4 |
1 |
2 |
2 |
|
10 |
3 |
2 |
4 |
3 |
1 |
1 |
1 |
|
11 |
3 |
3 |
1 |
2 |
2 |
2 |
1 |
|
12 |
3 |
4 |
2 |
1 |
2 |
1 |
2 |
|
13 |
4 |
1 |
4 |
2 |
2 |
1 |
2 |
|
14 |
4 |
2 |
3 |
1 |
2 |
2 |
1 |
|
15 |
4 |
3 |
2 |
4 |
1 |
1 |
1 |
|
16 |
4 |
4 |
1 |
3 |
1 |
2 |
2 |
实战演练
假设有如下需求:

用户在点餐时,可以有如下选择:
- 店铺:①观沙岭店、②梅溪湖店、③大学城店
- 用餐方式:①自提带走、②店内用餐、③外送
- 优惠券:①全场3.8折、②立减8.8元、③新人免单
- 赠品:①小熊公仔、②咖啡杯、③雨伞
分析需求可发现,有4个控件,每个控件3个选项,则表示应该选择4因子、3水平的正交表;
选择L9(34)表后,将列头填好控件名:

表中间里的数字用对应的选项去填写:

根据每一行的组合编写测试用例:

需求分析中加入操作逻辑:

3. 当没有合适正交表
情况一:当m值不统一,每个控件的选项个数不统一,有合适复合正交表
用户在点餐时,可以有如下选择:
- 饮料:①奶茶、②酸梅汤
- 小吃:①蛋挞、②奥尔良烤翅
- 主食:①大米饭、②意大利面
- 凉菜:①拍黄瓜、②花生米
- 餐包:①华夫饼、②烤面包、③早餐包
此时,k值有5个;m值有1个是3选项,有4个是2选项,可选择L12(3×24)表
|
列号 |
1 |
2 |
3 |
4 |
5 |
|
试验号 | |||||
|
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
1 |
1 |
2 |
2 |
|
3 |
1 |
2 |
2 |
1 |
2 |
|
4 |
1 |
2 |
2 |
2 |
1 |
|
5 |
2 |
1 |
2 |
1 |
1 |
|
6 |
2 |
1 |
2 |
2 |
2 |
|
7 |
2 |
2 |
1 |
1 |
1 |
|
8 |
2 |
2 |
1 |
2 |
2 |
|
9 |
3 |
1 |
2 |
1 |
2 |
|
10 |
3 |
1 |
1 |
2 |
1 |
|
11 |
3 |
2 |
1 |
1 |
2 |
|
12 |
3 |
2 |
2 |
2 |
1 |
情况二:当m值不统一,每个控件的选项个数不统一,没有合适复合正交表
- 保存目录:暂时忽略
- 文件名称:暂时忽略
- 导出格式:①PNG、②JPG、③PDF
- 导出品质:①高清、②普通
- 水印设置:①无水印、②自定义、③默认水印
- 透明设置:①透明背景、②不透明背景
此时,k值有4个;m值有2个是3选项,有2个是2选项,期望(32×22),但没有该正交表,那么m值取最大值,m=3,选择L9(34)
|
列号 |
1 |
2 |
3 |
4 |
|
试验号 | ||||
|
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
2 |
2 |
2 |
|
3 |
1 |
3 |
3 |
3 |
|
4 |
2 |
1 |
2 |
3 |
|
5 |
2 |
2 |
3 |
1 |
|
6 |
2 |
3 |
1 |
2 |
|
7 |
3 |
1 |
3 |
2 |
|
8 |
3 |
2 |
1 |
3 |
|
9 |
3 |
3 |
2 |
1 |
将选项填充之后,发现【导出品质】和【透明设置】的3选项成为了空白格,没有值可填充:
将该控件的其他选项,尽量均匀填充到空白格里:

如果填充完空白格后,发现有重复组合,则再替换其他值,但要遵守平均原则
情况三:当K值没有合适正交表

- 姓名:填/不填
- 密码:填/不填
- 手机:填/不填
- 地址:填/不填
此时,k值有4个;m值是2,期望(24)没有直接可以使用的正交表,选择K值最接近的,L12(3×24)
|
列号 |
1 |
2 |
3 |
4 |
5 |
|
试验号 | |||||
|
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
1 |
1 |
1 |
2 |
2 |
|
3 |
1 |
2 |
2 |
1 |
2 |
|
4 |
1 |
2 |
2 |
2 |
1 |
|
5 |
2 |
1 |
2 |
1 |
1 |
|
6 |
2 |
1 |
2 |
2 |
2 |
|
7 |
2 |
2 |
1 |
1 |
1 |
|
8 |
2 |
2 |
1 |
2 |
2 |
|
9 |
3 |
1 |
2 |
1 |
2 |
|
10 |
3 |
1 |
1 |
2 |
1 |
|
11 |
3 |
2 |
1 |
1 |
2 |
|
12 |
3 |
2 |
2 |
2 |
1 |
去掉多余的一列,如下图,再进行内容填充:

六、场景法
1. 思想
运用场景来对系统的功能点或业务流程的描述。包括正向主流程和异常流程,从而覆盖所有可能场景。
2. 场景分类
- 基本流:软件功能按照正确的事件流,中间无任何差错,从开始直接执行到结束的一条正确流程
- 备选流:软件功能在执行过程中,包含可能存在问题的各支流
图解:
- 基本流:正向流程
- 备选流1:始于基本流,由于某些原因偏离基本流,后又因为特定原因回到基本流中
- 备选流2:始于备选流,一直偏离基本流,最终到场景结束也无法回到基本流
- 备选流3:始于基本流,由于某些原因偏离基本流,后又因为特定原因回到基本流的起点重新来过
- 备选流4:始于基本流,由于某些原因偏离备选流,最终到场景结束也无法回到基本流
3. 场景法使用步骤
- 分析需求,根据需求说明描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 针对每一个场景生成相应的测试用例
- 重新审核生成的所有测试用例,把多余的测试用例去掉,确定好每一个测试用例,并设计测试数据
4. 案例
例:小明要在某购物网站上购买一件衣服,使用场景法设计测试用例
前提条件
- 假设小明在购物网站上的账号为:ming,密码:123
- 假设小明的银行卡账号为:62282***1216,密码:123
- 衣服的价格为:180元
步骤一:列出基本流和备选流


步骤二:根据基本流和备选流来确定场景

步骤三:针对各种场景,设计相应的测试用例

备注:V-表示有效的数值;I-表示无效的数值;N/A表示无效步骤
步骤四:去掉重复的场景,补充测试数据

备注:N/A表示无效步骤
步骤五:编写测试用例

七、错误推论
1. 思想
基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。
2. 错误推论方向
- 凭借对项目的理解度:了解项目中薄弱的地方,针对性去使用错误数据和操作,破坏性使用薄弱功能。
- 凭借个人经验:在以往的项目中积累经验,判断出该类项目可能容易在哪出现问题,针对性做测试。
- 凭借对开发人员、产品经理的了解:了解同事们的工作风格,判断出“他”可能易在哪些功能点出错。
例如:
- 需求:只能输入正整数 错推:输入“+10”是否可行;输入“十”是否可行;输入“10.00”是否可行
- 需求:活动时间为“开始时间yyyy-mm-dd~结束时间yyyy-mm-dd” 错推:[结束时间] 早于 [开始时间]是否可行
- 需求:某子页面嵌套在菜单中,只能会员能看到该菜单,从而访问该子页面 错推:普通用户直接输入该子页面的网址是否能访问
- 需求:白银会员99元,白金会员199元,从白银升级到白金会员只需要补差价100元即可,开通会员30分钟内允许退款。 错推:小明开通白银会员花费99元,再补差价100元升级到白金会员,后又申请退白银会员99元。是否允许退款?是否相当于花费100元开通了白金会员?
错推:小明开通白银会员花费99元,再补差价100元升级到白金会员,后又申请退白金会员。会退款199元还是100元?退款成功后,是否保留白银会员权力?