[發明專利]一種面向solidity語言的測試用例生成方法有效
| 申請號: | 201910341716.0 | 申請日: | 2019-04-26 | 
| 公開(公告)號: | CN110096439B | 公開(公告)日: | 2020-07-14 | 
| 發明(設計)人: | 張鵬程;于佳男;吉順慧;肖鋒 | 申請(專利權)人: | 河海大學 | 
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06N3/12 | 
| 代理公司: | 南京蘇高專利商標事務所(普通合伙) 32204 | 代理人: | 孟紅梅 | 
| 地址: | 211100 江*** | 國省代碼: | 江蘇;32 | 
| 權利要求書: | 查看更多 | 說明書: | 查看更多 | 
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 solidity 語言 測試 生成 方法 | ||
1.一種面向solidity語言的測試用例生成方法,其特征在于,包括如下步驟:
(1)根據solidity語言的變量類型、流程控制語句、函數體結構、內部函數require以及函數修改器的使用對solidity語言實現的待測試智能合約程序進行分析得到對應的控制流圖CFG;
(2)根據步驟(1)的CFG圖遍歷各節點信息,判斷存在uint型變量使用的節點是否存在整數溢出錯誤的安全性問題,若存在,則將存在整數溢出錯誤的節點標記;
(3)根據步驟(1)的CFG圖遍歷各節點信息,統計出程序中所有數值型變量的定義-使用對,記為dup,且若步驟(2)中判斷結果為存在整數溢出錯誤,則將包含步驟(2)中的標記節點存在的變量的定義-使用對統計出來,記為dup’;
(4)根據步驟(3)統計出的dup,針對程序中的所有數值型變量隨機生成初始的包含若干組測試用例的測試用例集;測試用例的組數根據遺傳算法中的種群大小確定;
(5)設計遺傳算法中的適應度函數用于選取較優的測試用例以驅動算法執行;其中測試用例的適應度值為測試用例覆蓋的dup的數量與覆蓋的涉及到整數溢出錯誤的dup’數量的加權和與所有dup的數量與所有dup’數量加權和的比值;
(6)根據步驟(5)中的適應度函數以及算法的執行界限,求得步驟(4)中初始測試用例的適應度值,開始遺傳算法迭代執行,得到算法內最優結果。
2.根據權利要求1所述的面向solidity語言的測試用例生成方法,其特征在于,所述步驟(1)中分析待測試程序的CFG圖時,考慮程序中地址型變量的使用,考慮由地址變量引出無符號整型變量的定義;考慮程序中require和assert條件判斷語句的使用,將require語句作為一個if條件結構語句進行處理;將函數修改器看作是函數調用的一種形態,遇到函數體時,首先分析該函數是否使用了函數修改器,若使用了函數修改器則先轉入函數修改器,根據函數修改器內容進行節點間的連接關系轉移。
3.根據權利要求1所述的面向solidity語言的測試用例生成方法,其特征在于,所述步驟(2)中包括如下步驟:
(21)根據步驟(1)得到的CFG分析程序中是否存在整數溢出錯誤,具體為:遍歷CFG圖節點,對于存在uint型變量使用的節點,其中變量使用包括執行加、減、乘或除計算,判斷在變量使用節點前是否已有對相應變量操作結果進行溢出判斷的語句節點,若沒有,則判定程序會出現整數溢出錯誤;
(22)若存在整數溢出錯誤,對CFG中涉及到引發整數溢出錯誤的變量操作節點進行標注。
4.根據權利要求3所述的面向solidity語言的測試用例生成方法,其特征在于,所述步驟(3)中包括如下步驟:
(31)根據CFG圖,逐節點分析語句信息,找到程序中存在的數值型變量的定義節點;
(32)針對步驟(31)中找到的每一個變量的定義節點,找到其對應的所有使用節點;
(33)結合步驟(31)、(32),得到程序中存在的變量的定義-使用對:dup=(d,u,v),計算其總數量,記為n;其中v表示某一變量,d表示v的某一定義節點,u表示v的某一使用節點;
(34)結合步驟(22)與步驟(31)、(32)的內容得到存在整數溢出問題的變量定義-使用對,這里用dup’表示,計算其總數量,記為m,若步驟(22)中結果為沒有整數溢出問題,即未做標記,則此處m統計值為0。
5.根據權利要求1所述的面向solidity語言的測試用例生成方法,其特征在于,所述步驟(4)中針對程序中的所有數值型變量隨機生成初始的包含4組測試用例的測試用例集。
6.根據權利要求1所述的面向solidity語言的測試用例生成方法,其特征在于,所述步驟(5)中,適應度函數公式其中pi表示第i個測試用例覆蓋的dup的數量,qi表示第i個測試用例覆蓋的涉及到整數溢出錯誤的dup’數量,n表示程序中所有dup的數量,m表示程序中所有涉及到整數溢出錯誤的dup’數量,ε為權重參數,0ε1。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于河海大學,未經河海大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910341716.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:軟件測試方法及相關裝置
 - 下一篇:一種日志處理方法及裝置
 





