馮 霞 郝慧敏
?
基于遺傳算法的IMX系統測試數據自動生成研究
馮 霞①②郝慧敏*①
①(中國民航大學計算機科學與技術學院 天津 300300)②(中國民航大學中國民航信息技術科研基地 天津 300300)
利用遺傳算法進行測試數據自動生成是近年來的研究熱點,其有效性高度依賴于適應度函數的選取和初始種群的篩選。該文探索將遺傳算法應用到IMX(Integrated Management X-software)系統測試數據自動生成以提高其回歸測試的質量,將IMX系統專業測試人員手動生成的測試數據作為基礎測試數據,并提出一種基于測試路徑對目標路徑覆蓋率的初始種群篩選標準。在三角形程序和IMX系統平臺上的實驗表明,所提方法在尋找測試數據時所用的時間和迭代次數較少,且生成的測試數據具有較好的多樣性。
測試數據自動生成;遺傳算法;初始種群篩選;適應度函數;IMX系統
IMX(Integrated Management X-software)系統是一套用于管理航空公司運行質量和安全審計的軟件,系統的研發能夠幫助航空公司提升運營質量和安全性能。IMX系統開發周期非常短,每隔一周就需要提交一個新版本,更新速度極快,因而對回歸測試的頻度和效率要求極高。這就要求開發團隊采取邊開發邊測試的策略,在頻繁修改代碼的同時完成測試工作。
遺傳算法是一種通過模擬自然進化過程搜索最優解的智能算法,近年來利用遺傳算法實現高效測試數據自動生成,進而提高回歸測試效率的研究越來越受到關注。文獻[1]為提高測試效率,利用遺傳算法生成大量測試數據進行測試覆蓋,保證了較高的測試故障覆蓋率[2]。文獻[3]將遺傳算法應用在復雜、多條件約束的軟件系統中,解決手工生成測試數據效率低下問題。文獻[4]在遺傳算法的基礎上動態地將稀有數據撲捉,調整權重增加稀有數據的適應值,進而提高測試數據的生成效率。
考慮到不同初始種群和適應度函數對算法有效性會產生直接影響[5],文獻[6]針對并行程序利用基于合作式的協同進化遺傳算法實現覆蓋目標路徑的測試數據自動生成,并對子種群和合并種群采用不同的適應度函數評估。文獻[7]通過對基本適應度函數的修正,采用自適應適應度函數避免了遺傳算法陷入早熟現象,提高了算法的搜索能力。文獻[8]采用遺傳算法生成回歸測試所需數據,通過計算測試路徑與目標路徑的相似度來篩選初始種群,利用已有測試數據所含有利信息來優化種群,提高遺傳算法的運行效率。
總結以上研究,現有學者在利用遺傳算法實現測試數據自動生成時仍需解決的主要問題有:(1)針對不同的應用,學者們提出了不同的適應度函數,可見適應度函數是高度依賴于數據集的。針對某一特定系統,如何選擇合適的適應度函數仍然值得研究;(2)有效利用初始數據的有用信息可以提高算法的效率,如何針對測試的需求及數據集自身的特點,進而設定合理的篩選標準來更好地優化數據,是另一個值得研究的問題。
本文研究遺傳算法在IMX系統測試數據自動生成中的應用,主要貢獻為:(1)將IMX系統專業測試人員手動生成的測試數據作為基礎測試數據,有效利用了IMX測試人員的豐富經驗。(2)提出一種基于路徑覆蓋率的初始種群篩選標準,在三角形程序和IMX系統程序中進行實驗,有效驗證了該方法在較少時間和迭代次數內即可實現測試數據的自動生成。(3)針對IMX系統選擇出有效的適應度函數計算方法,即分支距離與層接近度之和。
2.1 問題分析
遺傳算法是一種結合了生物學中自然選擇和遺傳學中生物進化的計算模型,可應用在數學中以解決最優化問題,最初由美國Michigan大學Holland教授于1975年首次提出。由于遺傳算法搜索最優解的求解空間和自動測試數據生成的問題空間模型相似,所以越來越多的學者將遺傳算法用作測試數據自動生成來提高回歸測試的效率。
本文旨在研究IMX系統中基于遺傳算法的單目標路徑測試數據生成問題。該問題可描述為:
(1)選取IMX系統中的一個核心程序;
采用遺傳算法解決IMX系統測試數據自動生成,需要將問題建模成最優化問題。
將測試數據代入到程序中運行得出的路徑稱為測試路徑,這里把測試路徑與目標路徑的接近程度作為該測試路徑的適應度,記為,。根據適應度函數,就可以為測試數據自動生成問題建立式(1),式(2)最小化或最大化模型:


2.2初始種群篩選
利用遺傳算法實現測試數據自動生成時,初始種群的不同設定對算法性能產生極大影響,利用有效的篩選標準來優化初始種群,可以增強算法的搜索能力,從而提高測試數據自動生成的效能。
2.2.1初始種群與算法性能 遺傳算法的種群是一代一代演化的,且當前代的個體僅與上一代個體相關,與其之前所有個體無關[9]。遺傳算法的這一特征可用定義1描述。
文獻[10,11]在論述初始種群與遺傳算法性能關系時,給出了定義2和定理1:
定理1說明交叉算子可搜索到包含當代種群中極小模式的所有個體,但無法搜索到不在極小模式中的全部個體。定理1反應了交叉算子的搜索能力,同時表明,初始種群對交叉算子的搜索能力具有較強的決定性作用[12];而遺傳算法的收斂速度依賴于交叉操作。由此可見,初始種群選擇對遺傳算法的收斂性能非常關鍵,且在實際應用中,不合理的初始種群選擇,會增加算法的迭代次數,甚至會使搜索結果陷入局部最優,降低算法性能。
綜上,通過選用有效篩選標準,選取充分表征解空間個體信息的初始種群,就可增加交叉算子的搜索能力,進而減少進化代數和收斂時間,提高算法性能。
2.2.2篩選標準 利用一定的篩選標準對回歸測試中已有測試數據進行篩選,可以充分利用已有測試數據所含有用信息,從而提高測試數據生成的效率[13]。但不同的篩選標準,生成的測試數據效能差異很大,因此研究選擇適用于IMX系統的篩選標準對系統的測試非常重要。
IMX系統是基于白盒測試中的路徑覆蓋展開的測試,好的測試數據應該覆蓋到盡可能多的節點路徑,因此本文提出根據路徑的覆蓋率來篩選初始種群。

按式(3)計算每個測試數據的路徑覆蓋率,并將其求和后計算均值得出測試數據的平均路徑覆蓋率,將大于或等于平均路徑覆蓋率的所有個體篩選出來,作為初始種群的部分個體,若篩選出的個體數量不足于預定義的初始種群數量,則其余個體將在被測程序所對應的輸入域范圍內隨機產生[8]。即滿足式(4):

2.3適應度函數選擇
針對IMX系統,本文分析比較了如下4種不同適應度計算方法。
(1)分支距離+層接近度(方法1) 利用文獻[14]和文獻[15]提出的適應度函數設計,即適應度函數為分支距離與層接近度的兩者之和,且分支距離是被規范到(0,1)之間的一個數,這樣有效降低了分支距離和層接近度之間的落差。該方法中的適應度值越小,表示越接近目標路徑,因此應該選取適應度值較小的個體作為后續迭代的數據。
(2)分支距離(方法2) 對分支距離的計算,文獻[16]提出了一種新的設計方法,其基本設計思想是將初始的分支距離除以自身與常數的和(常數大于0)。將該分支距離作為適應度函數時表示為

(3)層接近度(方法3) 對于層接近度方法的計算也有多種,本文采用文獻[5]中提到的計算方法,即統計測試路徑未覆蓋目標路徑的節點的個數,記作,將該值除以目標路徑的節點的個數。將其作為適應度函數,則計算公式為

(4)擬合度(方法4) 采用測試路徑與目標路徑的擬合度作為適應度函數。將測試路徑和目標路徑按節點序列匹配的方法計算出的子路徑記為。計算公式如式(7)[6,17]:

2.4 算法步驟
根據以上研究,利用遺傳算法實現測試數據自動生成的步驟如下:
(1)初始化所有參數;
(2)根據一定篩選標準對基礎數據進行選擇,將滿足標準的數據作為初始種群;
(3)判斷是否滿足算法停止條件,是則算法停止并輸出結果,否則執行步驟(4);
(4)采用輪盤賭方法對初始種群進行選擇操作;
(5)對上述選擇出的個體進行單點交叉操作;
(6)將未覆蓋目標路徑的節點對應的輸入變量進行變異操作;
(7)是否滿足最大(最小)適應度函數或最大迭代次數,是則輸出結果,否則繼續迭代。
3.1 IMX系統被測程序
對于IMX系統,所選的被測程序為審計(audit)模塊中的審計狀態(audit)變化過程,即航空公司在進行審計時,根據符合項和不符合項的狀態,審計狀態發生相應變化的流程。其中,審計狀態包括SCHEDULED, CONDUCTED, READY FOR CLOSURE, CLOSED。

表1 測試數據信息
audit的各個狀態轉換如圖1所示。

圖1 audit狀態轉換
程序修改條件語句由if(findingQty<= unconformityQty||findingOKQty 3.2 三角形程序 三角形程序主要功能是根據三條邊的大小來判斷三角形所屬類別。程序修改條件語句由if((a= =b) ||(a==c)||(b==c))變為if((a==b && b!=c)||(a==c && c!=b)||(b==c && a!=c)),因此,所選取的目標路徑應包含修改節點,目標路徑為:三角形類別是等腰三角形。 3.3實驗參數設置 在利用遺傳算法生成測試數據時,采用ASCII碼編碼,輪盤賭選擇策略,并采用單點交叉(Pc=0.8)和單點變異(Pm=0.2),實驗中最大迭代次數均為1000次,運行次數均為20。 初始種群規模與算法解空間大小相關,且直接影響到遺傳算法的收斂性或計算效率。種群規模過小,則易早熟,從而過早收斂;過大則會耗費大量的資源,代價增高。通常,可根據實際情況在10~200之間選定[18],也可選取4~6個,其中為被測程序中參數的個數[19]。 為確定初始種群規模的大小,本文分別選取種群規模為10,20,40,50,80,160, 在IMX系統上進行了實驗驗證。 種群規模(P)與收斂時間(T)和收斂代數(GEN)關系如圖2,圖3所示。 圖2表明隨著種群不斷增多,算法的收斂時間逐漸增大,當種群規模為40到80之間時,時間先減小,隨后又呈上升趨勢。由圖3可知,算法的收斂代數會隨著初始種群規模的不斷增加而逐漸降低,最后趨于平緩。可見,選擇過小或過大的種群規模會降低算法的性能[5]。因此,針對IMX系統,本文選擇初始種群規模為50。 3.4不同篩選標準實驗 3.4.1 IMX系統程序 將本文2.2節的路徑覆蓋率篩選標準、文獻[8]中相似度篩選標準以及傳統方法三者進行比較。其中,傳統方法是指在利用遺傳算法生成測試數據時,對已有的測試數據隨機選擇作為算法的初始種群,并未充分利用基礎數據含有的有用信息。 算法停止條件為滿足設定的適應度值和最大迭代次數。本次實驗中選取層接近度與分支距離結合作為遺傳算法的適應度函數。不同篩選標準實驗結果如表2所示。 圖2 收斂時間和種群規模關系 圖3 收斂代數均值和種群規模關系 表2初始數據數量為50的篩選標準比較 實驗次數路徑覆蓋率篩選標準相似度篩選標準傳統方法 1(READY_FOR, 150, 45, 74, 50, 29)(READY_FOR, 90, 30, 20, 11, 7)(READY_FOR, 12, 2, 4, 2, 2)(READY_FOR, 84, 0, 23, 20, 14) 2(READY_FOR, 50, 10, 23, 0, 0)(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 28, 0, 5, 5, 1) 3(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 23, 1, 5, 3, 2) 4(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 76, 9, 29, 22, 0) 5(READY_FOR, 50, 40, 5, 4, 3)(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 51, 15, 17, 6, 4) 6(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 75, 32, 42, 26, 16) 7(READY_FOR, 41, 2, 22, 10, 2)(READY_FOR, 50, 40, 5, 4, 4)(READY_FOR, 41, 2, 22, 10, 2) 8(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR,50, 40, 10, 9, 9)(READY_FOR, 50, 23, 19, 10, 3) 9(READY_FOR, 86, 28, 43, 31, 20)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 43, 1, 9, 7, 1) 10(READY_FOR, 50, 10, 17, 0, 0)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 70, 35, 35, 35, 25) 11(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 54, 11, 10, 8, 8) 12(READY_FOR, 90, 30, 54, 14, 9)(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 86, 28, 43, 31, 21) 13(READY_FOR, 80, 37, 37, 31, 15)(READY_FOR, 90, 30, 58, 37, 20)(READY_FOR, 50, 10, 18, 0, 0)(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 92, 24, 19, 10, 1) 14(READY_FOR, 23, 1, 5, 3, 1)(READY_FOR, 80, 20, 56, 31, 6)(READY_FOR, 54, 30, 23, 19, 19) 15(READY_FOR, 54, 30, 23, 19, 19)(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 80, 37, 37, 31, 15) 16(READY_FOR, 50, 40, 7, 6, 0)(READY_FOR, 50, 40, 9, 5, 2)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 39, 0, 8, 8, 7) 17(READY_FOR, 48, 20, 22, 19, 3)(READY_FOR, 150, 45, 102, 20, 5)(READY_FOR, 65, 22, 30, 26, 26) 18(READY_FOR, 50, 40, 10, 9, 9)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 36, 13, 22, 22, 14) 19(READY_FOR, 50, 40, 6, 6, 3)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 29, 1, 21, 13, 6) 20(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 12, 2, 10, 9, 9)(READY_FOR, 86, 46, 35, 24, 23) 時間均值(s)0.1620.1660.321 迭代均值(次)4.4004.700211.150 通過上述實驗可以看出:(1)傳統的遺傳算法需要消耗0.321 s,迭代211.150次才可找到測試數據。可見傳統遺傳算法的效率較為低下。(2)相似度方法和路徑覆蓋率方法在時間和迭代次數上相差不多,且該值遠遠小于傳統方法對應值。但是通過相似度方法篩選的測試數據失去了多樣性,找到相同數據次數較多,而路徑覆蓋率方法提高了測試數據的多樣性。(3)隨著測試數據的增多,利用路徑覆蓋率篩選標準生成測試數據時所需的時間和迭代次數將均少于相似度方法,本文方法的優勢逐漸凸顯。 3.4.2三角形程序實驗設置 為驗證2.2節所提方法的可靠性和普遍性,同時將其應用在對三角形程序的測試上。由于是回歸測試,所以已經具有一些可以覆蓋原來三角形程序所對應目標路徑的測試數據。對于傳統方法,是隨機選取已有的測試數據作為算法的初始種群,對于路徑覆蓋率篩選標準和相似度篩選標準來說,則是分別利用對應篩選標準選取符合要求的數據作為初始種群的一部分,其余個體則是在輸入域內隨機產生。 適應度函數選用層接近度與分支距離之和計算。實驗結果如表3所示。 表3三角形程序實驗比較 評價指標路徑覆蓋率篩選標準相似度篩選標準傳統方法 時間均值(s)0.4750.8171.032 迭代均值(次)57.800448.600660.850 由以上實驗可知,本文方法所用的時間和迭代次數均為最小,且在100次以內就可找到覆蓋目標路徑的測試數據,效率極高。而相似度篩選標準方法和傳統方法,需消耗很多時間和迭代次數,且存在找不到覆蓋目標路徑測試數據的現象。由此足以證明本文方法的有效性。 3.5 不同適應度函數實驗 采用2.3節中介紹的方法應用在IMX系統上進行對比。以路徑覆蓋率準則對初始種群進行篩選。實驗結果如表4所示。 表4不同適應度函數性能比較 評價指標方法1方法2方法3方法4 時間均值(s)0.1620.4140.3152.439 迭代均值(次)4.70038.20020.600754.400 由上實驗得出,在利用遺傳算法進行測試數據生成時,選取不同的適應度函數指標對數據生成的效率有很大影響。對于IMX系統來說,方法4所需時間是方法1的15倍之多,且迭代次數也遠遠超過了方法1,效率非常低下。方法2和方法3相對于方法4,效率得到了很大提高,但迭代過程中每次都會產生大量的覆蓋率為0.0%的無用數據。采用方法1時需要最少的時間和迭代次數,且產生的測試數據具有較好的多樣性,多數數據的覆蓋率都能達到90.0%以上,大大增強了測試的效率。由此可知,對于IMX系統,應將分支距離與層接近度之和作為遺傳過程中適應度函數的評價指標。 為提高對IMX系統的測試效率,本文采用遺傳算法實現回歸測試中測試數據的自動生成。針對不同的初始種群篩選標準和適應度函數對測試數據有效性的影響進行了研究,并提出了路徑覆蓋率篩選標準,在IMX系統核心程序和三角形類別判定程序中的實驗表明,本文方法在生成測試數據時所需時間和迭代次數均較少。進而又通過對多種不同適應度函數計算方法的比較實驗,選取了分支距離與層接近度之和作為IMX系統的適應度度量方法。 [1] Swain S and Mohapatra D P. Genetic Algorithm-Based Approach for Adequate Test Data Generation[M]. India: Intelligent Computing, Networking, and Informatics, Springer, 2014: 453-462. [2] 鄺繼順, 劉杰鏜, 張亮. 基于鏡像對稱參考切片的多掃描鏈測試數據壓縮方法[J]. 電子與信息學報, 2015, 37(6): 1513-1519. Kuang Ji-shun, Liu Jie-tang, and Zhang Liang. Test data compression method for multiple scan chain based on mirror-symmetrical reference slices[J].&, 2015, 37(6): 1513-1519. [3] Michael C C, McGraw G E, Schatz M A,.. Genetic algorithms for dynamic test data generation[C]. Proceedings of the 12th IEEE International Conference on Automated Software Engineering, 1997: 307-308. [4] 張巖, 鞏敦衛. 基于稀有數據撲捉的路徑覆蓋測試數據進化生成方法[J]. 計算機學報, 2013, 36(12): 2429-2440. Zhang Yan and Gong Dun-wei. Evolutionary generation of test data for paths coverage based on scarce data capturing[J]., 2013, 36(12): 2429-2440. [5] 劉向輝, 韓文報, 權建. 基于遺傳策略的格基約化算法[J]. 電子與信息學報, 2013, 35(8): 1940-1945. Liu Xiang-hui, Han Wen-bao, and Quan Jian. A new lattice reduction algorithm based on genetic strategy[J].&, 2013, 35(8): 1940-1945. [6] Tian T and Gong D. Test data generation for path coverage of message-passing parallel programs based on co-evolutionary genetic algorithms[J]., 2014, 22(79): 1-32. [7] 嚴韜, 陳建文, 鮑拯. 基于改進遺傳算法的天波超視距雷達二維陣列稀疏優化設計[J]. 電子與信息學報, 2014, 36(12): 3014-3020. Yan Tao, Chen Jian-wen, and Bao Zheng. Optimization design of sparse 2-D arrays for Over-The-Horizon Readar (OTHR) based on improved genetic algorithm[J].&, 2014, 36(12): 3014-3020. [8] 鞏敦衛, 任麗娜. 回歸測試數據進化生成[J] . 計算機學報, 2014, 37(3): 489-499. Gong Dun-wei and Ren Li-na. Evolutionary genetation of regression test data[J]., 2014, 37(3): 489-499. [9] 曹凱, 陳國虎, 江樺, 等. 自適應引導進化遺傳算法[J]. 電子與信息學報, 2014, 36(8): 1884-1890. Cao Kai, Chen Guo-hu, Jiang Hua,. Guided self-adaptive evolutionary genetic algorithm[J].&, 2014, 36(8): 1884-1890. [10] 徐宗本, 高勇. 遺傳算法過早收斂現象的特征分析及其預防[J]. 中國科學: E 輯, 1996, 26(4): 364-375. Xu Zong-ben and Gao Yong. The analysis and prevention of genetic algorithm premature convergence[J].(), 1996, 26(4): 364-375. [11] Suzuki J. A Markov chain analysis on simple genetic algorithms[J]., 1995, 25(4): 655-659. [12] 何大闊, 王福利, 賈明興. 遺傳算法初始種群與操作參數的均勻設計[J]. 東北大學學報: 自然科學版, 2005, 26(9): 828-831. He Da-kuo, Wang Fu-li, and Jia Ming-xing. Uniform design of initial population and operation parameters of genetic algorithm[J].(), 2005, 26(9): 828-831. [13] Xuan J and Monperrus M. Test case purification for improving fault localization[C]. FSE 2014 Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, New York, NY, USA, 2014: 52-63. [14] McMinn P. Evolutionary search for test data in the presence of state behaviour[D]. [Master dissertation], University of Sheffield, 2005: 1-242. [15] Harman M and McMinn P. A theoretical and empirical study of search-based testing: local, global, and hybrid search[J]., 2010, 36(2): 226-247. [16] Arcuri A. It does matter how you normalise the branch distance in search based software testing[C]. Proceedings of the 3rd International Conference on Software Testing, Verification and Validation, Pairs, France, 2010: 205-214. [17] Xie X Y, Xu B W, Shi L,.. Genetic test case generation for path-oriented testing[J]., 2009, 20(12): 3117-3136. [18] 雷英杰, 等. MATLAB 遺傳算法工具箱及應用[M]. 西安: 西安電子科技大學出版社, 2005: 60-61. Lei Ying-jie,.. Application of Genetic Algorithm ToolBox Based on MATLAB[M]. Xian: Xidian University Publisher, 2005: 60-61. [19] 劉曉霞. 種群規模對遺傳算法性能影響的研究[D]. [碩士論文], 華北電力大學, 2010: 1-37. Liu Xiao-xia. A research on population aize impaction on the performance of genetic algorithm[D]. [Master dissertation], North China Electric Power University, 2010: 1-37. Research on Automatic Generation of Test Data in MX Based on Genetic Algorithms Feng Xia①②Hao Hui-min① ①(,,300300,)②(,,300300,) Using genetic algorithms to generate test data automatically is becoming a hot topic in recent years, the method on effectively generating data is highly dependent on choosing the proper fitness function and the selecting standard. The genetic algorithm is used on Integrated Management X-software (IMX) system to help it improve the quality of regression test. Those basic test data used in this paper are taken from the data that generated by professional testers in IMX, and an initial population selecting standard is proposed based on the coverage. Experiments on IMX and triangle program show that the proposed algorithm is more effective than others, for example, with less time and iteration the method can find the testing data correctly, especially on data variety. Test data generation; Genetic algorithm; Initial population selecting; Fitness function; Integrated Management X-software (IMX) system TP311 A 1009-5896(2015)10-2501-07 10.11999/JEIT150291 2015-03-09;改回日期:2015-06-15; 2015-07-27 郝慧敏 1048866836@qq.com 國際航空運輸協會(IATA)項目(70003418)和國家科技支撐計劃(2014BAJ04B02) The International Air Transport Association Fund (70003418); The National Key Technology Research and Development Program of the Ministry of Science and Technology of China (2014BAJ04B02) 馮 霞: 女,1970年生,教授,博士,主要研究方向為數據挖掘和民航智能信息處理研究. 郝慧敏: 女,1990年生,碩士生,研究方向為數據挖掘和民航智能信息處理研究.



4 結束語