◆李曉玉 羅 揚
?
蛻變測試概述
◆李曉玉 羅 揚通訊作者
(南華大學計算機學院 湖南 421001)
近年來,蛻變測試逐漸成為軟件工程領域的研究熱點并在各個領域取得了巨大的進展。本文歸納了蛻變測試技術的發展過程和主要研究方向,探討了蛻變測試研究中的不足之處,并給出了未來研究方向的展望。
軟件測試;蛻變測試;蛻變關系
蛻變測試是一種旨在解決oracle的技術,通過檢查多個執行結果之間的關系來測試程序的。早在1998年Chen等人提出,成功的測試用例同樣蘊含著有用的信息,在這些成功測試用例的基礎上構造新的測試用例來對程序進行更深入地檢測。而在成功測試用例和構建新的測試用例之間存在某些必然關系,我們稱之為蛻變關系。
定義[1]:一個程序P存在一個函數f,其中輸入分別為a1,a2,···,an,輸出分別為f(a1),f(a2),···,f(an)。若輸入a1,a2,···,an之間滿足某種關系r(a1,a2,···,an)時,f(a1),f(a2),···,f(an)同時滿足某種關系rf,即:
r(a1,a2,···,an)==>rf(f(a1),f(a2),···,f(an)),
那么我們稱(r,rf)為程序p的一個蛻變關系。
一般而言,蛻變測試的基本過程概括為:(1)原測試用例的生成。(2)構建蛻變關系。(3)執行蛻變測試用例。基于構造的蛻變關系計算衍生測試用例,執行原測試用例和衍生測試用例,并檢查其關系。該過程如圖1所示。

圖1 蛻變測試示意圖
1.1.1良好的蛻變關系的特征研究
蛻變關系的定義需要知道領域知識。陳等人通過對兩個案例進行研究,比較了基于問題領域的理論知識(黑盒)與基于程序結構的白盒知識的蛻變關系有效性,認為理論上較強的蛻變關系不一定具有較高的故障檢測能力;相反,在基于程序結構的白盒方法后,應該根據程序遵循的算法優先選擇良好的蛻變關系。而其他研究也強調了將問題領域的知識作為應用蛻變測試的要求。蛻變關系應使后續測試用例與原測試用例盡可能不同。他將程序執行的所有方面,包括遍歷的路徑、所運行語句的順序等定義為“執行之間的差異”,認為良好的蛻變關系選擇策略是選擇原測試用例和后續測試用例盡可能不同的執行的蛻變關系。從系統的特定部分導出來的蛻變關系比針對整個系統的更加有效。這一發現后來得到了謝等人的證實,他也認為針對被測程序特定部分的蛻變關系比系統層面的蛻變關系更容易構建,更能有效地發現故障。
1.1.2構建蛻變關系
在大多數研究中,蛻變關系是由測試人員以臨時方式手動確定的,沒有系統的方法來確定蛻變關系。蛻變關系是蛻變測試的核心部分,因為它們不僅用于測試用例生成,還提供了測試結果的驗證機制。
可根據一些已經確定的蛻變關系構建新的蛻變關系-蛻變關系組合。結果表明,一組蛻變關系的組成通常產生具有比原始蛻變關系更高的故障檢測有效性,同時此方法比傳統的蛻變測試具有更高的成本效益,因為它涉及的測試執行更少。
機器學習技術自動預測蛻變關系的方法,即通過提取函數控制流圖,從中提取特征,并使用機器學習技術構建預測模型來自動檢測程序函數存在的可能的蛻變關系。同樣,曾金偉等人[2]提出使用PRF神經網絡自動地預測函數可能滿足的多個蛻變關系的方法。
1.1.3原測試用例的生成
陳比較了特殊值和隨機值作為蛻變測試的原測試用例生成策略的有效性。隨機值能夠提供更大范圍的測試數據集,而特殊值必須手動構建。在相關研究中,一些作者觀察到與僅使用隨機值策略相比,兩者的結合能夠達到更快的故障檢測效果。
基于遺傳算法選擇源測試用例,該方法將遺傳算法集成到蛻變測試方法中,以檢測細微缺陷并優化測試用例集。周紅等人[3]針對遺傳算法具有較強的全局搜索能力,但局部搜索能力較弱的特點,將遺傳算法與粒子群算法結合起來形成新的混合算法(GA-PSO),并成功應用到軟件測試數據自動生成過程中。
1.1.4蛻變測試用例的執行
一些學者提出了一種迭代蛻變測試(IMT)方法。在IMT中,通過將每個蛻變關系的后續測試用例作為下一個蛻變關系的源測試用例,以鏈式的方式應用一系列蛻變關系。董等人[1]受到啟發,提出了一個新的迭代蛻變測試算法APCEMSI,即一種整合了迭代蛻變測試和程序路徑分析的新算法。
蛻變測試最初主要應用于數值型程序中,比如測試計算三角函數的程序,測試計算指數函數和行列式的程序等,隨著計算機技術的高度發展,蛻變測試技術也被廣泛地應用到各個領域,如Web服務和應用程序、機器學習、生物學系統等。
在2005年,面向服務的應用程序(SOA)的蛻變測試方法被首次提出,它依賴于蛻變服務封裝被測服務,使用單元測試階段的測試用例來生成集成測試階段的后續測試用例。在一組相關文獻中,用蛻變測試來檢測在線網絡搜索的應用程序,并開發出一種完全自動測試和驗證的工具來實現該方法并在流行的搜索引擎中檢測到故障。之后的相關工作中,又對此類網絡搜索引擎進行了大規模的實證研究,提出將蛻變測試擴展為面向用戶的軟件驗證和質量評估方法。
測試機器學習應用程序具有挑戰性,這些應用程序旨在學習尚未知道正確答案的數據集的屬性。對一些機器學習算法的蛻變屬性進行枚舉和分類,確定了存在于大多數機器學習應用中的6種蛻變關系,即加法、乘法、置換、反向、包含和排他,為了驗證關系的有效性,評估了三種特定的機器學習工具,其中發現了一些真正的錯誤。
同時,蛻變測試在生物學發展領域中也取得了很好的進展。有學者提出使用蛻變測試來檢測疾病傳播預測模型中的缺陷。研究了1918年西班牙流感的兩種疾病傳播模型來驗證蛻變測試的有效性。在疾病傳播模型的相關研究中,又提出一種方法來量化和驗證區域流行病學模型的行為屬性。使用蛻變測試,新穎的數據可視化工具和模型檢查來深入了解流行病模型的功能。
現有的蛻變測試技術雖然可以有效地解決oracle問題,但測試過程中會產生大量具有相似性的測試用例,導致成本的提高。今后對于蛻變測試技術研究的重點應該是降低成本,如使用蛻變關系構造技術的研究、原測試用例選取技術的研究、蛻變測試工具的開發等。
蛻變關系的產生可能是要解決的最具有挑戰性的問題。如何確定最有效的蛻變關系是至關重要的。我們還面臨以下挑戰:建立良好蛻變關系準則;產生可能的蛻變關系;蛻變關系的組合等。由于蛻變測試使測試用例的數量成倍地增長,因此選取具有代表性且數量較少的原始測試用例非常重要。關于選取策略和如何更好地約簡測試用例來減少測試成本仍然存在的許多未解決的問題。蛻變測試工具可根據用戶提供的原始測試用例和蛻變關系,自動地生成衍生用例,并判定輸出是否滿足相應的蛻變關系。測試工具可以幫助測試人員提高測試效率,避免重復的工作,因此開發高效實用的蛻變測試工具也是今后研究工作的重點。
蛻變測試正在逐漸成熟,盡管取得了進展,但是還普遍存在著盲目性大、效率低下等問題。基于以上問題,本文最后對蛻變測試技術未來的挑戰進行了大膽地展望,包括蛻變關系的構建、原測試用例的選取和蛻變測試工具等。這些挑戰的研究將會增大蛻變測試的功能,拓展其使用范圍,提高測試效率,縮減測試成本。
[1]董國偉,徐寶文,陳林,聶長海,王璐璐.蛻變測試技術綜述[J].計算機科學與探索,2009.
[2]曾金偉,張鵬程,李雯睿等.基于RBF神經網絡的多標簽蛻變關系預測方法[J].計算機與現代化,2016.
[3]周紅,張勝,劉琳嵐等.基于GA-PSO算法的路徑測試數據自動生成[J].計算機應用研究,2010.