摘? 要:隨著軟件測試自動化水平的進一步提升,其對自動準確生成軟件測試數據的要求也逐漸提高。但由于以往常用的遺傳算法存在一定的局限性,難以令軟件測試數據始終保持較快的自動生成速度與數據高質量。因此需要對該遺傳算法進行優(yōu)化改進,在這一背景下,本文將從闡明改進遺傳算法的必要性入手,分別從算法設計與系統(tǒng)設計兩方面,重點針對基于改進遺傳算法的軟件測試數據自動生成系統(tǒng)進行簡要分析研究。
關鍵詞:改進遺傳算法;軟件測試數據;自動生成系統(tǒng)
中圖分類號:TP311.53;TP18? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)01-0023-02
Abstract:With the further improvement of the level of software test automation,its requirements for automatically and accurately generating software test data have gradually increased. However,due to the limitations of the commonly used genetic algorithms in the past,it is difficult to keep the software test data always at a relatively fast automatic generation speed and high quality. Therefore,the genetic algorithm needs to be optimized and improved. In this context,this article will start by clarifying the necessity of improving the genetic algorithm,from the aspects of algorithm design and system design,this paper focuses on the automatic generation system of software test data based on improved genetic algorithm.
Keywords:improved genetic algorithm;software test data;automatic generation system
0? 引? 言
雖然國內外目前有許多研究人員加入到遺傳算法及其優(yōu)化改進的研究隊伍中,并經過多年努力也取得了一定研究成果。但有關改進遺傳算法在軟件測試數據自動生成中的實際應用等,相關研究還相對較少。因此本研究不僅能夠有效豐富該領域的理論研究,同時也可以為實現軟件測試數據自動生成系統(tǒng)的優(yōu)化設計提供相應的實踐依據。
1? 改進遺傳算法設計軟件測試數據自動生成系統(tǒng)的必要性
標準遺傳算法中,對于群體p(t)一般需要運用遺傳算子,經過選擇、交叉以及變異運算,生成群體p(t+1)并在此基礎上依次進行解碼與解集合處理,最后進入個體評價環(huán)節(jié),當T即遺傳算法終止迭代次數比t值小時,直接選取當前群體當中的最優(yōu)個體作為最終解即可[1]。因此采用遺傳算法實現軟件測試數據自動生成,即便無任何外界信息,也無需確定規(guī)則,只憑借迭代次數最大值開展循環(huán)搜索,便能夠達到并行搜索的效果,進而使得數據自動生成具有較高靈活性。但由于在標準遺傳算法當中,交叉與變異概率完全固定,在算法執(zhí)行的整個過程中,無論是交叉還是變異算法執(zhí)行次數期望值并不發(fā)生變化,但種群進化后期,如果交叉與變異算法多次被執(zhí)行,將會破壞優(yōu)秀的測試用例。且在算法中止時,其有可能產生早熟現象,并直接將局部最優(yōu)解作為全局最優(yōu)解,由此難以保障軟件測試數據是自動生成的穩(wěn)定性以及數據生成質量,故而有必要對標準遺傳算法進行優(yōu)化改進。
2? 改進遺傳算法下的軟件測試數據自動生成系統(tǒng)設計分析
2.1? 算法設計
2.1.1? 算法流程
針對傳統(tǒng)遺傳算法存在的局限性,本文在繼續(xù)使用遺傳算法的基礎上,設計采用模擬退火算法對遺傳算法進行有效改進。改進后的遺傳算法在自動生成軟件測試數據時,首先將在個體編碼中使用二級制,由此形成個體集后再運用二級制編碼對多參數級聯編碼問題進行有效解決。然后在完成參數初始化操作后,直接將初始測試數據準確輸入其中,自動計算適應值,此時需要根據初始輸入測試數據反饋,運用遺傳算法中的選擇、交叉與變異運算生成新的種群。對生成的新種群使用模擬退火算法進行最優(yōu)迭代,直至其出現迭代次數最大值,即需要降低初始設定穩(wěn)定,令T初=aT初,此時如果達到終止條件,則通過比較分析新種群以及初始種群的適應值,結合最終得到的比較結果自動輸出最優(yōu)數據集即可結束算法。否則需要持續(xù)進行模擬退火降溫操作,直至其與終止條件相符合。
2.1.2? 優(yōu)化用例
一般情況下,采用代價測試覆蓋率的最小值優(yōu)化數據測試用例。考慮到代價和覆蓋率相互制約,因此本文提出在使用改進的遺傳算法下優(yōu)化軟件測試數據用例,如果用ti代表各測試用例,用代表軟件測試數據集Test ={t1,t2,…,tn},用取值為正數的Costj代表和各測試用例一一對應的測試代價。且測試代價主要由系統(tǒng)運行所需內存空間、CPU時間等共同構成。通過轉化軟件測試數據是指成為一個Tests的真子集MinTS,其測試覆蓋與Tests測試覆蓋度相一致。利用改進后的遺傳算法,在最優(yōu)化測試集合當中加入測試代價最下用例,隨后直接刪除覆蓋測試需求,對該過程進行多次重復操作直至同時出現完全一樣的兩個測試用例[2]。此時將同樣的兩個測試用例加入最優(yōu)測試結合當中,在用例與全部測試需求相符合的情況下即可終止算法。此時所得到的即為最優(yōu)軟件測試數據用例。但值得注意的是,在優(yōu)化測試數據用例時,其數據庫及測試數據均需要對左右執(zhí)行程序當中,任意一個分支及其所使用的數據進行全覆蓋,每一個數據測試用例均能夠對各個CPU運行進行全程完整記錄。
2.2? 系統(tǒng)設計
2.2.1? 新建算法動態(tài)鏈接庫
為使運用改進后的遺傳算法能夠有效增強軟件測試數據自動生成算法的適用性,使其具有更高的移植性,首先,本文通過將改進后的遺傳算法封裝成動態(tài)鏈接庫,便于系統(tǒng)根據自身實際需要隨時進行調取使用。為提升算法封裝的有效性,本文首先直接利用專業(yè)的工具軟件,應用其中自動的應用程序新建一個空算法動態(tài)鏈接庫,在對其進行重新命名后直接存儲至和主程序一致的目錄下[3]。其次,新建有關于算法的類,主要添加包括bianmadll.h與bainmadll.cpp以及yichuanxiliedll.cpp等在內的各種頭文件,根據被添加的各頭文件,完成定義遺傳算法二進制編碼、初始化改進后遺傳算法的參數定義等操作。例如使用bianmadll.h定義遺傳算法二進制編碼,使用bainmadll.cpp這一頭文件進行編碼化執(zhí)行操作。頭文件diedaicaozuodll.h被用于定義迭代操作,其編碼化執(zhí)行操作時需要使用的頭文件為diedaicaozuodll.cpp。最后,自動生成Gaijin.dll即對應的解決方案,由主程序根據其實際需要隨時進行調取使用,完成單元測試用例的自動生成與準確移植。
2.2.2? 系統(tǒng)層次架構的設計
在完成遺傳算法的優(yōu)化改進后,本文通過充分考慮軟件測試數據自動生成需求,在積極參考其他相關研究資料的基礎上,選擇使用分層設計理念,將整個軟件測試數據自動生成系統(tǒng)分成三大層,分別為數據訪問層、業(yè)務邏輯層、頁面顯示層。數據訪問層作為整個基于改進遺傳算法的軟件測試數據自動生成系統(tǒng)最底層,占據著絕對的基礎性地位,該層中通過運用專業(yè)的數據庫,并采用具有良好通用性的ADO.NET數據接口,負責完成各項軟件測試數據的采集與傳輸。業(yè)務邏輯層作為系統(tǒng)中間層,分別與數據訪問層和頁面顯示層相互連接,發(fā)揮著承上啟下的重要作用。數據訪問層中的ADO.NET數據接口與業(yè)務邏輯層當中由各個業(yè)務組件共同構成的工作流組件中的數據接口相互連接,實現軟件測試數據的高效共享傳輸。所有采集得到的有關工作流組件的數據,將統(tǒng)一傳輸至業(yè)務邏輯層中的ASPX當中,而ASPX則直接與頁面顯示層當中的工作流客戶端,即.aspx網頁相互連接,負責在該頁面中直接自動顯示獲取的各項軟件測試數據,最終達到軟件測試數據快速、準確自動生成的目的。
2.3? 運行成效
在改進遺傳算法中,將種群設定為300,將終止迭代次數統(tǒng)一設定為25,將交叉概率分布設定為0.7與0.4,將變異概率分別設定為0.04和0.02。在標準遺傳算法中,其他參數不變,只將交叉概率與變異概率固定設置為0.8與0.02,分別各自運行標準遺傳算法與改進遺傳算法下的軟件測試數據自動生成系統(tǒng)共計50次,每五次為一組取均值。根據最終的運行結果可知,改進遺傳算法的執(zhí)行速度更快,具有更好的收斂性。如同樣在系統(tǒng)運行10次的情況下,標準遺傳算法中,系統(tǒng)每組平均執(zhí)行時間不足80 ms,但改進遺傳算法中系統(tǒng)每組平均執(zhí)行時間仍然保持90 ms以上。除此之外,基于標準遺傳算法的軟件測試數據自動生成系統(tǒng)每次生成的數據結果并不完全相同,但改進遺傳算法下系統(tǒng)運行具有較高的穩(wěn)定性,生成測試數據范圍較大,具有較高的數據生成效率。
3? 結? 論
根據本文的分析研究,可知運用深入融合模擬退火算法,與自適應交叉與變異算子的方式,對遺傳算法進行優(yōu)化改進。并運用改進后的遺傳算法設計軟件測試數據自動生成系統(tǒng),能夠在保障軟件測試數據具有更廣闊的搜索生成范圍的基礎上,進一步提升數據生成速度,并確保數據始終具有較高的質量水平。因此證明,改進遺傳算法在軟件測試數據自動生成系統(tǒng)中具有較高的應用價值。
參考文獻:
[1] 姬峰.基于改進遺傳算法的軟件測試自動化機制研究 [J].信息技術,2019(10):88-93.
[2] 韓霄漢,葉方彬,竇健,等.基于改進遺傳算法的接口測試數據集的生成方法 [J].濟南大學學報(自然科學版),2019,33(1):56-60.
[3] 王佩佩.基于自適應遺傳算法的測試數據自動生成理論與方法 [D].徐州:中國礦業(yè)大學,2018.
作者簡介:孫德剛(1978.04-),男,漢族,山東德州人,高級工程師,學士學位,研究方向:教育信息化、軟件開發(fā)。