軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例
軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例
正交實(shí)驗(yàn)法的由來(lái)
一、正交表的由來(lái)
拉丁方名稱(chēng)的由來(lái)
古希臘是一個(gè)多民族的國(guó)家,國(guó)王在檢閱臣民時(shí)要求每個(gè)方隊(duì)中每行有一個(gè)民族代表,每列也要有一個(gè)民族的代表。
數(shù)學(xué)家在設(shè)計(jì)方陣時(shí),以每一個(gè)拉丁字母表示一個(gè)民族,所以設(shè)計(jì)的方陣稱(chēng)為拉丁方。
什么是n階拉丁方?
用n個(gè)不同的拉丁字母排成一個(gè)n階方陣(n<26 ),如果每行的n個(gè)字母均不相同,每列的n個(gè)字母均不相同,則稱(chēng)這種方陣為n*n拉丁方或n階拉丁方。每個(gè)字母在任一行、任一列中只出現(xiàn)一次。
什么是正交拉丁方?
設(shè)有兩個(gè)n階的拉丁方,如果將它們疊合在一起,恰好出現(xiàn)n2個(gè)不同的有序數(shù)對(duì),則稱(chēng)為這兩個(gè)拉丁方為互相正交的拉丁方,簡(jiǎn)稱(chēng)正交拉丁方。
例如:3階拉丁方
用數(shù)字替代拉丁字母:
二、正交實(shí)驗(yàn)法
正交試驗(yàn)設(shè)計(jì)(Orthogonal experimental design)是研究多因素多水平的又一種設(shè)計(jì)方法,它是根據(jù)正交性從全面試驗(yàn)中挑選出部分有代表性的點(diǎn)進(jìn)行試驗(yàn),這些有代表性的點(diǎn)具備了“均勻分散,齊整可比”的特點(diǎn),正交試驗(yàn)設(shè)計(jì)是分式析因設(shè)計(jì)的主要方法。是一種高效率、快速、經(jīng)濟(jì)的實(shí)驗(yàn)設(shè)計(jì)方法。
日本著名的統(tǒng)計(jì)學(xué)家田口玄一將正交試驗(yàn)選擇的水平組合列成表格,稱(chēng)為正交表。例如作一個(gè)三因素三水平的實(shí)驗(yàn),按全面實(shí)驗(yàn)要求,須進(jìn)行33=27種組 合的實(shí)驗(yàn),且尚未考慮每一組合的重復(fù)數(shù)。若按L9(33) 正交表按排實(shí)驗(yàn),只需作9次,按L18(37) 正交表進(jìn)行18次實(shí)驗(yàn),顯然大大減少了工作量。因而正交實(shí)驗(yàn)設(shè)計(jì)在很多領(lǐng)域的研究中已經(jīng)得到廣泛應(yīng)用。
利用因果圖來(lái)設(shè)計(jì)測(cè)試用例時(shí), 作為輸入條件的原因與輸出結(jié)果之間的因果關(guān)系,有時(shí)很難從軟件需求規(guī)格說(shuō)明中得到。往往因果關(guān)系非常龐大,以至于據(jù)此因果圖而得到的測(cè)試用例數(shù)目多的驚人,給軟件測(cè)試帶來(lái)沉重的負(fù)擔(dān),為了有效地,合理地減少測(cè)試的工時(shí)與費(fèi)用,可利用正交實(shí)驗(yàn)設(shè)計(jì)方法進(jìn)行測(cè)試用例的設(shè)計(jì)。
正交實(shí)驗(yàn)設(shè)計(jì)方法:依據(jù)Galois理論,從大量的(實(shí)驗(yàn))數(shù)據(jù)(測(cè)試?yán)┲刑暨x適量的、有代表性的點(diǎn)(例),從而合理地安排實(shí)驗(yàn)(測(cè)試)的一種科學(xué)實(shí)驗(yàn)設(shè)計(jì)方法。類(lèi)似的方法有:聚類(lèi)分析方法、因子方法方法等。
三、利用正交實(shí)驗(yàn)設(shè)計(jì)測(cè)試用例的步驟:
(1)提取功能說(shuō)明,構(gòu)造因子--狀態(tài)表
把影響實(shí)驗(yàn)指標(biāo)的條件稱(chēng)為因子,而影響實(shí)驗(yàn)因子的條件叫因子的狀態(tài)。
利用正交實(shí)驗(yàn)設(shè)計(jì)方法來(lái)設(shè)計(jì)測(cè)試用例時(shí),首先要根據(jù)被測(cè)試軟件的規(guī)格說(shuō)明書(shū)找出影響其功能實(shí)現(xiàn)的操作對(duì)象和外部因素,把他們當(dāng)作因子;而把各個(gè)因子 的取值當(dāng)作狀態(tài)。對(duì)軟件需求規(guī)格說(shuō)明中的功能要求進(jìn)行劃分,把整體的、概要性的功能要求進(jìn)行層層分解與展開(kāi),分解成具體的有相對(duì)獨(dú)立性的、基本的功能要 求。這樣就可以把被測(cè)試軟件中所有的因子都確定下來(lái),并為確定每個(gè)因子的權(quán)值提供參考的依據(jù)。確定因子與狀態(tài)是設(shè)計(jì)測(cè)試用例的關(guān)鍵。因此要求盡可能全面 的、正確的確定取值,以確保測(cè)試用例的設(shè)計(jì)作到完整與有效。
(2)加權(quán)篩選,生成因素分析表
對(duì)因子與狀態(tài)的選擇可按其重要程度分別加權(quán)??筛鶕?jù)各個(gè)因子及狀態(tài)的作用大小、出現(xiàn)頻率的大小以及測(cè)試的需要,確定權(quán)值的大小。
(3)利用正交表構(gòu)造測(cè)試數(shù)據(jù)集
利用正交實(shí)驗(yàn)設(shè)計(jì)方法設(shè)計(jì)測(cè)試用例,比使用等價(jià)類(lèi)劃分、邊界值分析、因果圖等方法有以下優(yōu)點(diǎn):節(jié)省測(cè)試工作工時(shí);可控制生成的測(cè)試用例數(shù)量;測(cè)試用例具有一定的覆蓋率。
在使用正交實(shí)驗(yàn)法時(shí),要考慮到被測(cè)系統(tǒng)中要準(zhǔn)備測(cè)試的功能點(diǎn),而這些功能點(diǎn)就是要獲取的因子或因素,但每個(gè)功能點(diǎn)要輸入的數(shù)據(jù)按等價(jià)類(lèi)劃分有多個(gè),也就是每個(gè)因素的輸入條件,即狀態(tài)或水平值。
四、正交表的構(gòu)成
行數(shù)(Runs):正交表中的行的個(gè)數(shù),即試驗(yàn)的次數(shù),也是我們通過(guò)正交實(shí)驗(yàn)法設(shè)計(jì)的測(cè)試用例的個(gè)數(shù)。
因素?cái)?shù)(Factors) :正交表中列的個(gè)數(shù),即我們要測(cè)試的功能點(diǎn)。
水平數(shù)(Levels):任何單個(gè)因素能夠取得的值的最大個(gè)數(shù)。正交表中的包含的值為從0到數(shù)“水平數(shù)-1”或從1到“水平數(shù)” 。即要測(cè)試功能點(diǎn)的輸入條件。
正交表的形式:
L行數(shù)(水平數(shù)因素?cái)?shù))
如:L8(27)
五、正交表的正交性
整齊可比性
在同一張正交表中,每個(gè)因素的每個(gè)水平出現(xiàn)的次數(shù)是完全相同的。由于在試驗(yàn)中每個(gè)因素的每個(gè)水平與其它因素的每個(gè)水平參與試驗(yàn)的機(jī)率是完全相同的,這就保證在各個(gè)水平中最大程度的排除了其它因素水平的干擾。因而,能最有效地進(jìn)行比較和作出展望,容易找到好的試驗(yàn)條件。
均衡分散性
在同一張正交表中,任意兩列(兩個(gè)因素)的水平搭配(橫向形成的數(shù)字對(duì))是完全相同的。這樣就保證了試驗(yàn)條件均衡地分散在因素水平的完全組合之中,,因而具有很強(qiáng)的代表性,容易得到好的試驗(yàn)條件。
用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例
以上介紹了正交實(shí)驗(yàn)法的由來(lái)。怎么用正交實(shí)驗(yàn)法進(jìn)行用例的設(shè)計(jì)呢?
一、用正交表設(shè)計(jì)測(cè)試用例的步驟
(1) 有哪些因素(變量)
(2) 每個(gè)因素有哪幾個(gè)水平(變量的取值)
(3) 選擇一個(gè)合適的正交表
(4) 把變量的值映射到表中
(5) 把每一行的各因素水平的組合做為一個(gè)測(cè)試用例
(6) 加上你認(rèn)為可疑且沒(méi)有在表中出現(xiàn)的組合
二、如何選擇正交表
- 考慮因素(變量)的個(gè)數(shù)
- 考慮因素水平(變量的取值)的個(gè)數(shù)
- 考慮正交表的行數(shù)
- 取行數(shù)最少的一個(gè)
三、設(shè)計(jì)測(cè)試用例時(shí)的三種情況
(1)因素?cái)?shù)(變量)、水平數(shù)(變量值)相符
(2)因素?cái)?shù)不相同
(3)水平數(shù)不相同
四、我們來(lái)看看第一種情況:
(1)因素?cái)?shù)與水平數(shù)剛好符合正交表
我們舉個(gè)例子:
這是個(gè)人信息查詢(xún)系統(tǒng)中的一個(gè)窗口。我們可以看到要測(cè)試的控件有3個(gè):姓名、身份證號(hào)碼、手機(jī)號(hào)碼,也就是要考慮的因素有三個(gè);而每個(gè)因素里的狀態(tài)有兩個(gè):填與不填。
選擇正交表時(shí)分析一下:
1、表中的因素?cái)?shù)>=3;
2、表中至少有3個(gè)因素?cái)?shù)的水平數(shù)>=2;
3、行數(shù)取最少的一個(gè)。
從正交表公式中開(kāi)始查找,結(jié)果為:
L4(23)
變量映射:
測(cè)試用例如下:
1:填寫(xiě)姓名、填寫(xiě)身份證號(hào)、填寫(xiě)手機(jī)號(hào)
2:填寫(xiě)姓名、不填身份證號(hào)、不填手機(jī)號(hào)
3:不填姓名、填寫(xiě)身份證號(hào)、不填手機(jī)號(hào)
4:不填姓名、不填身份證號(hào)、填寫(xiě)手機(jī)號(hào)
增補(bǔ)測(cè)試用例
5:不填姓名、不填身份證號(hào)、不填手機(jī)號(hào)
從測(cè)試用例可以看出:如果按每個(gè)因素兩個(gè)水平數(shù)來(lái)考慮的話,需要8個(gè)測(cè)試用例,而通過(guò)正交實(shí)驗(yàn)法進(jìn)行的測(cè)試用例只有5個(gè),大大減少了測(cè)試用例數(shù)。用最小的測(cè)試用例集合去獲取最大的測(cè)試覆蓋率。
(2)因素?cái)?shù)不相同
如果因素?cái)?shù)不同的話,可以采用包含的方法,在正交表公式中找到包含該情況的公式,如果有N個(gè)符合條件的公式,那么選取行數(shù)最少的公式。
(3)水平數(shù)不相同
采用包含和組合的方法選取合適的正交表公式。
正交實(shí)驗(yàn)法的又一個(gè)例子
上面就正交實(shí)驗(yàn)法進(jìn)行了講解,現(xiàn)在再拿PowerPoint軟件打印功能作為例子,希望能為大家更好地理解給方法的具體應(yīng)用
假設(shè)功能描述如下:
- 打印范圍分:全部、當(dāng)前幻燈片、給定范圍 共三種情況;
- 打印內(nèi)容分:幻燈片、講義、備注頁(yè)、大綱視圖 共四種方式;
- 打印顏色/灰度分: 顏色、灰度、黑白 共三種設(shè)置;
- 打印效果分:幻燈片加框和幻燈片不加框兩種方式。
因素狀態(tài)表:
MILY: 宋體">狀態(tài)/因素 | A打印范圍 | B打印內(nèi)容 | C打印顏色/灰度 | D打印效果 |
0 | 全部 | 幻燈片 | 顏色 | 幻燈片加框 |
1 | 當(dāng)前幻燈片 | 講義 | 灰度 | 幻燈片不加框 |
2 | 給定范圍 | 備注頁(yè) | 黑白 |
|
3 |
| 大綱視圖 |
|
|
我們先將中文字轉(zhuǎn)換成字母,便于設(shè)計(jì)。得到:
因素狀態(tài)表:
狀態(tài)/因素 | A | B | C | D |
0 | A1 | B1 | C1 | D1 |
1 | A2 | B2 | C2 | D2 |
2 | A3 | B3 | C3 |
|
3 |
| B4 |
|
|
我們分析一下:
被測(cè)項(xiàng)目中一共有四個(gè)被測(cè)對(duì)象,每個(gè)被測(cè)對(duì)象的狀態(tài)都不一樣。
選擇正交表:
1、表中的因素?cái)?shù)>=4
2、表中至少有4個(gè)因素的水平數(shù)>=2
3、行數(shù)取最少的一個(gè)
最后選中正交表公式:
L16(45)
正交矩陣為:
1 | 2 | 3 | 4 | 5 | |
1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 1 | 1 | 1 |
3 | 0 | 2 | 2 | 2 | 2 |
4 | 0 | 3 | 3 | 3 | 3 |
5 | 1 | 0 | 1 | 2 | 3 |
6 | 1 | 1 | 0 | 3 | 2 |
7 | 1 | 2 | 3 | 0 | 1 |
8 | 1 | 3 | 2 | 1 | 0 |
9 | 2 | 0 | 2 | 3 | 1 |
10 | 2 | 1 | 3 | 2 | 0 |
11 | 2 | 2 | 0 | 1 | 3 |
12 | 2 | 3 | 1 | 0 | 2 |
13 | 3 | 0 | 3 | 1 | 2 |
14 | 3 | 1 | 2 | 0 | 3 |
15 | 3 | 2 | 1 | 3 | 0 |
16 | 3 | 3 | 0 | 2 | 1 |
用字母替代正交矩陣:
1 | 2 | 3 | 4 | 5 | |
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 | C3 | 3 | 1 |
10 | A3 | B2 | 3 | 2 | 0 |
11 | A3 | B3 | C1 | D2 | 3 |
12 | A3 | B4 | C2 | 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 |
posted @ 2011-10-14 11:33 順其自然EVO| 編輯 收藏