林振文
摘 要:通過對現有的構件化測試用例進行分析,探究了IGA算法在構件化軟件測試中的應用,提出了基于MTCGCBS軟件測試用例生成模型,將抗原作為函數目標對算法進行優化,將抗體作為解決問題的關鍵,通過與其他算法進行比較,IGA算法在軟件測試用例生成效率明顯高于其他算法,更能提高軟件的測試效率。
關鍵詞:IGA算法;構件化軟件;測試用例
隨著軟件開發的質量要求越來越高,對軟件的算法要求提出了更高的要求,基于構件的軟件工程開發技術,能為高效的開發軟件提供了保證,但是基于構件技術開發的軟件,如何有效的對其進行測試,成為軟件開發人員需要解決的難題。如何有效的對軟件進行測試,采用快速高效的軟件測試方法對測試用例進行優化,提高軟件測試的工作效率。遺傳算法采用多點搜索與交叉操作技術,全局搜索能力比較強大,但是對空間問題的搜索能力不是很強,在測試的過程中還存在一系列的問題。本文提出了采用免疫遺傳算法IGA對軟件的測試功能進行優化,將抗原作為函數目標對算法進行優化,將抗體作為解決問題的關鍵,并將抗體與抗原之間的親和力作為解決問題的聯合強度,對優化函數的算法具有獨特的優勢和高效性,可以大大的對測試用例進行優化,進而提高軟件測試工作效率。
1 基于IGA的軟件測試用例生成模型
在軟件的測試用例中,我們采用構件化軟件測試用例生成模型(MTCGCBS)對軟件進行測試,改變軟件測試的方法,并將IGA算法應用于該測試模型中,每一個構件軟件的構件都有一定的規約文檔,在對文檔進行規劃的過程中,需要要求的設置測試軟件的前置條件,才能使用隨機的算法對生成的構件進行測試,然后采用測試的數據進行編碼形成測試的初始種群,接著采用IGA對該初始對根構件規約文檔進行分析得到根構件的前置條件,并獲取相應的初始測試數據,其次根據初始數據的編碼,得到軟件測試數據的初始種群;然后利用IGA算法優化初始種群,產生高效率的測試用例。根據構件的規約文檔提取的初始測試數據,構件軟件測試的模型,就可以利用IGA算法對生成的軟件測試進行優化,具體流程如下圖1所示。
采用構件規約文檔生成用例測試的過程,并運用IGA算法可以對初始測試數據進行優化。運用IGA算法的適度函數與被測試的用例進行交互,通過IGA算法計算后,可以有效的得到適應度函數的值,根據適度函數的返回值,可以判斷測試的效率,如果返回值越高,說明IGA的優化效率就越好,測試的效率越高。
2 IGA算法分析
2.1 IGA算法
免疫遺傳算法與遺傳算法相似,采用一系列的選擇、交叉和變異等操作,數據的產生具有一定的隨機性,在測試的過程中,往往會出現算法退化的現象,因此,IGA算法采用全局收斂算法與多點搜索技術與交叉技術,保證對群體進化的促進作用。但是免疫遺傳算法在遺傳算法的基礎添加了免疫算子(該過程包括接種疫苗和免疫兩個過程),采用信息抑制的方法控制信息退化,以防止算法的種群退化,提高算法的測試效率。因此,采用遺傳算法作為測試用例的基礎,然后在遺傳算法上加入免疫算子,形成免疫遺傳算法。
在確定了IMG算法的變化范圍,根據對IGA算法的定義,并依據上述圖1中IGA在MTCGCBS模型中的應用,在初始種群中抽取疫苗算子,并對測試的數據劃分種群,采用適應度函數技進行計算,再經過交叉、變異、接種疫苗等過程,并將優化的最好個體送給相鄰處理器,淘汰掉適應度較差的個體,IGA的算法流程,如圖2所示:
2.2 IGA的算法收斂
假設采用IGA算法的初始種群的規模為M,在確定種群的大小之后,運用動態變長的二進制編碼對種群中的所有個體進行編碼,根據數據種群的變化規則,采用全局搜索和交叉算法,對種群進行優化,其中交叉操作的交叉點的選取需要根據適應度函數變化,以保證算法的覆蓋范圍,同時也是通過自適應的動態交叉率P0的操作而得到算法的初始數據,變異操作的過程通過收斂計算,剔除算法中的不良基因,對每個種群數據的基因位優化,并替代上一代的因子以種群的自適應的動態概率Pn相互獨立進行變異,并與免疫算子結合在一起,形成一個優化的個體。IGA算法的狀態轉移情況可用隨機過程對其進行描述,具體描述如下:
通過對初始數據群體進行一系列的自適應交叉、自適應變異操作,并對數據進行接種疫苗,然后由種群進行免疫選擇,在經過數據優化后形成一個完整的過程,即從AK到DK形成一個完整的馬爾科夫鏈,實現對初始種群的優化。
3 結束語
通過對傳統的遺傳算法進行分析,提出一種基于IGA算法的構件化軟件測試用例生成模型,采用接種免疫疫苗的方法對個體進行優化,對該模型的詳細功能進行研究,使用IGA算法的效率遠高于遺傳算法,能夠提高構件化軟件測試用例在軟件測試過程中的測試效率,通過對比也能夠說明該算法的效率高于傳統的遺傳算法和隨機算法,對軟件的測試效果也十分有效,同時也為構件化測試的軟件的發展提供了支持。
參考文獻
[1]汪浩,謝軍凱,高仲儀.遺傳算法及其在軟件測試數據生成中的應用研究[J].計算機工程與應用,2012(12).
[2]單錦輝,土戟,馬曉冬,等.面向路徑的測試數據自動生成工具及其圖形界面的Tcl/Tk設計[J].計算機工程與應用,2013(12).
[3]聶長海,徐寶文.一種最小測試用例集生成方法[J].計算機學報,2013(12).