本文根据Vince整理的《测试用例设计白皮书》整理
一.黑匣子测试用例方法
黑匣子用例的设计方法主要包括等值类划分法、边界值分析法、错误估计法、因果图法、判定表驱动发、正交试验设计法、功能图法等
1 .等价类划分法
等价类分割法将程序的输入域分为几个部分,从每个部分中选择少数具有代表性的数据作为测试用例。 每个类的代表性数据在测试中的作用与此类中的其他值等效。
应用场景:
在某个程序中,“将3个整数a、b、c分别作为3条边的长度输入而构成三角形。 判定由程序构成的三角形的类型,如果该三角形是一般的三角形等腰三角形和等腰三角形,则分别计算.”. 采用等价类划分方法进行该程序的测试用例设计。
:分析主题给定的隐含输入条件要求
整数三个数非零数正数两边之和大于第三边等腰三角形
如果a、b和c满足条件1-4,请输入以下四种情况之一:
如果不满足条件5,则输出“不是三角形”
如果满足3边相等的条件7,则输出为“正三角形”
只有两边相等,即满足条件6时,输出为"等腰三角形"
三条边不全部相等时,程序输出为“一般三角形”
复盖有效等价类的测试用例:
a b c涵盖等价类的号码
3 4 5 1-7
451-7,8
451-7和9
5551-7,10
4441-7,11
覆盖无效等价类的测试用例:
2 .边界值分析法
边界值分析法是一种测试输入火输出边界值的黑匣子测试方法。 同城边界值分析法是对等价类划分法的补充
使用边界值分析方法设计测试用例需要首先确定边界情况。 通常,输入和输出等价类的边界是应该重点关注测试的边界情况。 作为测试数据,需要选择正好相等、正好大于或小于边界的值。
通常,软件测试所包含的边界检查有:个数字、文字、位置、重量、大小、速度、方位、大小、空间等几个类型
因此,以上类型的边界值在:最大/最小、首位/最下位、上/下、最快/最慢、最高/最低、最短/最长、空/不到等情况下,应该将边界值用作测试数据。
项
边界值
测试用例设计的思考
文字
开头-1个字符/末尾1个字符
假设文本输入区域允许包含1到255个字符,请输入0和256个字符作为无效等价类别,该类别将1和255个字符作为有效等价类别输入。 这些数值都属于边界条件值。
数值
最小值-1/最大值1
假设某软件的数据输入字段需要输入5位数据值,可以使用10000作为最小值,99999作为最大值,然后正好使用小于5位和5位以上的数值作为边界条件。
空间
比可用空间小一点/比可用空间大一点
例如,用USB存储器保存数据时,将比剩下的磁盘空间稍大(几KB )的文件作为边界条件使用。
APP场景:
NextDate函数的边界值分析用例
NextDate函数隐式规定变量mouth和变量day的取值范围为1mouth12和1day31,变量year的取值范围为1912year
测试用例
mouth
每日
年
预期输出
Test1
Test2
Test3
Test4
Test5
Test6
Test7
6
6
6
6
6
6
6
15
15
15
15
15
15
15
1911
1912
1913
1975
2049
2050
2051
1911.6.16
1912.6.16
1913.6.16
1975.6.16
2049.6.16
2050.6.16
2051.6.16
Test8
Test9
第10集
第11集
Test12
Test13
6
6
6
6
6
6
-1
1
2
30
31
32
2001
2001
2001
2001
2001
2001
day超出[1…31]
2001.6.2
2001.6.3
2001.7.1
输入日期超界
day超出[1…31]
Test14
Test15
Test16
Test17
Test18
Test19
-1
1
2
11
12
13
15
15
15
15
15
15
2001
2001
2001
2001
2001
2001
Mouth超出[1…12]
2001.1.16
2001.2.16
2001.11.16
2001.12.16
Mouth超出[1…12]
4.错误推断法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.
5.因果图法
因果图法师一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法.
采用因果图法设计测试用例的步骤:
① 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符.
② 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图.
③ 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件.
④ 把因果图转换为判定表
⑤ 把判定表的每一列拿出来作为依据,设计测试用例.
6.判定表驱动法
判定表通常由4个部分组成
① 条件桩:列出了问题得所有条件.通常认为列出的条件的次序无关紧要
② 动作桩:列出了问题规定可能采取的操作.这些操作的排列顺序没有约束
③ 条件项:列出针对它左列条件的取值.在所有可能情况下的真假值.
④ 动作项:列出在条件项的各种取值情况下应该采取的动作.
判定表的建立步骤:
① 确定规则的个数.加入有n个条件.每个条件有两个取值(0,1),故有2n种规则.
② 列出所有的条件桩和动作桩
③ 填入条件项
④ 填入动作项.等到初始判定表
⑤ 简化.合并相似规则
应用场景:
问题要求:"....对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理...",这里假定,"维修记录不全"和"优先维修处理"均已在别处有更严格的定义.请建立判定表
解答:
① 确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则.
②列出所有的条件桩和动作桩
③ 填入条件项.可从最后1行条件项开始,逐行向上填满.如第三行是:Y N Y N Y N Y N,第二行是:Y Y N N Y Y N N 等等.
④ 填入动作桩和动作项.这样便得到形如图的初始判定表.
条件
功率大于50马力吗?
N
Y
Y
Y
N
N
N
N
维修记录不全吗?
Y
Y
N
N
Y
Y
N
N
运行超过10年吗?
Y
N
Y
N
Y
N
Y
N
动作
进行优先处理
x
x
X
X
X
作其他处理
X
x
x
⑤ 化简,合并相似规则后得到图.
条件
功率大于50马力吗?
Y
Y
Y
N
N
维修记录不全吗?
Y
N
N
-
-
运行超过10年吗?
-
Y
N
Y
N
动作
进行优先处理
x
x
X
作其他处理
x
x
7.正交试验法
依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.
8.功能图法
功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同事要依靠判定表或因果图表示的逻辑功能.
9.场景法
事件触发时的情景便形成了场景,二同一事件不同的触发顺序和处理结果就形成事件流.
应用场景:
ATM例子的流程示意图.
场景设计:
场景1——成功提款
基本流
场景2——ATM内没有现金
基本流
备选流2
场景3——ATM内现金不足
基本流
备选流3
场景4——PIN有误(还有输入机会)
基本流
备选流4
场景5——PIN有误(不再有输入机会)
基本流
备选流4
场景6——账户不存在/账户类型有误
基本流
备选流5
场景7——账户余额不足
基本流
备选流6
用例设计:
TCID
场景/条件
PIN
账号
输入(或选择)的金额
账面
金额
ATM内的金额
预期结果
CW1
场景1:成功提款
V
V
V
V
V
成功提款
CW2
场景2:ATM内没有现金
V
V
V
V
I
提款选项不可用,用例结束
CW3
场景3:ATM内现金不足
V
V
V
V
I
警告消息,返回基本流步骤6,输入金额
CW4
场景4:PIN有误(还有不止一次输入机会)
I
V
n/a
V
V
警告消息,返回基本流步骤4,输入 PIN
CW5
场景4:PIN有误(还有一次输入机会)
I
V
n/a
V
V
警告消息,返回基本流步骤4,输入 PIN
CW6
场景4:PIN有误(不再有输入机会)
I
V
n/a
V
V
警告消息,卡予保留,用例结束
数据设计
CID
场景/条件
PIN
账号
输入(或选择)的金额(元)
账面
金额(元)
ATM内的金额(元)
预期结果
CW1
场景1:成功提款
4987
809-498
50.00
500.00
2 000
成功提款。账户余额被更新为450.00
CW2
场景2:ATM内没有现金
4987
809-498
100.00
500.00
0.00
提款选项不可用,用例结束
CW3
场景3:ATM内现金不足
4987
809-498
100.00
500.00
70.00
警告消息,返回基本流步骤6,输入金额
CW4
场景4:PIN有误(还有不止一次输入机会)
4978
809-498
n/a
500.00
2 000
警告消息,返回基本流步骤4,输入PIN
CW5
场景4:PIN有误(还有一次输入机会)
4978
809-498
n/a
500.00
2 000
警告消息,返回基本流步骤4,输入PIN
CW6
场景4:PIN有误(不再有输入机会)
4978
809-498
n/a
500.00
2 000
警告消息,卡予保留,用例结束
10.测试用例设计综合策略
1.Myers提出了使用各种测试方法的综合策略:
① 在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强
② 必要时用等价类划分方法补充一些测试用例
③ 用错误推测法再追加一些测试用例
④ 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例
⑤ 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法
2.测试用例的设计步骤
① 构造更加设计规格得出的基本功能测试用例
② 边界值测试用例
③ 状态转换测试用例
④ 错误猜测测试用例
⑤ 异常测试用例
⑥ 性能测试用例
⑦ 压力测试用例
3.优化测试用例的方法
① 利用设计测试用例的8中方法不断的对测试用例进行分解与合并
② 采用遗传算法理论进化测试用例
③ 在测试时利用发散思维构造测试用例