测试用例设计
(个人学习用20170312-0319)
测试用例设计方法
11种
1.等价类
2.边界值
3.判定表
4.正交试验法
5.流程分析法
6.状态迁移图法
7.输入域覆盖法
8.输出域覆盖法
9.因果图
10.异常分析法
11.错误猜测法
等价类,边界值(一般组成等价类边界值表)
等价类:它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。
边界值:边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界值分上点,离点,内点
上点:边界上的点
离点:原则为闭外开内,以整数为例区间(0,100】,离点为1,101
内点:内部任意点
案例一
输入三条边,判断能否组成三角形,组成三角形的情况下继续判断能组成等腰?等边?直角三角形?
分析:
首先确定需求:
追加:是否需要判断锐角?钝角三角形?
边长长度取值范围(假定为1-1000)
边是否为直线?
PS:在阅读需求本身时,不仅仅要理解需求,还需要针对需求问题和漏项进行分析。不仅看文档,还需要和开发沟通,有些需求中没有提及的细节也需要测试
设计步骤:
1.需求 -> 界面
2.拆分需求中的功能
3.拆分功能的输入(个数,名称)
4.分析独立输入输入的规则(通用:类型,长度,取值范围,组成规则,是否为空,是否重复)
分析三角形案例(界面暂时不考虑)
功能:1项(判断是否为三角形)
输入:3项(3条边长)
假定需求中对输入进行了以下要求
输入名称
|
类型
|
长度
|
取值范围
|
组成规则
|
是否为空
|
是否重复
|
边A
|
正整数、正小数
|
/
|
1-1000
|
1-1000以内的纯数字
|
否
|
是
|
边B
|
正整数、正小数
|
/
|
1-1000
|
1-1000以内的纯数字
|
否
|
是
|
边C
|
正整数、正小数
|
/
|
1-1000
|
1-1000以内的纯数字
|
否
|
是
|
按以上数据为例,编写A,B,C三边的等价类边界值表
三角行边A等价类边界值表
|
有效类
|
有效数据
|
序号
|
无效类
|
无效数据
|
序号
|
正整数
|
5
|
1
|
负整数
|
-1
|
1
|
正小数
|
6.6
|
2
|
负小数
|
-1.8
|
2
|
1-1000数字
|
123
|
3
|
零
|
0
|
3
|
1
|
4
|
大于1000
|
1008
|
4
|
1000
|
5
|
1000.01
|
5
|
1.01
|
6
|
小于1
|
0.5
|
6
|
999.99
|
7
|
0.99
|
7
|
|
a=b=5
|
8
|
空
|
空格
|
8
|
|
|
|
|
不输入
|
9
|
|
|
|
非数字-字母
|
abc
|
10
|
|
|
|
非数字-特殊符号
|
*!
|
11
|
|
|
|
非数字-汉字
|
啊
|
12
|
三角形边B等价类边界值表
|
有效类
|
有效数据
|
序号
|
无效类
|
无效数据
|
序号
|
正整数
|
2
|
1
|
负整数
|
-7
|
1
|
正小数
|
1.1
|
2
|
负小数
|
-5.4
|
2
|
1-1000数字
|
321
|
3
|
零
|
0
|
3
|
1
|
4
|
大于1000
|
1001
|
4
|
1000
|
5
|
1000.01
|
5
|
1.01
|
6
|
小于1
|
0.1
|
6
|
999.99
|
7
|
0.99
|
7
|
|
b=c=3
|
8
|
空
|
空格
|
8
|
|
|
|
不输入
|
9
|
|
|
|
非数字-字母
|
s
|
10
|
|
|
|
非数字-特殊符号
|
!!
|
11
|
|
|
|
非数字-汉字
|
啊
|
12
|
|
|
|
|
|
|
|
|
|
|
|
|
三角形边C等价类边界值表
|
有效类
|
有效数据
|
序号
|
无效类
|
无效数据
|
序号
|
正整数
|
7
|
1
|
负整数
|
-3
|
1
|
正小数
|
2.6
|
2
|
负小数
|
-4.5
|
2
|
1-1000数字
|
222
|
3
|
零
|
0
|
3
|
1
|
4
|
大于1000
|
1024
|
4
|
1000
|
5
|
1000.01
|
5
|
1.01
|
6
|
小于1
|
0.5
|
6
|
999.99
|
7
|
0.99
|
7
|
|
c=a=7
|
8
|
空
|
空格
|
8
|
|
|
|
不输入
|
9
|
|
|
|
非数字-字母
|
c
|
10
|
|
|
|
非数字-特殊符号
|
#
|
11
|
|
|
|
非数字-汉字
|
啊
|
12
|
根据以上数据构造测试用例,其中
有效用例数量=所有有效类中,项目最多的数量
无效用例数量=所有无效类数据之和
即有效用例8条,无效用例36条
其中考虑等价类和边界值数据时,重复的数据可以删除,如上表中有效类里1-1000数字项内
多个数据可只留1个,无效类中,可只留边界值做代表数据
总结:
等价类:不覆盖所有输出情况,需要追加
优点:简单高效
缺点:只考虑输入的有效,无效,选取数据比较随机,边界缺陷不易发现
边界值:在等价类的基础上增加了边界数据
优点:更容易发现边界上的问题
缺点:存在边界才能使用
适用:有输入功能,且存在边界取值和边界长度
判定表法
案例一中,利用等价类边界值表法分析的用例并没有覆盖所有情况,只考虑输入的有效无效,没考虑条件,结果之间的逻辑关系,需要追加判定表的测试用例,以下分析仍以案例一为例
设计步骤:
1.根据需求提取输入之间的逻辑关系(条件)
2.根据需求提取输出结果
本案例中
条件桩:a+b>c,a+c>b,b+c>a
动作装:能组成三角形,不能组成三角形
3.根据条件个数组合所有可能的情况
4.根据需求,针对每一个条件桩的足额,找出对应输出结果
5.每一列对应一个测试用例,补充在等价类边界值表分析中没有涉及到的用例
具体分析
条件桩
|
a+b>c
|
1
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
a+c>b
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
b+c>a
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
动作桩
|
能组成三角形
|
√
|
|
|
|
|
|
|
|
不能组成三角形
|
|
√
|
√
|
|
|
|
|
|
不存在
|
|
|
|
√
|
√
|
√
|
√
|
√
|
|
|
|
|
|
|
|
|
|
|
条件桩
|
a=b
|
1
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
a=c
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
b=c
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
动作桩
|
等腰三角形
|
|
|
|
√
|
|
√
|
√
|
|
等边三角形
|
√
|
|
|
|
|
|
|
|
普通三角形
|
|
|
|
|
|
|
|
√
|
不存在
|
|
√
|
√
|
|
√
|
|
|
|
|
|
|
|
|
|
|
|
|
|
条件桩
|
a*a+b*b=c*c
|
1
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
a*a+c*c=b*b
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
b*b+c*c=a*a
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
动作桩
|
直角三角形
|
|
|
|
√
|
|
√
|
√
|
|
普通三角形
|
|
|
|
|
|
|
|
√
|
不存在
|
√
|
√
|
√
|
|
√
|
|
|
|
最后根据上述组合的情况,补充等价类边界值没有涉及到的用例
总结
判定表法:
优点:达到所有条件全组合的覆盖
缺点:条件桩过多时,用例指数倍增长(可进行条件拆分,用例合并)
适用:输入的判断条件存在逻辑关系(真假,是否存在)
判定表的合并
两列合并为一列
合并条件:动作项(输出结果)相同,对应条件项,只有一个条件取值不一样,才能合并
示例
|
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
条件
|
疲倦
|
√
|
√
|
X
|
X
|
√
|
√
|
X
|
X
|
感兴趣
|
√
|
X
|
√
|
X
|
√
|
X
|
√
|
X
|
糊涂
|
√
|
√
|
√
|
√
|
X
|
X
|
X
|
X
|
|
|
|
|
|
|
|
|
|
|
动作
|
本章重读
|
√
|
|
√
|
|
|
|
|
|
继续读下去
|
|
|
|
|
√
|
|
√
|
|
停止阅读 休息
|
|
√
|
|
|
|
√
|
|
|
跳到下一章
|
|
|
|
√
|
|
|
|
√
|
1,3列,输出结果均为“本章重读”且只有“疲倦”一个条件不同,可以进行合并
缺点:存在风险,建议5个以上条件桩,再考虑合并
判定表的拆分
将大的判定表拆分为若干小的判定表
正交实验法
案例四
PowerPoint软件打印功能描述如下:
打印范围分:全部、当前幻灯片、给定范围 共三种情况;
打印内容分:幻灯片、讲义、备注页、大纲视图 共四种方式;
打印颜色/灰度分: 颜色、灰度、黑白 共三种设置;
打印效果分:幻灯片加框和幻灯片不加框两种方式。
请利用如下正交表设计用例。
下面正交表共四个因子,其中每个因子三状态:
设计步骤:
1.根据需求提取因子(输入)
2.明确每个因子的状态(输入的取值)
3.用符号代替因子,画银子状态表
打印范围
|
打印内容
|
打印颜色
|
打印效果
|
全部
|
幻灯片
|
颜色
|
加框
|
当前幻灯片
|
讲义
|
灰度
|
不加框
|
给定范围
|
备注页
|
黑白
|
|
|
大纲视图
|
|
|
|
|
|
|
A
|
B
|
C
|
D
|
A1
|
B1
|
C1
|
D1
|
A2
|
B2
|
C2
|
D2
|
A3
|
B3/B4
|
C3
|
~D1
|
此处因为是正交图是3状态的,故先将B列的3,4合并,后续再做拆分,D项做补充
4.将因子状态表带入正交试验表
A
|
B
|
C
|
D
|
A1
|
B1
|
C1
|
D1
|
A1
|
B2
|
C2
|
D2
|
A1
|
B3/B4
|
C3
|
~D1
|
A2
|
B1
|
C2
|
~D1
|
A2
|
B2
|
C3
|
D2
|
A2
|
B3/B4
|
C1
|
D1
|
A3
|
B1
|
C3
|
D2
|
A3
|
B2
|
C1
|
~D1
|
A3
|
B3/B4
|
C2
|
D1
|
5.进行拆分
A
|
B
|
C
|
D
|
A1
|
B1
|
C1
|
D1
|
A1
|
B2
|
C2
|
D2
|
A1
|
B3
|
C3
|
~D1
|
A1
|
B4
|
C3
|
~D2
|
A2
|
B1
|
C2
|
~D1
|
A2
|
B2
|
C3
|
D2
|
A2
|
B3
|
C1
|
D1
|
A2
|
B4
|
C1
|
D1
|
A3
|
B1
|
C3
|
D2
|
A3
|
B2
|
C1
|
~D1
|
A3
|
B3
|
C2
|
D1
|
A3
|
B4
|
C2
|
D1
|
6.把符号还原成文字,每一行为一个用例
打印范围
|
打印内容
|
打印颜色
|
打印效果
|
全部
|
幻灯片
|
颜色
|
加框
|
全部
|
讲义
|
灰度
|
不加框
|
全部
|
备注页
|
黑白
|
加框
|
全部
|
大纲视图
|
黑白
|
不加框
|
当前幻灯片
|
幻灯片
|
灰度
|
加框
|
当前幻灯片
|
讲义
|
黑白
|
不加框
|
当前幻灯片
|
备注页
|
颜色
|
加框
|
当前幻灯片
|
大纲视图
|
颜色
|
加框
|
给定范围
|
幻灯片
|
黑白
|
不加框
|
给定范围
|
讲义
|
颜色
|
加框
|
给定范围
|
备注页
|
灰度
|
加框
|
给定范围
|
大纲视图
|
灰度
|
加框
|
总结:
适用前提:输入的参数为值(固定值),输出结果为值的组合,每组组合对应不同代码处理路径。
当输入较多时,也可以适用allpairs工具进行辅助
使用步骤:
1.将allpairs文件夹放到C:\下
2.在文件夹内建立TXT文件,将因子状态表(用excel创建-复制)复制,不用做任何修改,保存
3.Cmd -> 进入allpairs文件夹下 cd C:\allpairs\
4.allpairs.exe_(建立的TXT文件名).txt_->(欲输出的TXT文件名).txt (下划线代表空格)
5.在文件夹中查看输出文档即可
输出域覆盖法
特点:无需输入,已存在对应输出结果
设计步骤:从输出结果倒退输入
示例
上图可见用户名,工号为已经显示的内容,可以由此推断,在登录时输入的对应信息,用推断的登录输入信息进行测试,查看输出结果是否为对应结果
流程分析法
特点:主要覆盖处理,输出,没有完全的覆盖输入,需要其他方法补充
适用:流程复杂,对业务比较熟悉
案例:
下面是一个用户通过银行的ATM取款机进行取款的Use case的例子。
基本事件流:
用户向ATM提款机中插入银行卡,如果银行卡是合法的,ATM提款机界面提示用户输入提款密码;
参数1
|
银行密码
|
参数类型
|
字符串
|
参数范围
|
字符串为0~9之间的阿拉伯数字组合,密码长度为6位
|
备注
|
|
用户输入该银行卡的密码,ATM提款机与MainFrame传递密码,检验密码的正确性。如果输入密码正确,提示用户输入取钱金额,提示信息为,“请输入您的提款额度”;
用户输入取钱金额,系统校验金额正确,提示用户确认,提示信息为“您输入的金额是xxx,请确认,谢谢!”,用户按下确认键,确认需要提取的金额;
参数1
|
取款金额
|
参数类型
|
整数
|
参数范围
|
50~1500 RMB,单笔取款额最高为1500RMB;每24小时之内,取款的最高限额是4500RMB
|
备注
|
|
系统同步银行主机,点钞票,输出给用户,并且减掉数据库中该用户帐户中的存款金额。
用户提款,银行卡自动退出,用户取走现金,拔出银行卡,ATM提款机界面恢复到初始状态;
备选事件流(考虑可能失败的地方):
在备选事件流1中:
如果插入无效的银行卡,那么,在ATM提款机界面上提示用户“您使用的银行卡无效!”,3秒钟后,自动退出该银行卡。
在备选事件流2中:
如果用户输入的密码错误,则提示用户“您输入的密码无效,请重新输入”;
如果用户连续3次输入错误密码,ATM提款机吞卡,并且ATM提款机的界面恢复到初始状态。此时,其他提款人可以继续使用其他的合法的银行卡在ATM提款机上提取现金。
用户输入错误的密码后,也可以按“退出”键,则银行卡自动退出。
在备选事件流3中:
如果用户输入的单笔提款金额超过单笔提款上限,ATM提款机界面提示“您输入的金额错误,单笔提款上限金额是1500RMB,请重新输入”;
如果用户输入的单笔金额,不是以50RMB为单位的,那么提示用户“您输入的提款金额错误,请输入以50为单位的金额”;
如果用户在24小时内提取的金额大于4500RMB,则ATM提款机提示用户,“24小时内只能提取4500RMB,请重新输入提款金额”输入提取的金额超过了系统的设定的限制 ;
如果用户输入正确的提款金额,ATM提款机提示用户确认后,用户取消提款,则ATM提款机自动退出该银行卡;
如果ATM提款机中余额不足,则提示用户,“抱歉,ATM提款机中余额不足”,3秒钟后,自动退出银行卡。
在备选事件流4中:
如果用户银行户头中的存款小于提款金额,则提示用户“抱歉,您的存款余额不足!”,3秒钟后,自动退出银行卡;
如果ATM提款机与MainFrame之间通讯超时10秒钟,则本次操作取消,提示用户“抱歉,链接超时,本次操作取消”,并且将银行卡退出;
在备选事件流5中:
如果用户没有取走现金,或者没有拔出银行卡,ATM提款机不做任何提示,直接恢复到界面的初始状态;
特殊需求:
1. 用户每一步骤的输入操作中,必须在10秒之内完成,否则系统视做自动放弃,并退出银行卡,界面恢复到初始状态;
2. 用户在ATM提款机器上输入的银行卡密码以MD5方式加密方式同步到MainFrame;
设计步骤
1.依据需求,分析相关的判断条件
2.将所有的条件判断画入流程图中
3.先正确的分支
4.再逐一画出每个错误的分支
5.一条路径对应一条测试用例
需求分析:
序号
|
条件判断的内容
|
条件
|
1
|
如果银行卡是合法的
|
银行卡是否合法
|
2
|
如果输入密码正确
|
密码是否正确
|
3
|
如果用户连续3次输入错误密码
|
是否连续三次密码错误
|
4
|
如果用户输入的单笔提款金额超过单笔提款上限
|
单笔提款金额是否超过单笔上限
|
5
|
如果用户输入的单笔金额,不是以100RMB为单位的
|
输入金额是否为100MB倍数
|
6
|
如果用户在24小时内提取的金额大于4500RMB
|
24h内取款金额是否超过4500
|
7
|
如果用户输入正确的提款金额,ATM提款机提示用户确认后,用户取消提款
|
是否取消提款
|
8
|
如果ATM提款机中余额不足
|
ATM余额是否充足
|
9
|
如果用户银行户头中的存款小于提款金额
|
银行卡的金额是否小于提款金额
|
10
|
如果ATM提款机与MainFrame之间通讯超时10秒钟
|
网络是否超时
|
11
|
如果用户没有取走现金
|
是否取走现金
|
12
|
没有拔出银行卡
|
是否拔出银行卡
|
画流程图
状态迁移图法
案例
手机中MP3播放功能状态-事件表如下,请用状态迁移法设计用例。
并且当MP3曲目在起点时不能按R键,当MP3曲目在末端时不能按P、F键。
按键
|
暂停
|
倒
|
播放
|
进
|
录音
|
R(倒)
|
倒
|
·
|
倒
|
倒
|
·
|
P(播放)
|
播放
|
播放
|
·
|
播
|
·
|
F(进)
|
进
|
进
|
进
|
·
|
·
|
RC(录音)
|
录音
|
·
|
·
|
·
|
·
|
S(暂停)
|
·
|
暂停
|
暂停
|
暂停
|
暂停
|
设计步骤:
1.需求 -> 确定状态
2.根据状态画N×N的矩阵
N*N矩阵
|
|
|
|
|
|
按键
|
暂停
|
倒
|
播放
|
进
|
录音
|
R(倒)
|
√
|
X
|
√
|
√
|
X
|
P(播放)
|
√
|
√
|
X
|
√
|
X
|
F(进)
|
√
|
√
|
√
|
X
|
X
|
RC(录音)
|
√
|
X
|
X
|
X
|
X
|
S(暂停)
|
X
|
√
|
√
|
√
|
√
|
3.画状态树(广度优先,深度优先2种,)
广度优先:
任选一个状态,画该状态可以到达的所有节点,然后画每个节点可到达的节点,每个节点只画一次,直至全部状态都被画过
深度优先:
任选一个状态,先画第一级,然后只画每级最左边的一项,画过的结束,向右一个画,直至全部结束,再从下往上逐层递推,查看有无没画过的
4.每一条路径对应一条用例
5.再补充不可到达的路径
按键
|
暂停
|
倒
|
播放
|
进
|
录音
|
R(倒)
|
√
|
X
|
√
|
√
|
X
|
P(播放)
|
√
|
√
|
X
|
√
|
X
|
F(进)
|
√
|
√
|
√
|
X
|
X
|
RC(录音)
|
√
|
X
|
X
|
X
|
X
|
S(暂停)
|
X
|
√
|
√
|
√
|
√
|
例如:倒退-录音,播放-录音,前进-录音,录音-播放/前进/后退
因果分析法,输入域覆盖法, 异常分析法,错误猜测法(略)