測試場景
在股票交易中,我們作為投資者,首先需要開一個證券賬戶,證券賬戶有很多種類,比方說普通資產賬戶、信用賬戶、期權賬戶等等,每個賬戶都會有狀態,正常交易,凍結,又或者是銷戶。證券賬戶開完之后,也不是所有業務都能做,比方說科創板,創業板是有門檻的。到了交易的環節,可交易的種類也有很多種,債券,期貨,股票等等。
作為一個測試人員,面對,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,一個根據正交表自動生成測試用例場景的小工具