[發明專利]一種基于Csmith隨機生成器生成C程序測試用例的方法及裝置在審
| 申請號: | 202211487167.6 | 申請日: | 2022-11-25 |
| 公開(公告)號: | CN115687154A | 公開(公告)日: | 2023-02-03 |
| 發明(設計)人: | 王麗一;武穎穎;胡夏暉;尉紅梅;姜軍;吳偉 | 申請(專利權)人: | 無錫江南計算技術研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 浙江千克知識產權代理有限公司 33246 | 代理人: | 汪丹琪 |
| 地址: | 214100 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 csmith 隨機 生成器 生成 程序 測試 方法 裝置 | ||
本發明提供一種基于Csmith隨機生成器生成C程序測試用例的方法及裝置,屬于C程序測試技術領域。該方法包括如下步驟:S1:獲取預設概率信息表,通過預設概率信息表獲取預設參數;S2:生成器根據預設參數進行初始化;S3:生成器基于初始化信息生成包括main函數、變量類型、其他函數的測試用例程序,在生成main函數時輸出測試用例程序的輔助信息;S4:過濾器對生成的程序片段進行安全檢查;S5:生成器在過濾器對所有程序片段檢查完畢后整理并輸出生成的測試用例程序,并根據生成的測試用例程序計算非指針全局變量的校驗和,并打印校驗和。本發明自動生成大量測試用例,可以高效地暴露更多的問題,并且可根據輸入進行定制化操作,節省人力成本。
技術領域
本發明涉及C程序測試技術領域,具體而言,涉及一種基于Csmith隨機生成器生成C程序測試用例的方法及裝置。
背景技術
使用手工編寫高級語言測試用例對編譯器進行測試往往不能發現一些隱藏的錯誤,為此,業界一直致力于隨機測試用例生成的研究。隨機生成測試用例的基本思想是針對程序的每個輸入變量的搜索空間而言,在每一變量的搜索空間內均隨機生成一個值,然后通過組合的方式形成一個測試用例。該方法簡單且時間消耗較低,但對于較為復雜的程序,隨機法生成的測試用例較難達到覆蓋標準。當前在生成測試用例時通過Csmith使用復雜的啟發式方法來避免生成具有未定義行為以及依賴于未指定行為的C程序。但是,Csmith有兩個不足:一是,由于Csmith的隨機性和保證生成的效率,有一定可能性不能終止,導致長時間無法生成測試用例;二是,Csmith對于用戶輸入的概率信息表有依賴性,用戶輸入不一定能夠高效的生成能發現錯誤的測試用例。
發明內容
為了解決上述問題,本申請實施例提供了一種基于Csmith隨機生成器生成C程序測試用例的方法及裝置。
第一方面,本申請實時例提供了一種基于Csmith隨機生成器生成C程序測試用例的方法,包括如下步驟:
S1:獲取預設概率信息表,通過預設概率信息表獲取預設參數;
S2:生成器根據預設參數進行初始化;
S3:生成器基于初始化信息生成包括main函數、變量類型、其他函數的測試用例程序,在生成main函數時輸出測試用例程序的輔助信息;
S4:過濾器對生成的程序片段進行安全檢查;
S5:生成器在過濾器對所有程序片段檢查完畢后整理并輸出生成的測試用例程序,并根據生成的測試用例程序計算非指針全局變量的校驗和,并打印校驗和。
優選的,步驟S1中具體包括:
S11:獲取概率信息表的所有屬性值;
S12:根據歷史數據對能高效生成測試用例的屬性值進行標記;
S13:對標記的屬性值進行聚類分析獲取預設概率信息表;
S14:判斷是否接收到輸入的用戶參數,如果判斷未接收到用戶參數,則將預設概率信息表中的屬性值作為預設參數,如果判斷接收到用戶參數,則通過預設概率信息表對用戶參數進行比對;
S15:如果用戶參數中包括預設概率信息表中的所有屬性值,則將用戶參數作為預設參數,如果用戶參數不包括預設概率信息表中的所有屬性值,則輸出輸入參數錯誤。
優選的,步驟S3中的變量類型包括簡單數據類型、未定義浮點型數據、結構體、聯合聲明、全局變量和向前聲明。
優選的,步驟S3中生成其他函數具體包括:隨機選擇返回值類型,收集指向信息和union信息,生成函數的參數列表,生成函數體,在生成函數體時收集當前環境的影響值、當前上下文環境、擴展的調用鏈表三類信息,在函數體中如果調用其他函數時為調用的函數定義函數參數并生成函數體。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于無錫江南計算技術研究所,未經無錫江南計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202211487167.6/2.html,轉載請聲明來源鉆瓜專利網。





