测试用例设计方法小结-正交表

测试场景

在股票交易中,我们作为投资者,首先需要开一个证券账户,证券账户有很多种类,比方说普通资产账户、信用账户、期权账户等等,每个账户都会有状态,正常交易,冻结,又或者是销户。证券账户开完之后,也不是所有业务都能做,比方说科创板,创业板是有门槛的。到了交易的环节,可交易的种类也有很多种,债券,期货,股票等等。
作为一个测试人员,面对,5个限制条件,每个限制条件3种情况,测试用例数就可能是33333=243条用例,现实情况可能限制条件更多,那在这种情况下,该如何编写测试用例,用最少的用例数,尽可能的实现100%覆盖呢,这里就可以用到正交表

正交表

1 2 3
1 1 1 1
2 1 2 2
3 2 1 2
4 2 2 1

从测试的角度来看一个常见的正交表,行代表测试用例数,列代表限制条件,表格中的1,2即是限制条件有多少种情况。从数学的角度来说,这个正交表就是一个包含4次实验,每次最多观察3个因素,每个因素2水平的正交表。
正交表具有以下两个特性:

每一列中,不同的数字出现的次数相等
任意两列中数字的排列方式齐全而且均衡。可以看上面的正交表,任意两列都有(1,1)(1,2)(2,1)(2,2)

这就体现出了正交表的“均匀分散性,整齐可比”,每个因素的每个水平与另一个因素各水平都只各碰一次。

正交表行数计算

试验次数(行数)=∑(每列水平数-1)+1
例:
3因素,2水平,行数=(2-1)3+1=4
5因素,4个2水平,1个3水平,行数=(2-1)
4+(3-1)*1+1=7

测试用例设计

思路

首先,思考有哪些变量,每个变量有哪些取值
然后,根据变量,和值的数量选择一个合适的正交表,将值映射到表中(前重后轻)
最后,把每一行作为一个测试用例,并观察所有用例,看是否有你认为重要但缺少的用例场景,补充上去,毕竟我们的目标仍然是覆盖尽可能全的测试场景。

水平数不同时的设计方法

其实现实中很多测试场景的变量取值数量大都不同,这里总结两种方法,合并拆分法,删减法

合并拆分法

举个栗子

状态/因素 A打印范围 B打印内容 C打印颜色 D打印效果
0 A1全部 B1幻灯片 C1颜色 D1幻灯片加框
1 A2当前幻灯片 B2讲义 C2灰度 D2幻灯片不加框
2 A3给定范围 B3备注页 C3黑白
3 B4大纲视图

然后我们可以将多出来的因素进行合并,就变成了4因素3水平

状态/因素 A打印范围 B打印内容 C打印颜色 D打印效果
0 A1全部 B1、B2幻灯片、讲义 C1颜色 D1幻灯片加框
1 A2当前幻灯片 B2讲义 C2灰度 D2幻灯片不加框
2 A3给定范围 B3备注页 C3黑白

然后再挑选合适的正交表

行数/因素 A B C D
1 A1 B1\B2 C1 D1
2 A1 B3 C3 D2
3 A1 B4 C2
4 A2 B1\B2 C3
5 A2 B3 C2 D1
6 A2 B4 C1 D2
7 A3 B1\B2 C2 D2
8 A3 B3 C1
9 A3 B4 C3 D1

把合并的状态展开,把实际状态数偏少的值用任意尸体数替换

行数/因素 A B C D
1 A1 B1 C1 D1
2 A1 B2 C1 D1
3 A1 B3 C3 D2
4 A1 B4 C2 D2
5 A2 B1 C3 D1
6 A2 B2 C3 D2
7 A2 B3 C2 D1
8 A2 B4 C1 D2
9 A3 B1 C2 D2
10 A3 B2 C2 D2
11 A3 B3 C1 D1
12 A3 B4 C3 D1

最后我们的测试用例就是12条

删减法

仍然用上面的案例

状态/因素 A打印范围 B打印内容 C打印颜色 D打印效果
0 A1全部 B1幻灯片 C1颜色 D1幻灯片加框
1 A2当前幻灯片 B2讲义 C2灰度 D2幻灯片不加框
2 A3给定范围 B3备注页 C3黑白
3 B4大纲视图

我们根据它的因素数水平数,选择一个行数最少的正交表,这个案例我们选择的是4因素5水平的正交表

行数/因素 A B C D E
1 A1 B1 C1 D1 0
2 A1 B2 C2 D2 1
3 A1 B3 C3 2 2
4 A1 B4 3 3 3
5 A2 B1 C2 2 3
6 A2 B2 C1 3 2
7 A2 B3 3 D1 1
8 A2 B4 C3 D2 0
9 A3 B1 C1 3 1
10 A3 B2 C2 2 0
11 A3 B3 3 D2 3
12 A3 B4 C3 D1 2
13 3 B1 3 D2 2
14 3 B2 C3 D1 3
15 3 B3 C2 3 0
16 3 B4 C1 2 1

然后删除多余的E列,将数字部分按水平值顺序填写补充完整

行数/因素 A B C D
1 A1 B1 C1 D1
2 A1 B2 C2 D2
3 A1 B3 C3 D1
4 A1 B4 C1 D2
5 A2 B1 C2 D1
6 A2 B2 C1 D2
7 A2 B3 C2 D1
8 A2 B4 C3 D2
9 A3 B1 C1 D1
10 A3 B2 C2 D2
11 A3 B3 C3 D2
12 A3 B4 C3 D1
13 A1 B1 C1 D2
14 A2 B2 C3 D1
15 A3 B3 C2 D1
16 A1 B4 C1 D2

删除由于四个因素里有三个的水平值小于等于3,所以第13行到16行的测试用例可以忽略

行数/因素 A B C D
1 A1 B1 C1 D1
2 A1 B2 C2 D2
3 A1 B3 C3 D1
4 A1 B4 C1 D2
5 A2 B1 C2 D1
6 A2 B2 C1 D2
7 A2 B3 C2 D1
8 A2 B4 C3 D2
9 A3 B1 C1 D1
10 A3 B2 C2 D2
11 A3 B3 C3 D2
12 A3 B4 C3 D1

工具

自行搜索allpairs,一个根据正交表自动生成测试用例场景的小工具

上一篇:风变编程干货整理-2021.6.5


下一篇:当我们谈论跳槽时在谈论什么