摘要:文章首先介紹了軟件組合試驗面臨的測試案例難于篩選的問題,然后闡述正交實(shí)驗的理論,并結(jié)合具體軟件測試案例通過使用正交表解決了案例選擇的問題,同時正交實(shí)驗的實(shí)踐要點(diǎn)和局限性也被介紹。綜上所述,正交試驗設(shè)計法適用于多因素低水平因子的組合測試場景,通過較少的測試用例獲得良好的測試覆蓋率和測試質(zhì)量,在實(shí)際軟件測試工作中能有效地提高測試效率。
關(guān)鍵詞:組合測試;因素;水平;正交表;測試案例
中圖分類號:TP311 ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)05-0068-02
1 組合測試面臨的問題
復(fù)雜的軟件測試系統(tǒng)往往具有多個變量,每個變量可以有多個取值。某些嚴(yán)重錯誤的出現(xiàn)會依賴特定的變量的特定取值組合,所以有必要設(shè)計多個測試案例來覆蓋各個變量的不同取值,這被稱為軟件測試中的組合測試。
在軟件測試的實(shí)際實(shí)施中,留給測試階段時間是非常有限的。如果遍歷所有變量的所有取值組合顯然費(fèi)時耗力,而且許多案例很可能多余。但是,如果為了減少測試案例的數(shù)量而對測試案例進(jìn)行隨機(jī)選擇,測試人員又很可能會漏測很多特定參數(shù)組合的測試案例,導(dǎo)致bug沒有被發(fā)現(xiàn)。因此,軟件測試人員需要找到合適的方式來選擇測試案例,保證既覆蓋必要的參數(shù)值組合,又避免類似的重復(fù)的參數(shù)組合[1]。
2 正交試驗設(shè)計的理論基礎(chǔ)
正交試驗設(shè)計法是研究多因素多水平系統(tǒng)的試驗設(shè)計方法。它依據(jù)正交理論,不再進(jìn)行全面試驗,而只是選擇其中一些有典型的數(shù)值點(diǎn)來試驗。在前面所述的軟件測試系統(tǒng)中,多參數(shù)且每個參數(shù)多取值的特點(diǎn)正好符合正交實(shí)驗設(shè)計的實(shí)驗前提,所以可以嘗試使用正交實(shí)驗設(shè)計來減少組合測試中的測試案例的數(shù)量,以達(dá)到用最少的測試用例提供最大的參數(shù)值覆蓋的目的。
正交試驗設(shè)計的概念最好用一個例子來說明。假設(shè)有三個參數(shù)(A、B和C),每個參數(shù)有三個可能值(1、2、3)。測試三個參數(shù)的所有可能組合需要27個(3 ^ 3)測試用例。這么多測試用例真的有必要嗎?顯然只有當(dāng)故障依賴于所有三個參數(shù)的某種特定組合時才有必要(例如,只有當(dāng)A=1,B=1,C=1的情況下才會發(fā)生故障)。然而,通過對大量故障做事后分析發(fā)現(xiàn):絕大多數(shù)故障的出現(xiàn)只會取決于兩個參數(shù)的取值組合。比如某個故障可能發(fā)生在三個測試用例中的每一個:(A=1,B=1,C=1);(A=1,B=1,C=2)或(A=1,B=1,C=3)。在這個情況下,顯然C無論取何值都不影響故障的捕捉,所以選擇三個測試中的任意一個即可[2-3]。也就是說每個變量的每個值與另一個變量的每個值各碰一次就可以了,這與正交性正好吻合。
在具體實(shí)驗設(shè)計中,我們主要依靠數(shù)學(xué)預(yù)先計算出來的正交表為基本工具。 正交表是利用組合理論知識的一種標(biāo)準(zhǔn)化形式。以正交表L8(27)為例:“L”象征正交表;其下的角標(biāo)數(shù)字“8”表示有 8行,代表要進(jìn)行8次實(shí)驗;括號內(nèi)的指數(shù)“7”表示有7列,表示系統(tǒng)中實(shí)驗的因素最多為7 個;數(shù)“2”表示因素最多允許擁有的水平數(shù),有兩種水平1與2。可以看出,通過正交表安排的實(shí)驗方法整齊可比,均勻分散性。也就是說:每一列中,任意兩列中數(shù)字的排列方式均衡,不同的數(shù)字(水平)出現(xiàn)的次數(shù)相等[4]。
使用正交實(shí)驗設(shè)計運(yùn)用于軟件組合測試,正交表中的行數(shù)就是測試案例的數(shù)目。為方便起見,將影響測試結(jié)果的變量稱為因素。而某個因素所能取值的數(shù)量稱為該因素的水平。 因素可以表示為正交表中的列數(shù),正交表寫為LRuns(水平因素)。正交表可以分為等水平正交表和混合水平正交表。前者系統(tǒng)中每個因素的水平數(shù)相同,如L8(27);后者系統(tǒng)中每個因素的水平數(shù)不相同,例如L18(21×37)。
根據(jù)法整齊可比,均勻分散性的正交性,對于某個確定的正交表中,各個因素的每一個水平的出現(xiàn)次數(shù)相同的。例如,正交表L8(27) 中的七個因素都擁有兩個水平數(shù),而正交表有8行,可見各個因素的每水平各出現(xiàn)4次。
假設(shè)某測試系統(tǒng)具有七個因素、每個因素有兩個水平。如果做全覆蓋,組合測試案例數(shù)可以大到2 ^ 7=128,但如果使用正交表L8(27),則可以將測試案例數(shù)數(shù)減少到8,也就是原來的1/16。顯然,正交實(shí)驗法在保證測試質(zhì)量的同時又減少需要執(zhí)行的案例,從而大大提高測試效率。
3 正交實(shí)驗設(shè)計法在軟件測試中的運(yùn)用
下面以一個實(shí)例為例介紹了用正交表設(shè)計對多因素系統(tǒng)進(jìn)行軟件測試用例設(shè)計的步驟:
3.1 提取測試系統(tǒng)中因素的數(shù)量和每個因素的水平數(shù)
假定某測試系統(tǒng)有7個獨(dú)立變量(因素)。其中有兩個因素的水平數(shù)為2,而其他五個因素的水平數(shù)為3,表示為:
A: A1,A2; B: B1, B2; C: C1, C2, C3; D: D1, D2, D3; E: E1, E2, E3; F: F1, F2, F3; G: G1, G2, G3
3.2 選擇合適的正交表
選擇一個合適的正交表,它可以覆蓋每個因素的所有水平。選擇的正交表應(yīng)滿足以下條件:
從因素的角度來選擇:表中因素的數(shù)目>=7;
從水平的角度來選擇:表中至少有兩個因素的水平數(shù)>=2,至少有五個因素的水平數(shù)>=3。
通過網(wǎng)站(比如約克大學(xué)數(shù)學(xué)系網(wǎng)站)查詢可知, 正交表L18(21×37) 和 L27(313) 都可以符合上面的要求。由于正交表的行數(shù)對應(yīng)測試案例的個數(shù),從較少測試案例的角度,應(yīng)該選擇行數(shù)較少的表,因此正交表L18(21×37)被選中。
3.3 將軟件測試系統(tǒng)映射到正交表
將測試系統(tǒng)中的因素映射到正交表的列,水平映射到正交表中的行。由于實(shí)際的測試系統(tǒng)具有的因素的數(shù)目和各個因素的水平數(shù)千差萬別,預(yù)先計算好的正交表不一定能完全匹配測試系統(tǒng),所以需要做一些折中。具體到本例,由于系統(tǒng)只有7個因素,但L18(21*37)有8個因素,所以正交表的第七列需要被忽略。
正交表中兩個水平數(shù)的因素只有1個(21),所以首先從正交表映射到組合測試案例表的是水平數(shù)為2的因素A。因此盡管因素 B也只有兩個水平,但是也被映射為三個水平的因素,也就是組合測試案例表中第二列,第二列的3的值可以均勻地映射為B1或B2。而因素C\D\E\F\G 水平數(shù)都是3,顯然就被映射到第三\四\五\六\八列。組合測試案例表的第七列被忽略。
3.4 將表中每個行中各因素組合作為測試用例
通過前面的步驟,從正交表映射過來的組合測試案例表已經(jīng)形成。正交表的因素和水平映射到組合測試案例表中就是各個變量以及其不同的值。該測試案例表由于來源于了正交表,保證了測試系統(tǒng)中任意一個獨(dú)立變量的每個值都和與其他每個獨(dú)立變量的每個值都組合一次。這樣就從理論上保證了組合測試中案例選擇的完備性。
3.5 添加可疑且不出現(xiàn)在表格中的組合
軟件測試是理論和經(jīng)驗結(jié)合的藝術(shù)。正交表形成的組合測試集盡管非常高效,但是它的理論前提絕大多數(shù)故障的出現(xiàn)只會取決于兩個參數(shù)的取值組合。如果測試人員懷疑個別三個及以上參數(shù)的取值組合有導(dǎo)致bug的可能,可以人為地添加上去,但注意這樣的測試案例數(shù)量一般不要超過原來案例的10%。
4 正交實(shí)驗設(shè)計法的局限
研究發(fā)現(xiàn),使用正交實(shí)驗法后組合測試的案例數(shù)為 rq2,其中r為自然數(shù),q為系統(tǒng)的最大水平數(shù)。顯然,當(dāng)系統(tǒng)因素較多,但是每個因素的水平數(shù)較小時,也就是系統(tǒng)中因素的水平比較均勻時,正交實(shí)驗法能大大降低正交表的行數(shù)。但是當(dāng)系統(tǒng)中某一個或幾個因素水平數(shù)q較大時,正交表行數(shù)會大大增加。所以該方法對擁有高水平因素的系統(tǒng)不適用[5]。
由此可知,正交實(shí)驗設(shè)計法運(yùn)用在軟件測試中組合測試?yán)铮钸m合的情況是多個變量但是每個變量的取值較少的這種“均勻可比”的情況,一旦某個變量的取值數(shù)目遠(yuǎn)遠(yuǎn)大于其他變量的取值,系統(tǒng)變量將變得不再均勻,從而軟件測試案例的數(shù)目也會大大增加。
雖然該方法存在著一定的局限,但是實(shí)際情況中,大部分系統(tǒng)的變量取值都比較均勻,所以該方法對大部分測試系統(tǒng)而言能有效地降低組合測試的測試案例數(shù)量,從而能大大降低軟件測試的時間,提高軟件迭代的效率,具有較強(qiáng)的實(shí)用性。
參考文獻(xiàn):
[1] 梅耶.軟件測試的藝術(shù)[M]. 3版.張曉明,黃琳,譯.北京:機(jī)械工業(yè)出版社,2013.
[2] 斛嘉乙,符永蔚,樊映川.軟件測試技術(shù)指南[M].北京:機(jī)械工業(yè)出版社,2019.
[3] 朱少民.全程軟件測試[M].3版.北京:人民郵電出版社,2019.
[4] 方開泰,馬長興.正交與均勻試驗設(shè)計[M].北京:科學(xué)出版社,2001.
[5] 郭興家,熊英.實(shí)驗數(shù)據(jù)處理與統(tǒng)計[M].北京:化學(xué)工業(yè)出版社,2019.
【通聯(lián)編輯:梁書】
收稿日期:2021-08-27
作者簡介:任洛漪(1976—),女,湖北武漢人,講師,碩士,研究方向為軟件測試,算法優(yōu)化。