测试场景
在股票交易中,我们作为投资者,首先需要开一个证券账户,证券账户有很多种类,比方说普通资产账户、信用账户、期权账户等等,每个账户都会有状态,正常交易,冻结,又或者是销户。证券账户开完之后,也不是所有业务都能做,比方说科创板,创业板是有门槛的。到了交易的环节,可交易的种类也有很多种,债券,期货,股票等等。
作为一个测试人员,面对,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,一个根据正交表自动生成测试用例场景的小工具