新四季網

一種聯合差異性隨機測試方法

2023-07-11 06:11:31

專利名稱:一種聯合差異性隨機測試方法
技術領域:
本發明屬於軟體測試領域尤其是自動化測試領域,涉及聯合差異性隨機測試技術CAT (Co-diversified rAndom Testing),用於高效率的生成測試用例集,從而實現對程序的有效測試,為一種聯合程序白盒和黑盒信息差異性的聯合差異性隨機測試方法。
背景技術:
隨機測試RT是一個簡單的自動化黑盒測試用例生成技術,容易實現,廣泛應用於原始碼和規格說明缺失的情景。RT產生測試用例由於完全隨機缺少目的性,只保證了測試的效率(Efficiency)而無法保證有效性(Effectiveness)。在眾多對RT的提高或改進的方法中,比較著名的是由T. Y. Chen等在2004年提出了的自適應隨機測試ART。同樣是黑盒測試技術,ART引入測試用例在輸入域上的歐幾裡得距離來衡量測試用例間的差異性,並通過這個差異性挑選隨機生成的測試用例來構造整個測試用例集,以增強隨機測試的有效性。符號執行是由自J.C.King在1976年提出的,其基本思想就是使用符號值而不是真實值來作為程序的輸入。符號執行中一個基本的概念就是路徑條件PC(PathCondition),路徑條件PC是一系列謂詞的析取(conjunction),輸入變量只有滿足一條路徑的PC條件,才能通過這條路徑。其中,構建PC非常具有挑戰性,即使一個分支語句只包含一個複雜的數據結構。而謂詞表達PI (Predicate Interpretation, PI)是一個PC的子表達式,一個分支的PI可以跳過其他分支語句簡單的獲得。

發明內容
本發明所要解決的技術問題是現有的測試用例生成方法中黑盒測試方法具有很高的效率,但是不能保證測試用例的有效性;白盒測試方法雖然能生成有效的測試用例,但是由於複雜性問題無法保證測試用例生成的效率。因此需要一種兼顧高效率和高有效性的測試用例生成技術。本發明的技術方案為一種聯合差異性隨機測試方法,對待測試程序,隨機生成測試用例,在其中挑選測試用例,得到最終測試用例集,包括以下步驟I)隨機生成初始測試用例集Tu = {t0};2)獲得待測程序的謂詞表達集合PI {Pl,P2,…,pn}首先使用開源工具Soot生成中間代碼的數據流圖,並使用反向數據流分析計算謂詞表達集合PI,即從數據流圖的出口沿數據流邊反向依次分析各個基本塊或每個語句,PI初始為空集,在分析過程中根據每個語句的傳遞函數fs增加或修改謂詞表達集合PI,對應處理如下a)如果語句s不是賦值語句也不是條件語句,則fs為單元函數,謂詞表達集合PI不變;b)如果語句s是一條條件語句,則將其中的謂詞語句加入到謂詞表達集合PI中fs (χ) = X U gens,其中gens表示這個條件語句中的謂詞集合,X表示原謂詞表達集合PI ;c)如果語句s是對變量V的賦值語句V = g(y1;y2,…),那麼用V的表達式替換謂詞集合中的所有變量V fs(pi (V)) = pi (g(y1;y2,…)),其中賦值語句v = g(y1;y2,…)
將變量V賦予關於變量Yi (i = 1,2,......)的表達式,g是關於變量Yi (i = 1,2,......)的
任意一個函數,pi (V)表示關於V的謂詞表達式,pi (g(y1 I2,…))表示將V替換為g(yp12,…)後的謂詞表達式;3)若沒有達到預先定義的測試標準,則繼續步驟4),否則結束,Tu就是最終的測試用例集,所述測試標準為測試人員根據測試要求預先設定的覆蓋程度,用百分比表示;4)隨機生成k個候選測試用例t1 t2, ···, tk,組成候選測試用例集Tr, Tr = It1,t2, ···, tk},對每一個候選測試用例& e Tr, i = 1,2,…k,計算bdi = min{B(ti, t」)}以及edi = miniEUytj)},其中t」e Tiubdi表示測試用例h到Tu中各個測試用例分支距離的最小值,edi表示測試用例\到Tu中各個測試用例的最小歐幾裡得距離;5)根據候選測試用例\到測試用例集Tu的分支距離和歐幾裡得距離,從候選測試用例集Tr中挑選一個測試用例用作為新的測試用例加入到測試用例集Tu中,具體為首先計算各個候選測試用例\與測試用例集Tu中測試用例的最小分支距離bdp優先選擇最小分支距離最大的測試用例,即若測試用例集Tu中不包含最小分支距離bdi最大的測試用例,則選用該用例,若測試用例集Tu中已包含,則選擇最小分支距離bdi第二大的測試用例,以此類推;若具有最小分支距離bdi最大值的測試用例有兩個以上,則判斷最小歐幾裡得距離θφ,優先選擇最小歐幾裡得距離edi最大的候選測試用例ti;若測試用例集Tu中已包含此測試用例,則選擇最小分支距離bdi第二大的測試用例,以此類推;將選擇的測試用例加入Tu中,回到步驟3),依此不斷選擇新的測試用例,直到滿足測試標準。步驟5)中,測試用例\到Tu中各個測試用例分支距離的最小值bdi的計算如下將候選測試用例\帶入謂詞表達集合PI中的每一個謂詞表達式,若其結果為真,則為1,否則為0,每一個測試用例得到一個長度為謂詞表達集合PI的元素數目的01序列;對測試用例集Tu中的每一個測試用例做同樣計算,得到測試用例集Tu中各測試用例的01序列,兩個不同測試用例之間的分支距離B(ti; tj)為其01序列的漢明距離,由此計算bdi ;測試用例\到Tu中各個測試用例的最小歐幾裡得距離喊的計算如下設測試用例\ = (v1; V2,…,vq), V,對應待測程序的第q個函數參數,測試用例集Tu中的測試用例\ = (B1, a2,…,aq),aq對應待測程序的第q個函數參數,則兩個測試用例的歐幾裡德距離為-.EitiJ) = ^(ν,-α,)2,由此計算edi。本發明通過PI識別隨機生成的測試用例之間在程序內部結構上的差異性,通過測試用例間的歐幾裡得距離來識別測試用例在輸入域上的差異性,然後聯合這二者的差異,從而高效率地生成有效的測試用例集。對於一個隨機生成的測試用例集Tr,對任意的ti e Tr,與每一個\ e Tu進行比較,計算每一個PI的值,以及由此得到的B(ti; tj);此外計算E(ti; tp,聯合B(ti; tj)和E(ti; tj)衡量測試用例\與已使用的測試用例間的差別,從而挑選更加有效的測試用例。 本發明為一種聯合差異性隨機測試技術CAT,與現有的隨機測試技術相比,在選擇測試用例時加入了程序的謂詞信息,從而在隨機生成的大量測試用例中挑選更加有效的測試用例,避免了盲目選擇。此外本發明的處理計算簡單,雖然加入了程序謂詞信息,但沒有加入所有的程序信息,避免了白盒測試中對程序的大量分析,如符號執行中路徑約束的計算,從而提高了生成測試用例的效率。綜上所述,本發明在避免大量計算的情況下,高效率的選擇高有效性的隨機測試用例,綜合了黑盒測試與白盒測試的優點,為現有的測試技術提供了新的思路。


圖I為本發明的流程示意圖。
具體實施例方式
如圖I,本發明的步驟如下I)隨機生成初始測試用例集Tu = {t0};2)獲得程序的謂詞表達集合PI {Pl,P2,…,pn}首先使用開源工具Soot (http://www. sable, mcgill. ca/soot/)生成中間代碼的數據流圖,並使用後向數據流分析計算謂詞表達集合PI,即從數據流圖的出口沿數據流邊反向依次分析各個基本塊或每個語句。程序中,每條語句的傳遞函數描述了這個語句的作用,每條語句的傳遞函數仁,謂詞表達集合PI初始為空集,在分析過程中根據每個語句的傳遞函數fs增加或修改謂詞表達集合PI,對應處理如下a)如果語句s不是賦值語句也不是條件語句,則fs為單元函數,謂詞表達集合PI不變;b)如果語句s是一條條件語句,則將其中的謂詞語句加入到謂詞表達集合PI中fs (χ) = X U gens,其中gens表示這個條件語句中的謂詞集合,χ表示原謂詞表達集合PI ;c)如果語句s是對變量V的賦值語句V = g(y1;y2,…),那麼用V的表達式替換謂詞集合中的所有變量V fs(pi (V)) = pi (g(y1;y2,…)),其中賦值語句v = g(y1;y2,…)
將變量V賦予關於變量Yi (i = 1,2,......)的表達式,g是關於變量Yi (i = 1,2,......)的
任意一個函數,pi (V)表示關於V的謂詞表達式,pi (g(y1 I2,…))表示將V替換為g(yp12,…)後的謂詞表達式;3)若沒有達到預先定義的測試標準,則繼續步驟4),否則結束,Tu就是最終的測試用例集,所述測試標準為測試人員根據測試要求預先設定的覆蓋程度,用百分比表示,如50%路徑覆蓋或50%條件覆蓋等;4)隨機生成k個候選測試用例t1; t2, ···, tk,組成候選測試用例集Tr, Tr = It1,t2, ···, tk},對每一個候選測試用例& e Tr, i = 1,2,…k,計算bdi = min{B(ti, t」)}以及edi = min{E(ti, t」)},其中t」e Tu, bdi表示測試用例h到Tu中各個測試用例分支距離的最小值,edi表示測試用例t到Tu中各個測試用例的最小歐幾裡得距離;計算方法如下將每一個候選測試用例t帶入謂詞表達集合PI中的每一個謂詞表達式,若其結果為真,則為1,否則為0,每一個測試用例得到一個長度為謂詞表達集合PI元素數值的01序列;同理,Tu中的每一個測試用例也具有這樣的01序列;兩個不同測試用例之間的分支距離為其01序列的漢明距離,歐幾裡得距離的大小通過下面的公式計算設測試用例h = (V1, V2, ···, vq) , Vq對應待測程序的第q個函數參數,另一測試用例tj = (B1, a2,…,aq),aq對應待測程序的第q個函數參數,則兩個測試用例的歐幾裡德距離為
權利要求
1.一種聯合差異性隨機測試方法,其特徵是對待測試程序,隨機生成測試用例,在其中挑選測試用例,得到最終測試用例集,包括以下步驟 1)隨機生成初始測試用例集Tu= {t0}; 2)獲得待測程序的謂詞表達集合PI:{P1,P2,...,pj 首先使用開源工具Soot生成中間代碼的數據流圖,並使用反向數據流分析計算謂詞表達集合PI,即從數據流圖的出口沿數據流邊反向依次分析各個基本塊或每個語句,PI初始為空集,在分析過程中根據每個語句的傳遞函數fs增加或修改謂詞表達集合PI,對應處理如下 a)如果語句s不是賦值語句也不是條件語句,則fs為單元函數,謂詞表達集合PI不變; b)如果語句s是一條條件語句,則將其中的謂詞語句加入到謂詞表達集合PI中fs(x)=X U gens,其中gens表示這個條件語句中的謂詞集合,x表示原謂詞表達集合PI ; c)如果語句s是對變量V的賦值語句V= g(y17y2,…),那麼用v的表達式替換謂詞集合中的所有變量V :fs(pi (V)) = pi (g(y1 I2, ···)),其中賦值語句V = g(y1; y2,…)將變量V賦予關於變量Yi (i = 1,2,......)的表達式,g是關於變量yji = 1,2,......)的任意一個函數,pi (V)表示關於V的謂詞表達式,pi (g(y1 I2,…))表示將V替換為g(yp12,…)後的謂詞表達式; 3)若沒有達到預先定義的測試標準,則繼續步驟4),否則結束,Tu就是最終的測試用例集,所述測試標準為測試人員根據測試要求預先設定的覆蓋程度,用百分比表示; 4)隨機生成k個候選測試用例Lt2,"^tk,組成候選測試用例集Tr,Tr = Itpt2,…,tk},對每一個候選測試用例h e Tr, i = 1,2,…k,計算bdi =以及θφ =min{E(ti, tj)},其中t」e Tu, bdi表示測試用例h到Tu中各個測試用例分支距離的最小值,ed,表示測試用例\到Tu中各個測試用例的最小歐幾裡得距離; 5)根據候選測試用例ti到測試用例集Tu的分支距離和歐幾裡得距離,從候選測試用例集Tr中挑選一個測試用例用作為新的測試用例加入到測試用例集Tu中,具體為首先計算各個候選測試用例\與測試用例集Tu中測試用例的最小分支距離bdp優先選擇最小分支距離最大的測試用例,即若測試用例集Tu中不包含最小分支距離bdi最大的測試用例,則選用該用例,若測試用例集Tu中已包含,則選擇最小分支距離bdi第二大的測試用例,以此類推;若具有最小分支距離bdi最大值的測試用例有兩個以上,則判斷最小歐幾裡得距離edp優先選擇最小歐幾裡得距離edi最大的候選測試用例ti;若測試用例集Tu中已包含此測試用例,則選擇最小分支距離bdi第二大的測試用例,以此類推;將選擇的測試用例加入Tu中,回到步驟3),依此不斷選擇新的測試用例,直到滿足測試標準。
2.根據權利要求I所述的一種聯合差異性隨機測試方法,其特徵是步驟5)中,測試用例\到Tu中各個測試用例分支距離的最小值bdi的計算如下 將候選測試用例\帶入謂詞表達集合PI中的每一個謂詞表達式,若其結果為真,則為、1,否則為0,每一個測試用例得到一個長度為謂詞表達集合PI的元素數目的01序列;對測試用例集Tu中的每一個測試用例做同樣計算,得到測試用例集Tu中各測試用例的01序列,兩個不同測試用例之間的分支距離B(ti; tj)為其01序列的漢明距離,由此計算bdi ; 測試用例\到Tu中各個測試用例的最小歐幾裡得距離edi的計算如下設測試用例ti= (v1; V2,…,V,),V,對應待測程序的第q個函數參數,測試用例集Tu中的測試用例h= (a1;a2,…,a,),a,對應待測程序的第q個函數參數, 則兩個測試用例的歐幾裡德距離為
全文摘要
一種聯合差異性隨機測試方法,通過PI識別隨機生成的測試用例之間在程序內部結構上的差異性,通過測試用例間的歐幾裡得距離來識別測試用例在輸入域上的差異性,然後聯合這二者的差異,高效率地生成有效的測試用例集,為一種結合黑盒測試技術和白盒測試技術的自動化隨機測試技術,本發明既改善了ART忽略程序結構所導致的測試用例冗餘問題,也緩解了符號執行中的PC路徑的複雜性問題,兼顧了軟體測試中測試用例生成的高效率和高有效性。
文檔編號G06F11/36GK102629229SQ20121005269
公開日2012年8月8日 申請日期2012年3月2日 優先權日2012年3月2日
發明者張智軼, 徐寶文, 時清凱, 陳振宇 申請人:南京大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀