提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
为什么要学习测试方法
本文重点是决策表和正交表,等价类和边界值理解就好
学习测试方法可以提高编写测试用例的能力,提高测试用例的覆盖率,避免遗漏缺陷。
本文介绍的是黑盒测试方法,可以提高对需求的覆盖。还有白盒测试方法可以提高对代码的覆盖,对代码的覆盖包括语句覆盖、分支覆盖、条件覆盖、分支条件覆盖、LSACJ覆盖、MC/DC覆盖、路径覆盖等。
一、等价类划分
1.等价类的划分原则
1、按区间划分
在输入条件规定了取值范围的情况下,可以确定有效等价类和无效等价类。
例:程序输入条件为小于100大于10 的整数x,则有效等价类为
10<x<100,两个无效等价类x≤10和x≥100。
2、按照数值划分
在规定了一组输入数据(假设包括n个输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定n个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。
例如:程序输入x取值于一个固定的枚举类型{1,3,7,15},且程序中对这4个数值分别进行处理,则有等价有效类为x=1,x=3,x=7,x=15,无效等价类为x≠{1,3,7,15}的集合。
3、按照限制条件或规则划分
a.在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
例如:程序输入条件为奇数的整数x,则有效等价类为x的值为奇数的整数,无效等价类为x的值不为奇数的数。
二、边界值
一个范围的临界值,或者等价类划分范围后的交集处
1.案例
密码验证,登录QQ,账号密码是6-10位正整数
有效等价类:长度在6到10位之间的整数;
无效等价类:负数,小数,英文字母,中文,空格,特殊字符
等价类范围:6≤X≤10,临界点是6,10
三、决策表测试
1.基本概念
判定表的组成:条件桩,动作桩,条件项,动作项
条件桩 | 条件项 |
---|---|
动作桩 | 动作项 |
- 条件桩:列出问题的所有条件。
- 动作桩:列出问题规定所采取的操作。
- 条件项:针对条件桩给出的条件,列出所有可能情况下的真假值。
- 动作项:列出在条件项的各种取值情况下应该采取的动作。
- 规则数:决策表中一列就是一条规则,规则数是2n,n是条件数。
合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为“无关条件”
若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。
2.案例
某货运站收费标准如下:如果收件地点在本省,则快件每公斤5元,慢件每公斤3元;如果收件地点在省外,则在20公斤以内(含20公斤)快件每公斤7元,慢件每公斤5元,而超过20公斤时,快件每公斤9元,慢件每公斤7元。
先用决策表分析
第一步:确定规则的数目。
条件: (1)收件地在本省?
(2)是快件?
(3)重量不超过20公斤?
根据公式计算2³=8,所以应有8条规则。
第二步:列出所有的条件桩和行动桩。
第三步:填入条件条目
第四步:填入行动条目
列出决策表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
收件地址在本省? | Y | Y | Y | Y | N | N | N | N |
是快件 | Y | Y | N | N | Y | Y | N | N |
重量不超过20公斤 | Y | N | Y | N | Y | N | Y | N |
每公斤3元 | × | × | ||||||
每公斤5元 | × | × | × | |||||
每公斤7元 | × | × | ||||||
每公斤9元 | × |
因为有相同动作,所以合并决策表
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
收件地址在本省? | Y | Y | N | N | N | N |
是快件 | Y | N | Y | Y | N | N |
重量不超过20公斤 | - | - | Y | N | Y | N |
每公斤3元 | × | |||||
每公斤5元 | × | × | ||||
每公斤7元 | × | × | ||||
每公斤9元 | × |
四、正交表测试
强度s=2的时候也叫结对测试
1.基本概念
1.因素数:变量个数
2.水平数:变量的取值个数,个数是等价类划分出来的
3.记录数:最后生成的正交表的记录数,一条(行)记录也就是一次实验。
4.强度(s):对每个因素的水平数进行从小到大的排列,那么强度为n的正交表组合记录数等于最后的n个水平数的乘积。
设有5因子,每个因子的水平数分别2,2,2,3,3,不同强度S的生成正交表分别为:
s=2时,结果是 L9(2×2×2×3×3),记录数为最后两个变量的水平数乘积3x3=9
s=3时,结果是 L18(2×2×2×3×3),记录数为最后三个变量的水平数乘积2x3x3=18
2.案例
下面介绍一个混合正交表的例子:
变量个数:4个 分别为:A、B、C、D 强度(s)=2
A 有3个值(A1、A2、A3)
B 有4个值(B1、B2、B3、B4)
C 有4个值(C1、C2、C3、C4)
D 有4个值(D1、D2、D3、D4)
用正交表分析
因素数(变量个数):4个
水平数:其中1个变量的水平数为3,3个变量的水平数为4。
记录数:因为强度(s)=2,所以3,4,4,4里面,4×4=16,有16个记录数。
Runs(记录号) | A | B | C | D |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 |
3 | 3 | 3 | 3 | 3 |
4 | - | 4 | 4 | 4 |
5 | 1 | 2 | 3 | 4 |
6 | 2 | 1 | 4 | 3 |
7 | 3 | 4 | 1 | 2 |
8 | - | 3 | 2 | 1 |
9 | 1 | 3 | 4 | 2 |
10 | 2 | 4 | 3 | 1 |
11 | 3 | 1 | 2 | 4 |
12 | - | 2 | 1 | 3 |
13 | 1 | 4 | 2 | 3 |
14 | 2 | 3 | 1 | 4 |
15 | 3 | 2 | 4 | 1 |
16 | - | 1 | 3 | 2 |
因为因素A有剩余的水平数,所以从上往下循环输入1,2,3,然后分别带入水平数,之后如下
Runs(记录号) | A | B | C | D |
---|---|---|---|---|
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A1 | B4 | C4 | D4 |
5 | A1 | B 2 | C3 | D4 |
6 | A2 | B1 | C4 | D3 |
7 | A3 | B4 | C1 | D2 |
8 | A2 | B3 | C2 | D1 |
9 | A1 | B3 | C4 | D2 |
10 | A2 | B4 | C3 | D1 |
11 | A3 | B1 | C2 | D4 |
12 | A3 | B2 | C1 | D3 |
13 | A1 | B4 | C2 | D3 |
14 | A2 | B3 | C1 | D4 |
15 | A3 | B2 | C4 | D1 |
16 | A1 | B1 | C3 | D2 |
然后就可以根据正交表带入值设计测试用例了