[發(fā)明專利]基于路徑覆蓋軟件測試的測試用例自動(dòng)生成方法有效
| 申請(qǐng)?zhí)枺?/td> | 201710766422.3 | 申請(qǐng)日: | 2017-08-30 |
| 公開(公告)號(hào): | CN107590073B | 公開(公告)日: | 2021-03-30 |
| 發(fā)明(設(shè)計(jì))人: | 黃翰;劉方青;顏學(xué)明 | 申請(qǐng)(專利權(quán))人: | 華南理工大學(xué) |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 廣州粵高專利商標(biāo)代理有限公司 44102 | 代理人: | 何淑珍 |
| 地址: | 510640 廣*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 路徑 覆蓋 軟件 測試 自動(dòng) 生成 方法 | ||
1.基于路徑覆蓋軟件測試的測試用例自動(dòng)生成方法,其特征在于,包括以下步驟:
(a)對(duì)輸入的被測測試程序分析功能對(duì)應(yīng)的輸入、輸出并且通過分析程序中存在的判斷、循環(huán)分支得到控制流圖CFG,并對(duì)需要覆蓋的路徑進(jìn)行編碼;
(b)根據(jù)測試問題的實(shí)際輸入、輸出數(shù)據(jù)的類型和范圍確定問題編碼;
(c)通過對(duì)步驟(a)中得到了控制流圖CFG和步驟(b)中根據(jù)具體測試問題輸入確定的問題編碼,以及預(yù)設(shè)的計(jì)算分支距離的方法得到計(jì)算一個(gè)測試用例評(píng)估值的適應(yīng)值函數(shù);
(d)在測試用例的取值范圍內(nèi),使用均勻分布的方式隨機(jī)初始化種群;
(e)以步驟(d)中得到的種群,使用差分進(jìn)化算法(DE)和收斂速度控制器(CSC)以及步驟(c)中得到的適應(yīng)值函數(shù)更新迭代種群;
選取差分進(jìn)化算法(DE)來迭代種群,差分進(jìn)化算法迭代公式為:vi=y(tǒng)i+F*(yj-yk),其中vi是得到的新測試用例,而yi是差分進(jìn)化前的舊測試用例,yj和yk是從種群所有解決方案中隨機(jī)選中的兩個(gè)測試用例;在上述計(jì)算完成之后,接下來進(jìn)行差分進(jìn)化算法(DE)的交叉操作,生成一個(gè)[0,1]之間的隨機(jī)數(shù)rand,如果rand的大小小于預(yù)設(shè)的交叉概率Pc,那么就保留新的解,如果rand的大小大于預(yù)設(shè)的交叉概率Pc,那么就舍棄剛剛求得的解,保留以前的解;在差分進(jìn)化算法進(jìn)行迭代更新的同時(shí),通過收斂速度控制器(CSC)來控制DE算法的收斂速度,在判斷DE算法收斂速度太慢的時(shí)候進(jìn)行相關(guān)維度的動(dòng)態(tài)步長搜索操作,加快算法收斂速度,在判斷DE算法收斂速度太快的時(shí)候進(jìn)行初始化種群部分維度操作,減緩算法收斂速度;其中動(dòng)態(tài)步長搜索操作方法如下:在一個(gè)設(shè)定的維度的范圍內(nèi)進(jìn)行大步長搜索,找到其中適應(yīng)值最好的位置,并以此位置進(jìn)行更小范圍內(nèi)的搜索,直到步長小于預(yù)設(shè)值,此時(shí),在這個(gè)小于預(yù)設(shè)值的范圍內(nèi)進(jìn)行窮舉,找到適應(yīng)值最高的點(diǎn);并依據(jù)數(shù)據(jù)新建該維度動(dòng)態(tài)步長搜索后得到的新種群個(gè)體;
收斂速度控制器(CSC)的減速算子如下,添加一個(gè)區(qū)域擊中次數(shù)統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu),每次在程序運(yùn)行之前,將程序輸入變量的范圍進(jìn)行分區(qū),具體為:測試用例X的第i個(gè)維度取值范圍是[1,100],將其平均分成10個(gè)區(qū)域,并統(tǒng)計(jì)每一個(gè)區(qū)域的擊中次數(shù),每次進(jìn)行收斂速度控制器(CSC)的減速操作的時(shí)候,選擇測試用例的每個(gè)維度擊中次數(shù)最少的區(qū)域,并進(jìn)行初始化;
(f)將步驟(d)、(e)中種群個(gè)體里,覆蓋被測試程序目前未被覆蓋路徑的測試用例記錄下來;
(g)檢測是否滿足差分進(jìn)化算法的迭代終止條件:如果不滿足條件,則跳回步驟(e)繼續(xù)執(zhí)行;如果滿足條件,則輸出記錄的覆蓋對(duì)應(yīng)路徑的測試用例集合。
2.根據(jù)權(quán)利要求1所述基于路徑覆蓋軟件測試的測試用例自動(dòng)生成方法,其特征在于:步驟(a)中,對(duì)輸入的被測程序采用單元測試的測試方法,對(duì)于各個(gè)功能單元分析對(duì)應(yīng)功能單元的輸入、輸出以及判斷、循環(huán)分支,畫出功能單元的控制流圖CFG;并依據(jù)控制流圖CFG確定所有路徑的編碼,首先將測試程序匯總所有的判斷、循環(huán)分支進(jìn)行編號(hào),設(shè)為1~K,設(shè)定路徑為一個(gè)長度為N的字符串,如果路徑經(jīng)過第k個(gè)分支判斷節(jié)點(diǎn),那么該路徑的第k位的值為字符“1”或者字符“0”,字符“1”表示路徑走的是No方向,字符“0”表示路徑走的是Yes方向,如果未經(jīng)過第k個(gè)分支判斷節(jié)點(diǎn),則可使用字符“N”表示,通過這種方式對(duì)路徑進(jìn)行編碼,所有的路徑都能用一個(gè)長度為N的字符串表示。
3.根據(jù)權(quán)利要求1所述基于路徑覆蓋軟件測試的測試用例自動(dòng)生成方法,其特征在于:步驟(b)中,分析被測試程序的輸入、輸出數(shù)據(jù)類型和范圍,確定具體問題的編碼,具體包括:對(duì)于數(shù)值型的數(shù)據(jù)變量,需要確定數(shù)據(jù)具體是整數(shù)還是浮點(diǎn)數(shù),并且設(shè)定其取值范圍;如果變量的類型是字符型,使用[0,255]范圍內(nèi)的整數(shù)表示一個(gè)ASCII碼符號(hào),而一個(gè)長度為m的字符串就可使用m個(gè)[0,255]范圍內(nèi)的整數(shù)表示;如果變量是枚舉類型,其中枚舉選擇的數(shù)量是k,使用[1,k]范圍內(nèi)的整數(shù)來表示一個(gè)輸入的測試用例;對(duì)于輸入、輸出是上述類型的組合的情況,只需要組合上述輸入、輸出的類型,就可得到一個(gè)測試用例。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華南理工大學(xué),未經(jīng)華南理工大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710766422.3/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測;錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測試作故障硬件的檢測或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測試或調(diào)試防止錯(cuò)誤
- 路徑搜索系統(tǒng)、路徑搜索終端和路徑搜索方法
- 路徑計(jì)算方法、路徑計(jì)算單元及路徑計(jì)算系統(tǒng)
- 路徑顯示裝置、路徑顯示方法、路徑顯示程序及路徑顯示系統(tǒng)
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法及路徑搜索程序
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法以及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法以及路徑搜索程序
- 路徑搜索裝置、路徑搜索系統(tǒng)及路徑搜索方法
- 路徑輸出方法、路徑輸出系統(tǒng)和路徑輸出程序
- 路徑評(píng)價(jià)裝置、路徑評(píng)價(jià)系統(tǒng)、路徑評(píng)價(jià)方法以及路徑評(píng)價(jià)程序
- 一種基于應(yīng)用軟件散布的軟件授權(quán)與保護(hù)方法及系統(tǒng)
- 一種用于航空機(jī)載設(shè)備的軟件在線加載系統(tǒng)及方法
- 軟件構(gòu)建方法、軟件構(gòu)建裝置和軟件構(gòu)建系統(tǒng)
- 惡意軟件檢測方法及裝置
- 一種基于軟件基因的軟件同源性分析方法和裝置
- 軟件引入系統(tǒng)、軟件引入方法及存儲(chǔ)介質(zhì)
- 軟件驗(yàn)證裝置、軟件驗(yàn)證方法以及軟件驗(yàn)證程序
- 使用靜態(tài)和動(dòng)態(tài)惡意軟件分析來擴(kuò)展惡意軟件的動(dòng)態(tài)檢測
- 一種工業(yè)控制軟件構(gòu)建方法和軟件構(gòu)建系統(tǒng)
- 可替換游戲軟件與測驗(yàn)軟件的裝置與方法





