[發明專利]基于神經網絡的模糊測試方法及計算機可讀存儲介質有效
| 申請號: | 202011459487.1 | 申請日: | 2020-12-11 |
| 公開(公告)號: | CN112463638B | 公開(公告)日: | 2022-09-20 |
| 發明(設計)人: | 肖喜;李毅;夏樹濤;鄭海濤;江勇;陸孺牛 | 申請(專利權)人: | 清華大學深圳國際研究生院 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06N3/04;G06N3/08 |
| 代理公司: | 深圳新創友知識產權代理有限公司 44223 | 代理人: | 孟學英 |
| 地址: | 518055 廣東省深圳市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 神經網絡 模糊 測試 方法 計算機 可讀 存儲 介質 | ||
1.一種基于神經網絡的模糊測試方法,其特征在于,包括如下步驟:
S1:改進模糊測試工具中的邊的哈希計算過程使得每條所述邊的哈希值不同,得到改進后的模糊測試工具;
S2:基于所述改進后的模糊測試工具生成的覆蓋信息作為訓練集對神經網絡進行訓練;
S3:依據臨近邊信息挑選出測試用例,程序邊對,利用訓練完成的所述神經網絡計算出輸出神經元對輸入的梯度,并根據所述梯度的絕對值的大小確定輸入中的關鍵字節,從而對關鍵字節進行變異生成測試用例集合;
S4:使用所述測試用例集進行模糊測試;
步驟S1中,哈希計算時,為每一個到達塊選定一系列參數,而不是每一條邊;具體如下:
對于只有一個前驅的基本塊,直接為這條邊分配一個與其他邊的哈希值不沖突的數值,并存儲在該邊的到達塊中,而不用使用Fmul公式為邊計算一個哈希值;
對于有多個前驅的基本塊,動態地計算基本塊中的參數值;在這一計算過程,將那些使用Fmul公式能夠計算出唯一哈希值的基本塊歸為已解決的基本塊集合中,否則,歸為未解決的基本塊集合;
對于未解決集合中的基本塊,為其邊A→B引入另一個哈希算法:
Fhash(cur,prev):hash_table_lookup(cur,prev)
其中,prev和cur分別是基本塊A和B的編號值,通過該哈希算法構建一個哈希表,對所有以未解決的基本塊結尾的邊使用不同于其他邊的唯一哈希值。
2.如權利要求1所述的基于神經網絡的模糊測試方法,其特征在于,所述神經網絡是前向全連接神經網絡,采用所述前向全連接神經網絡對程序分支行為進行近似。
3.如權利要求2所述的基于神經網絡的模糊測試方法,其特征在于,采用了基于梯度的搜索變異模式對關鍵字節進行變異,具體包括:
S31:依據所述梯度的絕對值降序排列輸入中的字節;
S32:將所述字節劃分成多個組,同一組中的字節在變異階段一同變異;對于所述組中的字節數量從2開始,然后指數增長該字節數量;在執行過程中,進行多輪迭代,每輪迭代依據每個字節對應梯度的符號選定變異方向,每次變異的步長為1。
4.如權利要求1-3任一所述的基于神經網絡的模糊測試方法,其特征在于,還包括:
S5:在所述模糊測試的過程中,所述神經網絡的行為與預期行為不匹配時,對所述神經網絡進行精煉;
所述精煉包括:當前訓練集中能觸發程序新分支的種子先被保留,在新的所述測試用例生成后,識別出能達到新的程序覆蓋的測試用例,將所述測試用例與保留的種子合并形成新的訓練集;
所述神經網絡根據所述新的訓練集重新訓練,學習新的程序狀態,更新網絡結構。
5.一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1-4任一所述方法的步驟。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學深圳國際研究生院,未經清華大學深圳國際研究生院許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011459487.1/1.html,轉載請聲明來源鉆瓜專利網。





