欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

面向路徑的軟件測試數(shù)據(jù)進(jìn)化生成系統(tǒng)的制作方法

文檔序號:6353019閱讀:774來源:國知局
專利名稱:面向路徑的軟件測試數(shù)據(jù)進(jìn)化生成系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本專利涉及軟件測試領(lǐng)域,設(shè)計(jì)并開發(fā)了一個(gè)面向路徑的軟件測試數(shù)據(jù)自動生成系統(tǒng)。
背景技術(shù)
軟件測試是軟件質(zhì)量保證的關(guān)鍵,是軟件開發(fā)中不可缺少的環(huán)節(jié),也是軟件工程的重要組成部分,測試的效果直接關(guān)系到軟件產(chǎn)品的質(zhì)量。據(jù)美國工業(yè)界的統(tǒng)計(jì),軟件測試占整個(gè)軟件開發(fā)周期總成本的50%以上,包括十分耗時(shí)、枯燥、非常困難且容易出錯的諸多環(huán)節(jié)。另外,隨著計(jì)算機(jī)控制對象復(fù)雜度的不斷提高和軟件功能的不斷增強(qiáng),軟件的規(guī)模也在不斷地增大。大型系統(tǒng)的代碼量甚至達(dá)到了千萬行以上,這使得軟件測試的開銷也越來越大。在軟件測試工作中最重要的環(huán)節(jié)就是測試數(shù)據(jù)的生成,這也是非常耗時(shí)的一個(gè)環(huán)節(jié), 則試數(shù)據(jù)的合理、準(zhǔn)確與否常常關(guān)系到整個(gè)測試的成敗。因此如果將該環(huán)節(jié)自動化,無疑將會縮短軟件的開發(fā)周期,提高軟件質(zhì)量。近幾十年來,國際上和國內(nèi)少數(shù)研究機(jī)構(gòu)針對不同的計(jì)算機(jī)語言開發(fā)出路徑覆蓋測試數(shù)據(jù)生成的系統(tǒng),其中Scott開發(fā)的系統(tǒng)是針對!Fortran語言的,但只考慮了有限的 Fortran語句,如if語句,和一些簡單的算術(shù)分支謂詞以及簡單的變量類型;Ferguson和 Korel開發(fā)了一個(gè)名為TESTGEN的測試數(shù)據(jù)生成系統(tǒng),該系統(tǒng)支持fiscal語言編寫的程序模塊的測試數(shù)據(jù)生成。這個(gè)系統(tǒng)具有以下的限制性只支持整型數(shù)據(jù)的生成;只支持簡單的算術(shù)和布爾分支謂詞;只支持了 fiscal語言的一個(gè)子集,一些很重要的元素不能應(yīng)用, 如過程等。單錦輝等在2002年《計(jì)算機(jī)工程與科學(xué)》第M卷第1期上給出了一種面向路徑的測試數(shù)據(jù)自動生成工具的設(shè)計(jì)與實(shí)現(xiàn),但是該方法使用的測試數(shù)據(jù)生成方法是基于改進(jìn)的松弛迭代方法進(jìn)行的,需要用戶實(shí)現(xiàn)的初始操作較多,面對非專業(yè)的軟件測試人員是較難使用;劉義等2005年在《中國科教博覽》雜志上發(fā)表的C程序路徑覆蓋及測試數(shù)據(jù)自動生成系統(tǒng),該方法只是針對分支覆蓋準(zhǔn)則的路徑覆蓋;李寶林等在2007年《計(jì)算機(jī)工程》 第33卷第15期中提出的面向路徑的測試數(shù)據(jù)自動生成工具,該方法在路徑選擇和測試數(shù)據(jù)生成方法方面均有待改進(jìn),且測試數(shù)據(jù)生成的效率有待提高。目前在軟件測試各種覆蓋準(zhǔn)則中,路徑覆蓋對程序的覆蓋程度最高,檢錯效率也最高,因此設(shè)計(jì)開發(fā)基于路徑覆蓋的測試數(shù)據(jù)自動生成系統(tǒng)十分必要?,F(xiàn)有路徑覆蓋的測試數(shù)據(jù)生成方法有很多,遺傳算法作為一種高效的全局搜索方法,已經(jīng)被廣泛應(yīng)用于測試數(shù)據(jù)生成中,現(xiàn)有使用該方法自動生成路徑覆蓋測試數(shù)據(jù)的系統(tǒng)軟件采用的都是傳統(tǒng)遺傳算法,遺傳算法的個(gè)體編碼方式、適應(yīng)值計(jì)算、選擇方式、交叉方式以及變異方式等均只使用一種方法,測試數(shù)據(jù)生成的效率有待提高。實(shí)際上被測程序是多種多樣的,如能針對不同被測程序,可以采用不同的編碼方式和不同的適應(yīng)值計(jì)算方法,將能夠有效提高測試數(shù)據(jù)的生成效率。軟件測試行業(yè)需要一種能夠結(jié)合現(xiàn)有改進(jìn)的遺傳算法,快速生成被測程序測試數(shù)據(jù)的軟件,真正實(shí)現(xiàn)軟件測試數(shù)據(jù)生成的自動化。

發(fā)明內(nèi)容
為了實(shí)現(xiàn)軟件測試數(shù)據(jù)生成的自動化,提高軟件測試的效率和質(zhì)量,本發(fā)明開發(fā)出一套面向路徑的軟件測試數(shù)據(jù)進(jìn)化生成系統(tǒng),該系統(tǒng)不僅能夠根據(jù)用戶所選擇的測試路徑,自動生成穿越這些目標(biāo)路徑的測試數(shù)據(jù),而且在使用遺傳算法生成測試數(shù)據(jù)的過程中, 提供了多種可供選擇的遺傳算法個(gè)體編碼方式、適應(yīng)值計(jì)算方法、選擇方式、交叉方式、變異方式等操作,方便用戶根據(jù)被測程序的不同類型選擇不同的測試數(shù)據(jù)生成方式,真正實(shí)現(xiàn)軟件測試數(shù)據(jù)自動化生成。主要包含以下三大模塊1、軟件測試系統(tǒng)管理模塊本模塊主要實(shí)現(xiàn)的功能是被測程序的選擇、插裝、輸入輸出處理以及外部變理處理等一系列設(shè)置操作,是通過一個(gè)交互式界面來實(shí)現(xiàn)的。1. 1被測程序插裝是指為了動態(tài)的獲取某一數(shù)據(jù)在程序中的運(yùn)行狀態(tài),在程序中插入一些檢查語句,通過這些檢查語句的執(zhí)行并輸出程序的運(yùn)行特征數(shù)據(jù)。本系統(tǒng)主要針對被測程序中的分支語句進(jìn)行插裝。1. 2輸入處理包含被測程序的導(dǎo)入、被測程序的編輯操作等部分。另外還包括對文件或程序的打開、保存、另存為、編輯、打印等一系列的操作處理。1. 3外部變量處理是對系統(tǒng)中軟件測試數(shù)據(jù)生成方法的選擇設(shè)置,還包含對系統(tǒng)本身的設(shè)置操作。2、被測程序分析操作模塊本模塊實(shí)現(xiàn)了通過對被測程序的內(nèi)部分析,得出被測程序的輸入數(shù)據(jù)類型、被測程序的控制流圖、進(jìn)一步得到針對路徑覆蓋準(zhǔn)則的目標(biāo)路徑等。2. 1被測程序的輸入值個(gè)數(shù)、輸入值類型及其范圍是應(yīng)用遺傳算法生成測試數(shù)據(jù)的重要條件。不同的被測程序輸入值個(gè)數(shù)不同、輸入值類型及取值范圍也不會相同。2. 2程序的控制流程圖(CFG)是根據(jù)被測程序的結(jié)構(gòu)特征來生成的,其能夠指導(dǎo)用戶生成軟件測試所需要的目標(biāo)路徑。被測程序的結(jié)構(gòu)可用控制流圖CFG = (V,E, entry, exit)表示,V是語句節(jié)點(diǎn)的集合,E是邊集,表示語句間可能的控制流向,entry是唯一的源節(jié)點(diǎn),對應(yīng)程序的開始語句,exit是唯一的匯節(jié)點(diǎn),對應(yīng)程序的結(jié)束語句。2. 3針對用戶選擇的目標(biāo)路徑,將其表示成編碼形式,本發(fā)明使用的編碼是基于赫夫曼編碼的形式,由0、1代碼組成,對于任何一個(gè)分支語句,如果路徑選擇真分支,則用1表示,選擇假分支則用0表示,這樣路徑編碼能保證任何一個(gè)目標(biāo)路徑的編碼都不是其他編碼的前綴。3、軟件測試數(shù)據(jù)生成模塊本模塊是發(fā)明的核心內(nèi)容,本發(fā)明主要使用遺傳算法生成穿越目標(biāo)路徑的測試數(shù)據(jù),系統(tǒng)中我們對傳統(tǒng)遺傳算法進(jìn)行了改進(jìn),生成測試數(shù)據(jù)的效率較高,為了給科研人員進(jìn)行研究對比,我們還提供了隨機(jī)法生成穿越目標(biāo)路徑的測試數(shù)據(jù)。本模塊包括遺傳算法和隨機(jī)法執(zhí)行過程中所需要的參數(shù)設(shè)置、執(zhí)行過程、結(jié)果輸出等。3. 1遺傳操作方式及其參數(shù)的設(shè)定,對于遺傳算法包括的選擇算子、交叉算子、變異算子、交叉概率、變異概率、遺傳算法種群規(guī)模、遺傳算法終止代數(shù)、染色體編碼方式、適應(yīng)值函數(shù)、被測程序的輸入值類型及取值范圍、測試路徑輸入、實(shí)驗(yàn)執(zhí)行次數(shù)等,如果是隨機(jī)法則包括種群規(guī)模、最大運(yùn)行代數(shù)、實(shí)驗(yàn)執(zhí)行次數(shù)等;可以根據(jù)測試人員或是科研人員的實(shí)際需要進(jìn)行設(shè)定,如果不重新設(shè)定,則采用系統(tǒng)的初始設(shè)定方式和參數(shù)執(zhí)行相應(yīng)的操作。3. 2測試數(shù)據(jù)的生成方法包括改進(jìn)的遺傳算法和隨機(jī)法。遺傳算法需要首先隨機(jī)生成初始種群,然后重復(fù)做以下操作解碼進(jìn)化個(gè)體,運(yùn)行被測程序,檢查是否有種群個(gè)體穿越目標(biāo)路徑,若有則記錄該個(gè)體,刪除找到的目標(biāo)路徑, 如果沒達(dá)到終止條件,計(jì)算個(gè)體適應(yīng)值,執(zhí)行選擇、交叉、變異操作,得到新的種群。直到生成了全部目標(biāo)路徑的測試數(shù)據(jù)或者達(dá)到了最大運(yùn)行代數(shù),算法結(jié)束。解碼最優(yōu)個(gè)體,得到測試數(shù)據(jù)。本發(fā)明中提供了多種個(gè)體編碼方式和適應(yīng)值計(jì)算方法、選擇方式、交叉方式、變異方式,可供用戶自由選擇。隨機(jī)法不進(jìn)行進(jìn)化操作,每一代都是隨機(jī)生成測試數(shù)據(jù),運(yùn)行被測程序,檢查是否有穿越目標(biāo)路徑的測試數(shù)據(jù),如果有則記錄該數(shù)據(jù)并刪除找到的目標(biāo)路徑,如果生成了全部目標(biāo)路徑的測試數(shù)據(jù)或是達(dá)到最大運(yùn)行代數(shù)則結(jié)束算法。3. 3生成的測試數(shù)據(jù),在輸出窗口以表格形式輸出。詳細(xì)給出每條目標(biāo)路徑對應(yīng)的測試數(shù)據(jù),以及生成該數(shù)據(jù)的運(yùn)行代數(shù),生成所有測試數(shù)據(jù)所需要的運(yùn)行時(shí)間等具體信息。本發(fā)明提供了一種面向路徑的軟件測試數(shù)據(jù)進(jìn)化生成系統(tǒng),該系統(tǒng)能夠根據(jù)用戶需求,應(yīng)用遺傳算法生成軟件測試所需要的測試數(shù)據(jù),提供了多種遺傳操件的方式可供用戶選擇,并設(shè)計(jì)了隨機(jī)法作為對比來驗(yàn)證遺傳算法的優(yōu)良性能。本發(fā)明在測試系統(tǒng)界面有針對不同被測程序的插裝、客戶需求設(shè)置、遺傳算法參數(shù)設(shè)置、隨機(jī)法參數(shù)設(shè)置等一系列設(shè)置操作。通過上述系統(tǒng)界面的參數(shù)設(shè)置,將這些參數(shù)傳遞給后臺執(zhí)行用戶指定命令的響應(yīng)函數(shù),可方便的應(yīng)用遺傳算法去執(zhí)行已經(jīng)插裝完成的被測程序,生成用戶需求的軟件測試數(shù)據(jù)。運(yùn)用本發(fā)明系統(tǒng),不僅使得軟件測試效率的大大提高,也節(jié)約了軟件開發(fā)的大量資源,更為國家相關(guān)計(jì)劃和工程的可信軟件研發(fā)提供了技術(shù)支持,促進(jìn)我國軟件業(yè)的發(fā)展。


圖1是本發(fā)明采用的遺傳算法在面向路徑的軟件測試數(shù)據(jù)生成流程圖;圖2是本發(fā)明采用的隨機(jī)法在面向路徑的軟件測試數(shù)據(jù)生成流程圖;圖3是本發(fā)明采用的遺傳算法在面向路徑的軟件測試數(shù)據(jù)生成界面示意圖;圖4是本發(fā)明采用的隨機(jī)法在面向路徑的軟件測試數(shù)據(jù)生成界面示意具體實(shí)施例方式為了使本發(fā)明的目的、特征、和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)例對本發(fā)明的實(shí)施方式作進(jìn)行詳細(xì)的說明。本發(fā)明可用于眾多通用或者專用的計(jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如個(gè)人計(jì)算機(jī)、 服務(wù)器計(jì)算機(jī)、手持設(shè)備或者便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、包括以上任何系統(tǒng)或者設(shè)備的分布式計(jì)算機(jī)環(huán)境等等。在實(shí)際應(yīng)用中,對軟件進(jìn)行測試之前,軟件測試人員首先對被測試程序進(jìn)行分析?,F(xiàn)在計(jì)算機(jī)高級語言有很多種,同樣功能的軟件也可以用不同的計(jì)算機(jī)語言來實(shí)現(xiàn),這就給該系統(tǒng)的兼容性帶來了困難;本發(fā)明是使用VC++6. 0系統(tǒng)開發(fā)出來的,現(xiàn)在僅考慮了使用C和C++語言編寫的被測程序代碼的問題,因此本發(fā)明適用于 C或C++程序的測試數(shù)據(jù)生成。本發(fā)明中,基于遺傳算法的路徑覆蓋測試數(shù)據(jù)生成方法流程圖見參考圖1,面向路徑的遺傳算法測試數(shù)據(jù)生成系統(tǒng)運(yùn)行實(shí)例見參考圖3,具體包括以下步驟步驟101 對被測程序進(jìn)行分析,主要對被測程序輸入變量進(jìn)行分析。對應(yīng)被測程序的一個(gè)測試數(shù)據(jù)(或稱為測試用例),可能包含多個(gè)分量,每個(gè)分量可能是各種類型,如整型、實(shí)型、或者是布爾型等,因此輸入變量包括輸入個(gè)數(shù)、輸入類型、輸入值范圍。通過對被測程序結(jié)構(gòu)分析,獲取被測程序輸入變量信息。步驟102 被測程序的控制流程圖(CFG)是根據(jù)被測程序的結(jié)構(gòu)特征生成的,在本系統(tǒng)中,其能夠指導(dǎo)用戶生成軟件測試所需要的目標(biāo)路徑。任何一個(gè)被測程序的結(jié)構(gòu)都可以用控制流圖CFG = (V, E,entry, exit)表示,V是節(jié)點(diǎn)的集合,表示語句,E是邊集,表示語句間可能的控制流向,entry是唯一的源節(jié)點(diǎn),對應(yīng)程序的開始語句,exit是唯一的匯節(jié)點(diǎn),對應(yīng)程序的結(jié)束語句。步驟103 根據(jù)被測程序的控制流程圖(CFG),選擇需要生成測試數(shù)據(jù)的目標(biāo)路徑,并對目標(biāo)路徑進(jìn)行編碼。在本發(fā)明中,目標(biāo)路徑的表示是采用的赫夫曼編碼方式,赫夫曼編碼是以分支節(jié)點(diǎn)的執(zhí)行情況表示路徑,若分支語句的真分支采用1表示,假分支采用0 表示,那么,該程序的一個(gè)路徑就可以用二叉樹的葉結(jié)點(diǎn)的赫夫曼編碼表示。根據(jù)目標(biāo)路徑編碼設(shè)計(jì)適應(yīng)值函數(shù),有效改進(jìn)了測試數(shù)據(jù)的生成效率。步驟104 測試系統(tǒng)管理界面即本系統(tǒng)的界面,包含了三個(gè)子步驟,其分別是被測程序插裝、輸入輸出處理、外部變量處理。子步驟1041 被測程序的插裝是為了動態(tài)的獲取被測程序的運(yùn)行狀態(tài),在程序中插入一些檢查語句,通過這些檢查語句的執(zhí)行得到程序的運(yùn)行特征數(shù)據(jù);本系統(tǒng)由于路徑編碼的特殊形式,在對被測程序插裝中只對分支語句進(jìn)行插裝,大大簡化了插裝工作。子步驟1042 輸入輸出的處理包含被測程序的導(dǎo)入、被測程序的編輯操作、生成測試數(shù)據(jù)的輸出等部分。另外還包括對文件或程序的打開、保存、另存為、編輯、打印等一系列的操作處理。子步驟1043 外部變量的處理主要是對系統(tǒng)中軟件測試數(shù)據(jù)生成方法的選擇設(shè)置,還包含對系統(tǒng)本身的設(shè)置操作。步驟105 客戶的測試參數(shù)設(shè)置是指在應(yīng)用遺傳算法之前應(yīng)給予響應(yīng)函數(shù)的一些執(zhí)行命令。在測試系統(tǒng)管理界面中,包含了大多數(shù)的參數(shù)設(shè)置,包括遺傳算法的選擇算子、 交叉算子、變異算子、交叉概率、變異概率、遺傳算法種群規(guī)模、遺傳算法終止代數(shù)、染色體編碼方式、適應(yīng)值函數(shù)、被測程序的輸入、實(shí)驗(yàn)執(zhí)行次數(shù)等等,這些設(shè)置的參數(shù)將傳遞給響應(yīng)函數(shù)以使其能夠執(zhí)行相應(yīng)的操作。種群規(guī)模是遺傳算法必需的參數(shù)之一,遺傳算法從一組隨機(jī)產(chǎn)生的初始解出發(fā), 稱它們?yōu)椤胺N群”,開始對它們進(jìn)行搜索,種群中的每個(gè)個(gè)體包含問題的一個(gè)解。種群規(guī)模的大小直接影響著遺傳算法的運(yùn)行性能。由于本發(fā)明是面向?qū)嶒?yàn)的系統(tǒng),與實(shí)際相結(jié)合,因此在本發(fā)明中,遺傳算法的種群規(guī)模設(shè)置的參數(shù)范圍在1至200之間,并且該參數(shù)范圍能夠滿足實(shí)際需求。終止代數(shù)是遺傳算法運(yùn)行結(jié)束條件的一個(gè)參數(shù),它表示遺傳算法運(yùn)行到指定的進(jìn)化代數(shù)之后就停止,并將當(dāng)前種群中最佳個(gè)體作為所求問題的最優(yōu)解輸出。另一個(gè)算法的終止條件是算法搜索到所有的目標(biāo)路徑并生成了相應(yīng)的測試數(shù)據(jù)。在本發(fā)明中,根據(jù)實(shí)際需求,遺傳算法的終止代數(shù)設(shè)置范圍是在2000代以內(nèi)。
染色體編碼方式是應(yīng)用遺傳算法時(shí)首要解決的問題,也是實(shí)現(xiàn)遺傳算法的關(guān)鍵步驟,編碼方式在很大程度上決定了進(jìn)化種群的遺傳操作方法及其效率,因此本發(fā)明的實(shí)用性及其性能優(yōu)劣也直接在編碼方式上顯示出來。遺傳算法交替地在解空間和編碼空間中工作,通過適應(yīng)值函數(shù)作用于編碼空間,遺傳算法可以選擇較優(yōu)的編碼,而編碼空間又可以通過解碼過程映射到解空間,獲得較優(yōu)的解。在本發(fā)明中,根據(jù)軟件測試的實(shí)際需求,在本系統(tǒng)中提供了以下3種編碼方式二進(jìn)制編碼方式、格雷碼編碼方式、實(shí)數(shù)編碼方式。(1) 二進(jìn)制編碼方式是遺傳算法中最常用的一種編碼方式,它使用的編碼符號集是由二進(jìn)制符號0和1所組成的二值符號集{0,1},它構(gòu)成的個(gè)體基因型是一個(gè)二進(jìn)制編碼符號串。假定某一參數(shù)的取值范圍是[Umin,Umax],那么我們用長度為1的二進(jìn)制編碼符號串來表示該參數(shù),若某一個(gè)體的編碼是X A1Iv1Iv2. .. b2bi,對應(yīng)的解碼公式是
K/min+(‘~x2/—1Wrmax-VminM2C1),該編碼方式容易簡單,比較易于理解。(2)格雷碼編碼方式是二進(jìn)制編碼方式的一種變形,其連續(xù)的兩個(gè)整數(shù)所對應(yīng)的編碼值僅僅只有一個(gè)碼位是不同的,其它碼位完全相同,因此它可以與二進(jìn)制編碼相互轉(zhuǎn)換,具有提高遺傳算法局部搜索能力的作用。(3)實(shí)數(shù)編碼方式是指個(gè)體的每個(gè)基因值用某一范圍內(nèi)的一個(gè)浮點(diǎn)數(shù)表示,個(gè)體的編碼長度等于其輸入變量的個(gè)數(shù),因?yàn)檫@種編碼方式使用的是輸入變量的真實(shí)值,所以也叫真實(shí)值編碼方式,具有計(jì)算方便,精度較高的特點(diǎn)。適應(yīng)值函數(shù)的選取是遺傳算法中最關(guān)鍵的問題,其可被看作是遺傳算法與實(shí)際問題相結(jié)合的接口,對遺傳算法的收斂速度和最終獲得的結(jié)果影響很大,因此把測試數(shù)據(jù)生成問題轉(zhuǎn)化為函數(shù)優(yōu)化問題的關(guān)鍵就是適應(yīng)值函數(shù)。本發(fā)明依據(jù)在現(xiàn)有的理論和實(shí)踐,在本系統(tǒng)中,遺傳算法應(yīng)用在軟件測試數(shù)據(jù)生成使用的適應(yīng)值函數(shù)有以下四種加權(quán)法,層接近度,分支距離、層接近度和分支距離的綜合,這四種適應(yīng)值函數(shù)設(shè)計(jì)方法基本上涵蓋了目前國內(nèi)外研究比較成熟的方法。(1)加權(quán)法假設(shè)解碼后的測試數(shù)據(jù)為X,以χ為被測試程序的輸入,穿越的路徑記為字符串P(X),字符串的位數(shù)記為Ip(X)U設(shè)此時(shí)目標(biāo)路徑還有n(t)個(gè),記第j條目標(biāo)路徑為Pj,j = 1,2, ...n(t),根據(jù)P(X)與?」的匹配程度,計(jì)算該個(gè)體的適應(yīng)值,記為f(x)。 記IpjI為目標(biāo)路徑Pj的編碼位數(shù),我們從左向右依次比較P(X)與Pj各位的編碼.記 dJk(p(x))為反映p(x)與Pj第k位編碼是否相同的量,如果相同,則令djk(p(x))為1 ;否則, 令djk(p(x))為0,這樣最多比較min(|p(x) |,|Pj|)次。在編碼按位比較的同時(shí),用計(jì)數(shù)器 mjk標(biāo)記P(X)與h比較到底k位時(shí)相同位的個(gè)數(shù),依次作為權(quán)值計(jì)算個(gè)體適應(yīng)值,個(gè)體χ針對目標(biāo)路徑h的適應(yīng)值函數(shù)表示如下(2)層接近度表示輸入變量所穿越路徑與目標(biāo)路徑的接近程度。假設(shè)以種群某一代個(gè)體χ為例,該個(gè)體對應(yīng)被測程序P的輸入變量,考慮計(jì)算個(gè)體針對第j條目標(biāo)路徑Pi的適應(yīng)值t(x),以h表示目標(biāo)路徑P」的節(jié)點(diǎn)個(gè)數(shù)。以χ為輸入,運(yùn)行被測程序P,所穿越的路徑記為Ρ(Χ),其穿越控制流程圖中節(jié)點(diǎn)為Ii1(X)A2(X),…,nk(x)。從第一個(gè)節(jié)點(diǎn)開始比較Pj與P(x),記相同節(jié)點(diǎn)的個(gè)數(shù)為ns(Pj,P(x))。容易理解,ns(Pj,P(x))反映了兩條路徑的層接近度,該值越大,說明P」越接近P (χ),從而個(gè)體X的質(zhì)量也就越高。為了方便進(jìn)化個(gè)體的比較,通過除以rdfns(Pj,ρ (χ))標(biāo)量化到^,1],這時(shí)的~( 」,P (χ))就是傳統(tǒng)意義上的層接近度。然后令適應(yīng)值函數(shù)f」(x) = l-ns(Pj,p(X),則f」(x)越小越好,當(dāng)f」(x) =0 時(shí)表示個(gè)體χ穿越路徑即為目標(biāo)路徑。 (3)分支距離反映輸入變量要想穿越目標(biāo)路徑的分支,離滿足分支語句前件的距離。這里采用分支函數(shù),分支函數(shù)是根據(jù)分支謂詞表達(dá)式的類型來確定具體值。比如需要計(jì)算分支距離的節(jié)點(diǎn)上條件語句為xopy,其中op可能為>,<,彡,彡,=,興等,用& (χ)表示目標(biāo)路徑h第j個(gè)分支所對應(yīng)的分支函數(shù),那么分支距離的定義根據(jù)具體情況可以表示如下
權(quán)利要求
1.面向路徑的軟件測試數(shù)據(jù)進(jìn)化生成系統(tǒng),其特征如下軟件測試系統(tǒng)管理模塊,是被測程序的選擇、插裝、輸入處理以及外部變量處理等一系列設(shè)置操作,是通過一個(gè)交互式界面來實(shí)現(xiàn)的。被測程序分析操作模塊,實(shí)現(xiàn)了通過對被測程序的內(nèi)部分析,得出被測程序的輸入數(shù)據(jù)類型、被測程序的控制流圖、進(jìn)一步得到針對路徑覆蓋準(zhǔn)則的目標(biāo)路徑等。軟件測試數(shù)據(jù)生成模塊,主要使用遺傳算法生成穿越目標(biāo)路徑的測試數(shù)據(jù),本系統(tǒng)對傳統(tǒng)遺傳算法進(jìn)行了改進(jìn),生成測試數(shù)據(jù)的效率較高,還提供了隨機(jī)法生成穿越目標(biāo)路徑的測試數(shù)據(jù)作為對比。本模塊包括遺傳算法和隨機(jī)法執(zhí)行過程中所需要的參數(shù)設(shè)置、執(zhí)行過程、結(jié)果輸出等。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述軟件測試系統(tǒng)管理模塊包括(1)被測程序插裝是指為了動態(tài)的獲取某一數(shù)據(jù)在程序中的運(yùn)行狀態(tài),在程序中插入一些檢查語句,通過這些檢查語句的執(zhí)行并輸出程序的運(yùn)行特征數(shù)據(jù)。本系統(tǒng)主要針對被測程序中的分支語句進(jìn)行插裝。(2)輸入處理包含被測程序的導(dǎo)入、被測程序的編輯操作等部分。另外還包括對文件或程序的打開、保存、另存為、編輯、打印等一系列的操作處理。(3)外部變量處理是對系統(tǒng)中軟件測試數(shù)據(jù)生成方法的選擇設(shè)置,還包含對系統(tǒng)本身的設(shè)置操作。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述被測程序分析操作模塊包括(1)被測程序的輸入值個(gè)數(shù)、輸入值類型及其范圍是應(yīng)用遺傳算法生成測試數(shù)據(jù)的重要條件。不同的被測程序輸入值個(gè)數(shù)不同、輸入值類型及取值范圍也不會相同。(2)程序的控制流程圖(CFG)是根據(jù)被測程序的結(jié)構(gòu)特征來生成的,其能夠指導(dǎo)用戶生成軟件測試所需要的目標(biāo)路徑。被測程序的結(jié)構(gòu)可用控制流圖CFG = (V,E,entry, exit) 表示,V是語句節(jié)點(diǎn)的集合,E是邊集,表示語句間可能的控制流向,entry是唯一的源節(jié)點(diǎn), 對應(yīng)程序的開始語句,exit是唯一的匯節(jié)點(diǎn),對應(yīng)程序的結(jié)束語句。(3)針對用戶選擇的目標(biāo)路徑,將其表示成編碼形式,本發(fā)明使用的編碼是基于赫夫曼編碼的形式,由0、1代碼組成,對于任何一個(gè)分支語句,如果路徑選擇真分支,則用1表示, 選擇假分支則用0表示,這樣路徑編碼能保證任何一個(gè)目標(biāo)路徑的編碼都不是其他編碼的前綴。
4.如權(quán)利要求1或3所述的系統(tǒng),其特征在于,所述軟件測試數(shù)據(jù)生成模塊包括(1)遺傳操作方式及其參數(shù)的設(shè)定,對于遺傳算法包括的選擇算子、交叉算子、變異算子、交叉概率、變異概率、遺傳算法種群規(guī)模、遺傳算法終止代數(shù)、染色體編碼方式、適應(yīng)值函數(shù)、被測程序的輸入值類型及取值范圍、測試路徑輸入、實(shí)驗(yàn)執(zhí)行次數(shù)等,如果是隨機(jī)法則包括種群規(guī)模、最大運(yùn)行代數(shù)、實(shí)驗(yàn)執(zhí)行次數(shù)等;可以根據(jù)測試人員或是科研人員的實(shí)際需要進(jìn)行設(shè)定,如果不重新設(shè)定,則采用系統(tǒng)的初始設(shè)定方式和參數(shù)執(zhí)行相應(yīng)的操作。(2)測試數(shù)據(jù)的生成方法包括改進(jìn)的遺傳算法和隨機(jī)法。遺傳算法需要首先隨機(jī)生成初始種群,然后重復(fù)做以下操作解碼進(jìn)化個(gè)體,運(yùn)行被測程序,檢查是否有種群個(gè)體穿越目標(biāo)路徑,若有則記錄該個(gè)體,刪除找到的目標(biāo)路徑,如果沒達(dá)到終止條件,計(jì)算個(gè)體適應(yīng)值,執(zhí)行選擇、交叉、變異操作,得到新的種群。直到生成了全部目標(biāo)路徑的測試數(shù)據(jù)或者達(dá)到了最大運(yùn)行代數(shù),算法結(jié)束。解碼最優(yōu)個(gè)體,得到測試數(shù)據(jù)。本發(fā)明中提供了多種個(gè)體編碼方式和適應(yīng)值計(jì)算方法、選擇方式、交叉方式、變異方式,可供用戶自由選擇。隨機(jī)法不進(jìn)行進(jìn)化操作,每一代都是隨機(jī)生成測試數(shù)據(jù),運(yùn)行被測程序,檢查是否有穿越目標(biāo)路徑的測試數(shù)據(jù),如果有則記錄該數(shù)據(jù)并刪除找到的目標(biāo)路徑,如果生成了全部目標(biāo)路徑的測試數(shù)據(jù)或是達(dá)到最大運(yùn)行代數(shù)則結(jié)束算法。(3)生成的測試數(shù)據(jù),在輸出窗口以表格形式輸出。詳細(xì)給出每條目標(biāo)路徑對應(yīng)的測試數(shù)據(jù),以及生成該數(shù)據(jù)的運(yùn)行代數(shù),生成所有測試數(shù)據(jù)所需要的運(yùn)行時(shí)間等具體信息。
全文摘要
本發(fā)明開發(fā)出一套面向路徑的軟件測試數(shù)據(jù)進(jìn)化生成系統(tǒng),該系統(tǒng)不僅能夠根據(jù)用戶選擇的測試路徑,使用遺傳算法自動生成穿越目標(biāo)路徑的測試數(shù)據(jù),而且在使用遺傳算法生成測試數(shù)據(jù)的過程中,提供了多種可供選擇的遺傳算法個(gè)體編碼方式、適應(yīng)值計(jì)算方法、選擇方式、交叉方式、變異方式等,方便用戶根據(jù)不同類型的被測程序選擇不同的測試數(shù)據(jù)生成方法,另外本系統(tǒng)還提供了傳統(tǒng)隨機(jī)法的測試數(shù)據(jù)生成方法作為對比,真正實(shí)現(xiàn)軟件測試數(shù)據(jù)自動化生成。運(yùn)用本發(fā)明系統(tǒng),不僅使得軟件測試效率的大大提高,也節(jié)約了軟件開發(fā)的大量資源,更為國家相關(guān)計(jì)劃和工程的可信軟件研發(fā)提供了技術(shù)支持,促進(jìn)我國軟件業(yè)的發(fā)展。
文檔編號G06F11/36GK102331966SQ20111000489
公開日2012年1月25日 申請日期2011年1月10日 優(yōu)先權(quán)日2011年1月10日
發(fā)明者任麗娜, 吳川, 姚香娟, 鞏敦衛(wèi), 張婉秋, 張巖, 羅永金 申請人:中國礦業(yè)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
罗定市| 育儿| 齐河县| 玛纳斯县| 林州市| 垦利县| 株洲市| 连江县| 定南县| 马山县| 雷山县| 鄂温| 长顺县| 麟游县| 攀枝花市| 兴化市| 尤溪县| 博罗县| 广平县| 浦东新区| 遂宁市| 五华县| 陆丰市| 集贤县| 广水市| 唐山市| 安义县| 汝阳县| 青浦区| 裕民县| 从化市| 新邵县| 元江| 罗甸县| 澄城县| 防城港市| 读书| 犍为县| 全州县| 徐汇区| 中超|