[發(fā)明專利]含隨機數(shù)軟件測試數(shù)據(jù)生成問題的優(yōu)化模型及進化求解有效
| 申請?zhí)枺?/td> | 201410139311.6 | 申請日: | 2014-04-08 |
| 公開(公告)號: | CN103902455A | 公開(公告)日: | 2014-07-02 |
| 發(fā)明(設(shè)計)人: | 姚香娟;鞏敦衛(wèi);王文亮;李彬;張功杰;田甜 | 申請(專利權(quán))人: | 中國礦業(yè)大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 221116 江*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 隨機數(shù) 軟件 測試數(shù)據(jù) 生成 問題 優(yōu)化 模型 進化 求解 | ||
1.含隨機數(shù)軟件測試數(shù)據(jù)生成問題的優(yōu)化模型及進化求解,其特征在于如下步驟:?
步驟1.1:提出含隨機數(shù)軟件測試充分性準則,保障每個測試目標被測試數(shù)據(jù)集覆蓋的概率大于設(shè)定的閾值;?
步驟1.2:給出含隨機數(shù)軟件測試數(shù)據(jù)生成問題的隨機優(yōu)化模型,保障測試數(shù)據(jù)滿足給定的測試充分性準。?
步驟1.3:設(shè)計了一種個體適應(yīng)值的近似計算方法,用遺傳算法來對隨機性軟件測試數(shù)據(jù)生成問題進行進化求解。?
2.權(quán)利要求1中步驟1.1所述的含隨機數(shù)軟件測試充分性準則,其特征在于本發(fā)明對給定的測試目標(語句,分支,路徑等)集,在程序的輸入空間尋找測試數(shù)據(jù)集,使得以該測試數(shù)據(jù)集為輸入運行程序時,每個測試目標被執(zhí)行的概率達到給定的閾值。這樣,對于內(nèi)部含有隨機數(shù)軟件,避免了測試數(shù)據(jù)覆蓋目標語句受隨機數(shù)影響帶來的不確定性。?
例如,以下列程序片段為例:?
如果選取測試數(shù)據(jù)集{-18,-27,-10,-23,-2,-15,-9,15,3,5,19,19},就可以保證每個目標被覆蓋的概率至少為0.9,而且對目標語句1和2,平均被覆蓋的次數(shù)為5×0.5=2.5;目標語句3平均被覆蓋的次數(shù)為7×0.3=2.1;目標語句4平均被覆蓋的次數(shù)為7×0.7=4.9。雖然得到的測試數(shù)據(jù)集不能保證每個測試目標一定會被覆蓋,但可以保證每個測試目標被覆蓋的概率大于設(shè)定的閾值。?
3.權(quán)利要求1中步驟1.2所述的含隨機數(shù)軟件測試數(shù)據(jù)生成問題的隨機優(yōu)化模型,其特征在于給出了目標函數(shù)和約束條件,從而保證可以保障滿足給定的測試充分性準則。?
設(shè)被測程序為G,程序G的的輸入變量分別為x1,x2,…,xl,則程序G的輸入向量X=(x1,x2,…,xl),G包含m個測試目標λ1,λ2,…,λm,是一個包含n個測?試數(shù)據(jù)的集合。若以{X1,X2,…,Xn}為輸入數(shù)據(jù)運行程序,每個測試目標被覆蓋的概率至少為q,則稱該測試數(shù)據(jù)集的可信度為q。對給定的閾值1-α,{X1,X2,…,Xn}是滿足測試準則1的測試數(shù)據(jù),當且僅當其可信度q≥1-α。另外,q的值越大,該測試數(shù)據(jù)集就越接近測試充分性準則1的要求。因此,測試數(shù)據(jù)集{X1,X2,…,Xn}的可信度是需要進行優(yōu)化的目標。?
設(shè)以Xi為輸入運行程序時,Tj被執(zhí)行的概率為那么運行測試數(shù)據(jù)集{X1,X2,…,Xn}的所有元素后,Tj至少被執(zhí)行一次的概率:測試數(shù)據(jù)集{X1,X2,…,Xn}的可信度為我們就把q的值作為決策變量S={X1,X2,…,Xn}的目標函數(shù),記為f(X1,X2,…,Xn),即?
對給定的測試目標T1,T2,…,Tm,滿足步驟1.1的準則的測試數(shù)據(jù)生成問題優(yōu)化模型如下:?
其中。
4.權(quán)利要求1中步驟1.3所述對隨機性軟件測試數(shù)據(jù)生成問題的進化求解方法,其特征在于以下步驟:?
步驟4.1:個體表示方法?
在遺傳算法中,所求問題的一個可能解稱為一個個體。在本發(fā)明中,優(yōu)化問題(3)的決策變量是一個包含n個測試數(shù)據(jù)的集合{X1,X2,…,Xn},因此,使用進化方法對該問題進行求解時,{X1,X2,…,Xn}就是一個個體,其中每個Xi對應(yīng)被測程序的一個輸入。設(shè)Xi=(xi1,xi2,…,xil),那么個體{X1,X2,…,Xn}可以用一個n×s的矩陣來表示:?
其中,每個輸入變量xij采用實數(shù)或二進制編碼,根據(jù)輸入變量的類型決定。?
步驟4.2:個體適應(yīng)值?
個體{X1,X2,…,Xn}的目標函數(shù)如式(3)所示。但是,一般情況下要確定的值并不容易,因此,直接利用式(3)計算個體適應(yīng)值不太現(xiàn)實。下面給出個體適應(yīng)值的近似計算方法。?
我們由以下引理和定理:?
引理1其中0≤xi≤1,i=1,…,n。?
定理1其中
令表示隨機從{X1,X2,…,XN}中任取一個測試數(shù)據(jù)運行程序后能夠覆蓋測試目標Tj的概率,則
由定理1,個體{X1,X2,…,XN}的可信度因此,可以用q'代替q作為對個體{X1,X2,…,XN}的評價。但是,q'的真值依然不好得到。下面給出q'的估計值。?
設(shè)Yj表示集合{X1,X2,…,XN}中能夠覆蓋測試目標Tj的元素個數(shù)。令?
則Yj=Z1j+Z2j+…+ZNj。故?
因此,是的無偏估計量,記為fe(Tj)。我們可以用fe(Tj)作為對p(Tj)的估計值。這樣,個體{X1,X2,…,XN}的適應(yīng)值就轉(zhuǎn)化為?
步驟4.3:遺傳操作?
(1)交叉算子?
這里采用單點交叉的方式。設(shè)M1和M2是兩個個體,隨機選擇兩個隨機數(shù)H和L,其中1≤H≤n,1≤L≤l。令?
其中,M(i,j)表示矩陣M的第i行第j列元素。這樣,可以得到兩個新個體M'1和M'2。?
(2)變異算子?
這里采用兩種變異方式,一種是常規(guī)變異,一種是拉伸變異。?
常規(guī)變異:設(shè)M是一個個體,隨機選擇四個隨機數(shù)H1、H2、L1和L2,其中1≤H1,H2≤n,1≤L1,L2≤l。對滿足H1≤i≤H2且L1≤j≤L2的個體xij實施變異。具體的變異方式根據(jù)個體的編碼方式?jīng)Q定。?
拉伸變異:設(shè)M={X1,X2,…,Xn}是一個包含n個輸入的測試數(shù)據(jù)集,隨機生成k個新的輸入數(shù)據(jù)Xn+1,…,Xn+k,令M'={X1,X2,…,Xn,Xn+1,…,Xn+k},則稱這種變異方法為拉伸變異,而M'是由M經(jīng)過拉伸變異得到的新個體,k稱為拉伸強度。?
需要指出的是,本算法中,每一代個體都要實施常規(guī)變異,而拉伸變異用于改變測試數(shù)據(jù)集的容量,只有在合適的時機才會實施該種變異。?
(3)選擇算子?
本算法中的個體是一個集合。為了減少計算量并加快算法收斂速度,我們采用貪心方式對個體進行選擇。設(shè)第i代種群為Popi,經(jīng)過交叉、變異后得到的新個體組成的集合為Pop'i,令Total=Popi∪Pop'i,再從Total中選擇最好的個體組成下一代種群Popi+1。?
步驟4.4:算法終止條件?
對給定的閾值1-α,由4.2節(jié)討論可知,要使個體{X1,X2,…,Xn}的可信度q≥1-α,只需令則得到?
(1-(1-p)n)≥1-α?
解得:?
也就是說,對給定的n,要使個體{X1,X2,…,Xn}的可信度達到給定的閾值1-α,只要保證?這里
基于以上討論,算法的終止條件為:達到給定的閾值,或者算法運行到最大代數(shù)。?
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國礦業(yè)大學,未經(jīng)中國礦業(yè)大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410139311.6/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:測試腳本處理裝置、系統(tǒng)及方法
- 下一篇:配置松縮管帶的雨衣
- 一種基于應(yīng)用軟件散布的軟件授權(quán)與保護方法及系統(tǒng)
- 一種用于航空機載設(shè)備的軟件在線加載系統(tǒng)及方法
- 軟件構(gòu)建方法、軟件構(gòu)建裝置和軟件構(gòu)建系統(tǒng)
- 惡意軟件檢測方法及裝置
- 一種基于軟件基因的軟件同源性分析方法和裝置
- 軟件引入系統(tǒng)、軟件引入方法及存儲介質(zhì)
- 軟件驗證裝置、軟件驗證方法以及軟件驗證程序
- 使用靜態(tài)和動態(tài)惡意軟件分析來擴展惡意軟件的動態(tài)檢測
- 一種工業(yè)控制軟件構(gòu)建方法和軟件構(gòu)建系統(tǒng)
- 可替換游戲軟件與測驗軟件的裝置與方法





