[發明專利]一種基于符號執行的帶反饋測試用例生成方法有效
| 申請號: | 201210219282.5 | 申請日: | 2012-06-29 |
| 公開(公告)號: | CN102736979A | 公開(公告)日: | 2012-10-17 |
| 發明(設計)人: | 顧慶;莊元;湯九斌;陳道蓄 | 申請(專利權)人: | 南京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 江蘇圣典律師事務所 32237 | 代理人: | 賀翔 |
| 地址: | 210000 江蘇省南*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 符號 執行 反饋 測試 生成 方法 | ||
1.一種基于符號執行的帶反饋測試用例生成方法,其特征在于包括以下步驟:
1)執行已有的測試用例并收集測試用例覆蓋信息;確定每個測試用例在執行時覆蓋的被測程序中的語句塊;匯總所有測試用例所覆蓋的語句塊,確定被測程序中尚未覆蓋的語句塊集合;
2)根據被測程序的控制流圖確定符號執行的覆蓋目標;覆蓋目標是被測程序中尚未覆蓋的某個語句塊;
3)對被測程序插樁,植入引導符號執行的控制代碼;控制代碼包括標記語句和判定語句;
4)從已有測試用例集中選擇合適的種子測試用例,用于啟動符號執行方法;
5)針對覆蓋目標應用符號執行方法生成新的測試用例;將新生成的多個測試用例補充到已有的測試用例集合中;
6)上述5個步驟迭代執行,直至達到給定的測試用例生成目標。
2.根據權利要求1所述的基于符號執行的帶反饋測試用例生成方法,其特征在于,上述步驟2)中根據被測程序控制流圖確定符號執行覆蓋目標的處理過程是:首先根據代碼控制結構,將被測程序語句塊組織成控制流圖???????????????????????????????????????????????,圖中的節點對應語句塊,邊代表語句塊執行順序;識別被測程序中每個函數/過程/方法中處于最高層次的子樹,定義為上層子樹;然后尋找覆蓋率最低的函數/過程/方法,在其對應的控制流圖中確定第一個沒有充分覆蓋的上層子樹;最后選擇該上層子樹中第一個沒有被覆蓋的語句塊,對應非控制節點作為本次符號執行的覆蓋目標。
3.根據權利要求1或2所述的基于符號執行的帶反饋測試用例生成方法,其特征在于,上述步驟3)中被測程序插樁以植入引導符號執行的控制代碼的處理過程是:首先確定覆蓋目標所在的函數/過程/方法,在其起始位置插入判定變量定義語句,判定變量的初值置為“false”;然后在覆蓋目標之前的位置插入判定變量賦值語句,將判定變量賦值為“true”;最后確定覆蓋目標所處的上層子樹,在上層子樹之后的位置插入控制符號執行的判定語句;在符號執行中,判定語句根據判定變量的取值決定是否繼續補充約束條件以求解更復雜的約束表達式。
4.根據權利要求2所述的基于符號執行的帶反饋測試用例生成方法,其特征在于,上述步驟4)中從已有測試用例集中選擇種子測試用例的處理過程是:首先從已有測試用例中篩選覆蓋了步驟2)中覆蓋目標的父節點的所有測試用例;令控制流圖中覆蓋目標所對應的節點為,父節點是中位于節點之前且直接與相連接的節點,父節點有且僅有一個;然后從這些測試用例中篩選對覆蓋目標所處之上層子樹的覆蓋程度最高的測試用例;最后在剩余的測試用例中選擇覆蓋語句塊總數最少的測試用例作為種子測試用例。
5.根據權利要求1或2所述的基于符號執行的帶反饋測試用例生成方法,其特征在于,上述步驟5)中針對覆蓋目標應用符號執行方法生成測試用例的處理過程是:首先根據覆蓋目標確定符號執行的入口,包括對應函數/過程/方法的名稱和參數列表;然后識別或選擇符號執行需要處理的輸入參數,即參數處理類型,符號執行無法處理的非數值參數必須作為常量,其他作為符號變量;根據種子測試用例為輸入參數賦初值并設置符號執行的配置信息;配置信息的具體內容取決于所采用的符號執行方法,其中的關鍵是符號執行入口和參數處理類型;最后以插樁程序為基礎驅動符號執行方法生成新的測試用例。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210219282.5/1.html,轉載請聲明來源鉆瓜專利網。





