蒙特卡羅方法在黑盒測試用例生成中的應用

2022-11-10 00:57:04 字數 5550 閱讀 2932

應用技■

太原科技

2010年第1期

0蚴觸s@d廈@腳

_* 善|j蠢鰱

囂辯簦謄瓣g菪l爹巍露囂§囂|囂粕囂囂巍|舞 ¥§《 瓣# 囂l善霧贛

文章編號

李路軍,謝彥峰

(蘭州交通大學電子與資訊工程學院,甘肅蘭州 730070)

摘要:測試用例的生成方法是軟體測試技術研究的核心內容,利用蒙特卡羅方法自動產生隨機數並將其對映到測試用例的輸入域上。可以提高軟體測試的準確性和正確率、縮短軟體測試的週期。

關鍵詞:蒙特卡羅方法;測試用例生成;軟體測試技術中圖分類號:tp311

文獻標誌碼:a

軟體測試的實質就是在輸入域中選擇有代表性是蒙特卡羅方法的理論基礎,其基本手段是隨機抽的輸人資料來驅動被測程式。觀察程式的執行結

樣,對於那些難以進行的或條件不滿足的試驗而

果.驗證該結果與期望結果是否一致,然後做相應言。是一種極好的替代方法。在應用時,要先產生

的糾錯、調整和評價il】。因而,軟體測試的關鍵和一

種均勻分布的隨機數序列,然後再設法轉換成特

難點是如何生成測試用例。不同的測試資料發現程

定要求的概率分布的隨機數序列,以此作為數字模

序錯誤的能力差別很大,為了提高測試效率降低測

擬試驗的輸人變數序列進行模擬求解。基本步驟

試成本.應該選用高效的測試資料。以往測試員手為:一是建立概率模型,即對所研究的問題構造一

工測試軟體時,根據直覺、經驗設計和選擇測試用

個符合其特點的概率模型。二是產生隨機數序列,

例.因而帶有較大的盲目性和不確定性,同時軟體作為系統的抽樣輸入,進行大量的數字模擬試驗,

設計人員的個性及傾向使得他們選擇的測試用例僅

得到大量的模擬試驗值。產生隨機數的數學方法,

能測試所熟悉或印象較深的錯誤。而許多其他錯誤

最常用的有同餘法、平方取中法以及易位指令加法不能檢測出來。因此,若想提高測試用例選擇的有等;常用的隨機數檢驗方法有引數檢驗、均勻性檢效性,對它生成的綜合策略研究就顯得至關重要。驗、獨立性檢驗、組合規律檢驗和遊程檢驗等。

三測試用例的選取實質上就是將程式的輸入域資料進是對模擬試驗結果進行統計處理(計算頻率、均值行有效地戈q分.從而匯出高效的測試用例[21。

等特徵值),給出所求問題的解和解的精度的估計。在蒙特卡羅方法中,使用隨機

2測試策略

數進行統計實驗。以求得統計特徵值(如均值、概

設計測試用例要經歷劃分等價類和選取測試用率等)作為待解問題的數值解[3】。筆者把該方法運例兩步,首先要進行等價類劃分。之後在此基礎上用於軟體測試中。

加速了軟體測試用例選擇的進通過蒙特卡羅模擬方法隨機選取測試用例,這樣可程。提高了發現錯誤的可能性,因而在一定程度上以使選取的測試用例組合覆蓋程式的全部輸入域,避免了盲目性和不確定性,簡化了對測試結果的統更具有一般性和代表性。

計.是一種較為理想的可靠性測試方法。2.1等價類劃分

1蒙特卡羅方法基本原理

劃分等價類的原則:有效等價類是指對於程式蒙特卡羅方法也稱隨機模擬法,其基本思想是的規格說明來說,是合理的、有意義的輸人資料構為了求解數學、物理、工程技術或生產管理等方面成的集合。無效等價類是指對於程式的規格說明來的問題。

首先建立乙個與求解有關的概率模型或隨說,是不合理的、無意義的輸入資料構成的集合。機過程,使它的引數等於所求問題的解,然後通過

通常劃分等價類的常用方法有5種。

對模型或過程的觀察或抽樣試驗來計算所求引數的

1)如果輸人條件規定了取值範圍或輸入值的統計特徵,最後給出所求解的近似值 。概率統計

個數,則可以確立乙個有效等價類和兩個無效等價

收稿日期修回el期:2009—12一o1

作者簡介:李路軍(1983-),男,山西陽城人,在讀碩士,主要從事軟體測試研究

83■用技術

太原科技 2010年第1期

1f執0國嗍島@0—可匡@啪

類。中,也應該假設每乙個測試用例被選擇的概率也是相等的。隨機測試是基於子域的測試,這有別於傳統的隨機測試的盲目性,更有助於找出軟體缺陷。

由於在子域的基礎上引進了隨機測試的思想.隨機測試又不同於單純的劃分測試,對於被測軟體.基於子域的隨機測試生成的測試用例,覆蓋了程式的所有測試用例

2)如果輸入條件規定了輸人值的集合,或者是規定了「必須符合什麼」的條件,這時可確立一

個有效等價類和乙個無效等價類。

3)如果輸入條件是乙個布林量。則可以確定

乙個有效等價類和乙個無效等價類。

4)如果規定了輸人資料的一組值。而且程式要對每個輸入值分別進行處理。這時可為每乙個輸入值確立乙個有效等價類,此外針對這組值確立乙個無效等價類,它是所有不允許的輸入值的集合。

5)如果規定了輸人資料必須遵守的規則,則可以確立若干個有效等價類(符合規則)和若干個

2.3構造測試用例集

測試用例的數量和質量決定軟體測試的成本和有效性。測試資料選擇的目的是為了縮小測試用例集的範圍,同時保持測試資料的有效性,以提高測

試效率,降低測試成本。乙個完整的測試用例不僅包括用例的輸人資料,還包括根據輸人資料做出的預期結果,這是為了在測試結束之後進行對比來判斷軟體輸出的正確與否,進而定位軟體缺陷位置。在傳統軟體測試中已經有這方面的研究,包括劃分策略、基於啟發式的演算法、最小覆蓋等。

用傳統的測試方法生成的測試用例進行覆蓋,生成的初始測

無效等價類(從不同角度違反規則)。2-2輸人資料的概率特『生分析

經過等價類劃分之後。程式的輸入域就被劃分成多個子集。這些子集是互相不覆蓋的子域,這樣做的目的是使測試者能在基於子域的輸入域上選擇

測試用例,它的結果集是關於整體域上的最好的代表閣。理想的劃分是將輸入域劃分成具有下列性質

試資料數量龐大,其執行需要花費相當多的時間。通過蒙特卡羅的隨機測試方法可以很好的解決此問

的子域.在每個子域中對每個元素.程式要麼產生正確的結果,要麼產生錯誤的結果,這樣的子域叫

題。蒙特卡羅測試方法的基本思想是:在測試流程建立的過程下,要先產生隨機抽樣值,即在給定運

做同種的子域。如果子域是同種的,則在測試過程中可以從每個子域中選擇乙個元素並執行程式以監測程式錯誤。

一行中各引數的統計分布規律的條件下,在計算機上產生符合其分布規律的隨機數抽樣值,這個過程稱為偽隨機數的模擬。在對這些生成的隨機數通過程式進行簡單地處理,組成初步的滿足澳lj試目標隨機數集,然後針對這個隨機數集。

採用貪心演算法、啟發式演算法或整數規劃進行精

個子域是一組測試用例的集合,每乙個子域

都可能是程式的輸入。在每乙個子域中,每乙個測試用例也都可能是程式的輸入i6]。軟體測試的目

的是盡可能地找到軟體的缺陷,為了盡可能找到軟

件中隱藏的缺陷或者錯誤,就必須生成客觀的,盡

簡.去掉一些冗餘的隨機數,生成最優隨機數集。結合測試用例的設計過程對這些隨機數進行處理,

可能反映整個輸入域特徵的測試用例用於程式的輸入。這樣最好的辦法就是基於子域的隨機測試,在

將生成的最優隨機數集對映到程式輸入資料集合上,就可得到滿足評判準則條件的測試用例集。3測試範例

限定條件和取值範圍內隨機選取乙個或一些測試用例,選取的用例就可以很好地覆蓋各種狀態;而人工選擇測試用例則不能滿足這樣的要求。用上述方法進行足夠的測試,則測試就是非常充分的。在隨機選取測試用例時,應該像實際應用那樣隨機產

下面舉例驗證以上理論.可以更好地了解本文

測試技術的優缺點,更能充分掌握該測試技術的思想和技巧。下面是對3個實數進行排序,並輸出結

生.絕對不能根據個人喜好進行挑選,避免出現人為干擾而導致測試的片面性。隨機選擇的問題是:果。在運算元

一、數二和數三中分別輸人3個實

數.在排序結果中存放這3個數的排序結果。執行

介面見第85頁圖1。

要求各種場景出現的概率相等,而在實際應用中有些情況出現的概率極低.隨機選擇時很可能選中,這種情況是人工選擇測試用例所做不到的。所以,在進行測試時,應該認為所有測試用例在輸入域上符合均勻分布。也就是說在測試過程中應該假設每

一針對上述的介面程式.按照構造測試用例集的敘述可知。程式的人口引數是3個實數.需要從外面輸入。程式的功能是對3個從外部輸入的資料從sign大排序,單純從入vi引數分析來看,可以將輸入域劃分4個等價類:

一是有效等價類:其中 ,

個子域被選擇的概率是相等的;在同乙個子域

84應用技●

太原科技 2010年第1期

d凹國s@0匡@∞

表1測試用例

隨機隨機

數1 數2

隨機數對

**結果

有無缺陷

提示:輸入非法數無

0.97

(】.713

提示:輸入非法數無

提示:輸入非法數

無(abe,一8.37,de)提示:輸入非法數無

(一一無(一

提示:輸入非法數

無圖1執行介面

一8.75,一無

y,是3個有效實數。二是第一無效等價類:將

,掉冗餘的資料得到測試用例。

4結論y,z中的乙個變為不符合實數規則的字串,

其他兩個是有效實數。三是第二無效等價類:只是將 ,y,z中的兩個變為不符合整數規則的字元

如何提高軟體的質量是軟體工程的乙個重要研究課題,而適當的測試工作是保證軟體質量的乙個重要措施 。筆者討論了生成測試用例集的乙個隨

串。四是第三無效等價類:將 ,y,中的3個全變為不符合整數規則的字串。

可以將這4個等價類對映到[0,1]區間上[0,0.25)對應有效等價類對應第一無效等價對應第二無效等價類;『0.75,1)對應第三無效等價類。然後隨機生成[0,1]區間上的隨機

機方法,並給出了應用此方法的具體例項。基於測試用例的生成過程,隨機產生多組測試用例,這樣

產生的每組測試用例涉及到了被測程式的各種邏輯,且達到了完全覆蓋性的目的。通過這種大量重複的隨機測試,提高了測試的準確度和自動化程

數對映到劃分好的等價類上。如果對映在有效等價類上,還要隨機生成有效等價類上的三元數對,可以隨機生成3個有效實數分別對應3個實數:如果

度。通過運用本演算法可以對測試用例集達到一定程度的化簡,從而可以減少執行和維護測試用例集的成本。

參考文獻:

對映在第一無效等價類上,先要確定哪個運算元是不符合實數規則的字串,可以隨機生成1到3上

【1】王立福.軟體工程[m】.北京:北京大學出版社,2002.【2l張海藩.軟體工程[m】.北京:人民郵電出版社,2002.【3 尹增謙.3]蒙特卡羅方法及應用u].物理與工程

45-49.

的任意乙個整數分別對應3個運算元,然後在隨機生成兩個有效的實數;如果對映在第二無效等價類上,也同樣隨機生成1到3上的任意乙個整數用以確定哪個保留有效實數,其他兩個變為不符合整數規則的字串;如果對映在第三無效等價類上.就

[4】陸銀根.用類同餘法產生隨機數及其檢驗ⅱ】.數理統計與

管理【5】聶長海,徐寶文.一種最小測試用例集生成方法ⅱ].計算機

學報一1695.

【6]朱海燕,軟體測試用例集縮減的乙個演算法田.微電子學與

計算機輸入3個不符合實數規則的字串。隨機生成的實

數可以限定在[_10,10]區間內。根據上述思想設

計的測試用例見表1。

本文觀點就是在等價類劃分好的基礎上在輸入域中隨機選擇測試用例,用以達到測試用例的全覆蓋。可以按照本文思想連續進行多次測試,然後去

【7】聶長海,徐寶文.基於接1:/引數的黑箱測試用例自動生成

演算法(責任編輯

梁志剛)85

黑盒測試用例設計方法總結

測試用例的設計方法 全 等價類劃分方法 一.方法簡介 1.定義 是把所有可能的輸入資料,即程式的輸入域劃分成若干部分 子集 然後從每乙個子集中選取少數具有代表性的資料作為測試用例。該方法是一種重要的,常用的黑盒測試用例設計方法。2.劃分等價類 等價類是指某個輸入域的子集合。在該子集合中,各個輸入資料...

黑盒測試用例練習題

1 准考證號碼 對招乾考試系統 輸入學生成績 子模組設計測試用例。招乾考試分三個專業,准考證號第一位為 號,如 1 行政專業,2 法律專業,3 財經專業。行政專業准考證號碼為 110001 111215 法律專業准考證號碼為 210001 212006 財經專業准考證號碼為 310001 31401...

實驗專案三黑盒測試用例設計

實驗名稱 因果圖法設計測試用例 實驗任務 有乙個自動售貨機軟體用於處理單價為1元5角錢的盒裝飲料,若投入1元5角硬幣,按下 可樂 雪碧 或 紅茶 按鈕,相應的飲料就會送出來。若投入的是2元硬幣,在送出飲料的同時退還5角硬幣,用因果圖法設計測試用例。實驗目的 1 掌握黑盒測試技術中的因果圖測試法的基本...