關(guān)鍵詞:回歸測試;覆蓋準(zhǔn)則;鯨魚優(yōu)化算法;擴(kuò)展有限狀態(tài)機(jī)
中圖分類號:TP311.5 文獻(xiàn)標(biāo)志碼:A
0 引言(Introduction)
擴(kuò)展有限狀態(tài)機(jī)[1](EFSM)在刻畫軟件行為和結(jié)構(gòu)方面展現(xiàn)出顯著優(yōu)勢,因此近年來基于EFSM的測試用例優(yōu)先排序技術(shù)逐漸成為主流。大多數(shù)測試用例優(yōu)先排序技術(shù)[2]都基于覆蓋率相關(guān)信息對測試用例進(jìn)行排序。然而,過去的研究大多使用單一覆蓋準(zhǔn)則進(jìn)行排序,少數(shù)研究雖然使用多種覆蓋準(zhǔn)則,但是也都是依靠人工經(jīng)驗選擇所使用的覆蓋準(zhǔn)則。這種方式可能受到測試人員經(jīng)驗和知識的限制,無法涵蓋所有可能的測試場景和覆蓋需求,導(dǎo)致選擇的覆蓋準(zhǔn)則可能并不全面或不足以應(yīng)對所有情況。同時,測試需求和環(huán)境可能會隨著時間的推移而發(fā)生變化,而人工選擇的覆蓋準(zhǔn)則可能難以及時更新和調(diào)整以適應(yīng)新的需求和變化,導(dǎo)致測試方法存在局限性和過時性。因此,急需尋找一種高效的方法解決此問題。
1 相關(guān)理論(Related theory)
1.1 擴(kuò)展有限狀態(tài)機(jī)模型
擴(kuò)展有限狀態(tài)機(jī)模型是由一個六元組M =(S,S1,V,I,O,T)組成的,其中S是狀態(tài)集合,S1∈S是模型的初始狀態(tài),狀態(tài)是描述系統(tǒng)在不同時間點的運行狀態(tài)。每個狀態(tài)都代表系統(tǒng)在特定條件下的一種行為。V是模型變量集合,I和O分別是輸入集合、輸出集合。T是變遷的有限集合,變遷定義了狀態(tài)之間的切換規(guī)則,即系統(tǒng)從一個狀態(tài)轉(zhuǎn)移到另一個狀態(tài)的條件和動作。
1.4 突變分析
針對實驗使用的每個擴(kuò)展有限狀態(tài)機(jī),研究人員使用突變測試技術(shù)[5]生成相應(yīng)的故障版本,該技術(shù)通過向正在測試的EFSM注入故障生成變異體。盡管真實的有故障EFSM 可能包含多個故障,但是本文每個變異體中只植入一個故障。這樣做是為了便于研究TCP(測試用例優(yōu)先排序)方法對每個真實故障的檢測能力,從而避免掩蓋效應(yīng)。
具體而言,本文采用突變操作符模擬真實的故障。在故障注入過程中,使用了3種常見類型的突變,即值突變、決策突變和語句突變。值突變涉及修改參數(shù)或常量的值,包括添加或減去值等操作。決策突變涉及更改轉(zhuǎn)換中的條件表達(dá)式,例如將“gt;”替換為“l(fā)t;”。語句突變涉及修改轉(zhuǎn)換中包含的語句,包括添加或刪除語句部分內(nèi)容,重新排列語句的相對位置等。這些突變涵蓋了經(jīng)典的突變操作符:條件運算符替換、關(guān)系運算符替換、表達(dá)式值替換、字面值替換、單語句刪除和算術(shù)運算符替換。此外,應(yīng)用了單傳遞故障操作符,即將轉(zhuǎn)換的尾狀態(tài)修改為不同狀態(tài),用于生成變異體。這些突變操作是由研究人員先前開發(fā)的EFSM模型解析工具自動生成的[6]。對于正在測試的EFSM的每個變異體,需要執(zhí)行該模型的測試套件以確定測試是否通過。具體而言,將正在測試的模型視為正確版本。測試用例在其相應(yīng)的變異體上執(zhí)行,并通過比較它們的輸出的差異得出最終的測試判定。
3 實驗和結(jié)果(Experiment and result)
3.1 實驗?zāi)繕?biāo)模型
我們設(shè)計了一系列的實驗,將提出的方法應(yīng)用于實際的EFSM模型,用來檢驗CWTCP方法的故障檢錯率。CWTCP方法利用Python語言實現(xiàn),實驗運行的平臺是Windows10的64位操作系統(tǒng)。為了使實驗結(jié)果更具一般性,本文選擇了5個典型的EFSM 模型,分別是Monitor、INRES、Class Ⅱ、OLSR、SCP。以上目標(biāo)模型收集自目前已有的研究,表1列出了5個目標(biāo)模型對應(yīng)的屬性,“狀態(tài)數(shù)”欄是指目標(biāo)模型存在的狀態(tài)數(shù)量,“變遷數(shù)”欄是指 EFSM 模型中遷移的數(shù)量,“測試用例數(shù)”欄是實驗使用的測試用例數(shù)量,“變異數(shù)”欄是實驗使用的變異體數(shù)量。
3.2 實驗研究問題
RQ1:基于覆蓋準(zhǔn)則的優(yōu)先排序相對于隨機(jī)排序在故障檢測率方面是否具有顯著優(yōu)勢? 這個問題可以確定在EFSM 模型中引入基于覆蓋準(zhǔn)則的優(yōu)先排序是否有效。
RQ2:CWTCP方法在故障檢測率方面是否具有顯著優(yōu)勢? 這個問題可以確定CWTCP方法是否有效。
3.3 實驗結(jié)果與分析
針對RQ1,以APFD值作為故障檢測能力的評價指標(biāo)設(shè)計了實驗1,其實驗結(jié)果如圖2所示。從圖2中可以直觀地觀察到,在每個EFSM 中基于覆蓋準(zhǔn)則的平均APFD值均大于隨機(jī)排序?;诟采w準(zhǔn)則的優(yōu)先排序的最小APFD值為0.647,遠(yuǎn)高于隨機(jī)排序(0.386)?;诟采w準(zhǔn)則的平均APFD值為0.892,比隨機(jī)排序高16.4%。在M1中,SC的平均值和最大值表現(xiàn)最好,TC和TPC的表現(xiàn)相似;在M2中,TC的平均值和標(biāo)準(zhǔn)差表現(xiàn)更好;在M3和M4中,TC表現(xiàn)最好;在M5中,TC和TPC表現(xiàn)相似,這可能是因為模型變遷較少而導(dǎo)致的。
總體看來,TC的最小APFD值比OLP高13.4%,平均APFD值比SC高7.34%,標(biāo)準(zhǔn)差比TPC低9.4%??梢钥闯觯琓C在每個EFSM 中的性能最好,TPC次之,而LFP和OLP具有相似的性能。這些對比結(jié)果表明,相較于隨機(jī)排序,基于覆蓋準(zhǔn)則的優(yōu)先排序在APFD值方面有了顯著的提升。造成這一差異的原因可能是基于覆蓋準(zhǔn)則的優(yōu)先排序能充分利用了來自EFSM的信息。因此,將基于覆蓋準(zhǔn)則的優(yōu)先排序技術(shù)引入MBTCP是可行的。
針對RQ2,以APFD值作為故障檢測能力的評價指標(biāo)設(shè)計了實驗2,實驗2中,鯨魚優(yōu)化算法的相關(guān)參數(shù)均設(shè)置為與原論文(The Whale Optimization Algorithm)相同,Random為隨機(jī)選擇覆蓋準(zhǔn)則進(jìn)行多輪排序,其實驗結(jié)果如圖3所示。從圖3中可以直觀地觀察到,CWTCP方法相比于隨機(jī)選擇覆蓋準(zhǔn)則,可以有效地提高故障檢錯率。CWTCP的最小APFD值為0.797,高于隨機(jī)選擇(0.722),平均APFD值為0.918,比隨機(jī)排序高1.8%。在M1中,CWTCP的最大APFD值為0.951,平均APFD 值為0.904,比Random 高2.2%,平均值比Random高2.6%;在M2和M4中,CWTCP的各項指標(biāo)都比隨機(jī)選擇高;在M5中,CWTCP與隨機(jī)選擇有相同的最大值。這些對比結(jié)果表明,相較于隨機(jī)選擇,CWTCP在APFD值方面取得了顯著的提升。與隨機(jī)選擇相比,這種差異的根源在于鯨魚優(yōu)化算法的有效性。該算法能夠有效地發(fā)現(xiàn)具有顯著差異的覆蓋準(zhǔn)則。因此,在多輪排序中采用不同的覆蓋準(zhǔn)則,可以更有效地提高故障檢測率。
4 結(jié)論(Conclusion)
本研究提出了一種基于EFSM 模型的測試用例優(yōu)先排序方法CWTCP,通過引入鯨魚優(yōu)化算法,該方法能夠有效挑選出差異性較大的覆蓋準(zhǔn)則序列,從而優(yōu)化測試用例的執(zhí)行順序,并顯著提高了故障檢測率。該方法的創(chuàng)新性在于將優(yōu)化算法與測試用例排序相結(jié)合,充分利用了EFSM模型的特性。實驗結(jié)果表明,CWTCP方法相對于傳統(tǒng)方法具有明顯的優(yōu)勢,為軟件測試過程的改進(jìn)提供了有力支持。未來的研究將重點關(guān)注更多的覆蓋準(zhǔn)則,并探索針對更大規(guī)模和更復(fù)雜EFSM的測試用例優(yōu)先排序策略,以進(jìn)一步提升故障檢測的準(zhǔn)確性和效率。
作者簡介:
何展翔(1998-),男,碩士生。研究領(lǐng)域:軟件測試。
舒挺(1979-),男,博士,副教授。研究領(lǐng)域:軟件測試,網(wǎng)絡(luò)協(xié)議測試。