[發明專利]一種面向修訂的條件判定覆蓋的測試數據自動生成方法有效
| 申請號: | 201410271281.4 | 申請日: | 2014-06-17 |
| 公開(公告)號: | CN104050082B | 公開(公告)日: | 2017-04-26 |
| 發明(設計)人: | 陳鑫;歐建生;成新;周巖;鞠秀芳 | 申請(專利權)人: | 南京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 江蘇銀創律師事務所32242 | 代理人: | 孫計良 |
| 地址: | 210046 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 修訂 條件 判定 覆蓋 測試數據 自動 生成 方法 | ||
技術領域
本發明涉及一種測試數據自動生成方法,特別涉及自動化單元測試中修改的條件判定覆蓋測試的測試用例數據的生成方法。
背景技術
測試技術是保障軟件系統質量最重要和最有效的方法之一,一直以來也是工業界保證軟件系統正確性最主要的手段。受計算能力和時間、空間資源的限制,測試無法窮盡軟件所有可能的執行,實踐中,各種測試充分度準則被用于驅動和評估測試過程。因此,面向給定的測試充分度準則,如何生成對應的測試用例集合,以驅動程序的執行覆蓋相應的結構,成為測試過程中最關鍵的技術環節。目前測試用例的設計基本依靠人工手動完成,不僅費時費力,而且用例的有效性也難以得到保證。如何自動地為各種測試充分度準則生成有效的測試用例,已成為測試技術研究的熱點問題之一。
面向修改的條件/判定的測試覆蓋(簡稱:MC/DC,即Modified Condition/Decision Coverage)準則,是應用較廣泛的一種白箱測試充分度準則,尤其適用于安全要求較高的航空航天、醫藥等領域。它要求設計足夠的測試用例,使得判定中每個條件的所有可能取值至少執行一次,同時每個判定的所有可能判定結果至少執行一次,并且每個條件能夠獨立地影響判定。條件獨立地影響判定是指在其他條件不變的前提下僅改變條件的值而使判定結果改變。舉例來說,判定語句S=A and(B or C),其中,A、B、C為判定中的條件。A、B、C的取值有8種組合,用集合為:{TTT,TTF,TFT,TFF,FTT,FTF,FFT,FFF},其中,每個條件能夠獨立地影響判定的情形有:{TTF,TFF,TFT,FFT}。也即,當保持AC為TF時,B的取值可以獨立確定判定語句S的值;當AB為TF時,C的取值可以獨立確定判定語句S的值;當BC為FT時,A的取值可以獨立確定判定語句S的值。
理論研究已經證明,不存在通用有效的算法可以為程序中任意判定的任意條件取值組合生成測試輸入。已有的研究工作可分為基于靜態分析和基于動態執行兩類方法。基于靜態分析的方法無法有效的處理判定中的非線性約束條件,動態方法容易陷入局部最優點而無法發現可行的輸入,它們在處理實際問題時存在很大的局限性。
科學和工程問題中,通常可以采用諸如采樣、實驗等方法獲得若干離散的數據,根據這些數據,我們往往希望得到一個逼近于實際函數或者更加密集的離散方程與已知數據相吻合,這個過程叫做擬合。線性擬合是比較簡單的擬合方式,數據點使用直線進行連接,結果是一個多邊形。線性擬合簡單易用,它可以在比較短的時間內得到逼近函數,縮短了算法自動生成測試數據的前期工作量。
發明內容
本發明所要解決的問題是為待測試源程序自動構建測試數據(測試用例),使得在這些測試數據下執行待測試源程序能夠覆蓋該待測試源程序的所有判定的可能取值及判定中所有條件的可能取值并表明每個條件獨立影響判定,完成修改的條件判定覆蓋測試。
為解決上述問題,本發明采用的方案如下:
一種面向修訂的條件判定覆蓋的測試數據自動生成方法,包括分析待測源程序獲得待測源程序所有路徑的集合和所有分支節點的集合BS以及分支節點的關聯路徑集的集合的步驟,該方法還包括對分支節點集BS中的每一分支節點B執行以下步驟:
S1:根據B的關聯路徑集中各路徑上位于B(含B)之前的各分支節點的各個條件,構建關于輸入變量向量X的分支函數Fk,i,j(X);所述輸入變量向量X為所述待測源程序輸入變量構成的向量;所述分支函數Fk,i,j(X)表示路徑k上第i個分支節點的第j個條件的分支函數;所述路徑k經過分支節點B;
S2:構建初始的輸入向量集U;所述初始的輸入向量集U至少包含兩個輸入向量;
S3:計算以輸入向量集U中每個輸入向量作為待測源程序的輸入執行待測源程序時與所述分支節點B關聯的各路徑k上位于B之前(含B)的每個分支節點上的各分支函數Fk,i,j(X)獲得分支函數值的集合V以及最遠公共分支節點mk;當執行待測源程序時的執行路徑經過分支節點B時計算B的判定和判定中各個條件的取值;假如輸入向量集U中存在一個輸入向量執行待測源程序時執行路徑經過分支節點B且使B的判定或判定中某個條件產生新的取值,則記錄該輸入向量作為所述分支節點B的一個測試數據;假如所述分支節點B的測試數據集覆蓋了B的判定及判定中各條件所有可能取值并且每個條件都獨立影響了判定,則返回該測試數據集作為所述分支節點B的測試數據集;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410271281.4/2.html,轉載請聲明來源鉆瓜專利網。





