[發明專利]一種應用改進遺傳算法的智能合約測試用例生成方法有效
| 申請號: | 202010579513.8 | 申請日: | 2020-06-23 |
| 公開(公告)號: | CN111797010B | 公開(公告)日: | 2022-09-23 |
| 發明(設計)人: | 張鵬程;于佳男 | 申請(專利權)人: | 河海大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06N3/00;G06N3/12;G06Q40/04 |
| 代理公司: | 南京蘇高專利商標事務所(普通合伙) 32204 | 代理人: | 孟紅梅 |
| 地址: | 210024 *** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 應用 改進 遺傳 算法 智能 合約 測試 生成 方法 | ||
本發明公開了一種應用改進遺傳算法的智能合約測試用例生成方法,針對部署運行在以太坊上的智能合約,基于源代碼獲取合約的控制流圖(CFG),遍歷CFG,統計合約中的定義?使用對(dup),并進一步劃分出與require語句執行相關的dup;在測試用例生成環節,對于生成的每一組測試用例,帶入執行插樁后的合約程序,為指導生成過程的進化,將遺傳算法中種群更新的思想以及粒子群優化算法中全局最佳(G_O)和粒子最佳(I_O)的概念結合使用、并對遺傳算法中父代種群的選擇策略進行改進,從而提高了有效測試用例的生成效率。本發明方法切實可行,生成的測試用例實現了較高的覆蓋率,且生成過程需要更少的迭代次數。
技術領域
本發明涉及一種智能合約測試用例生成方法,具體是以數據流測試為基礎,將遺傳算法與粒子群優化算法結合使用的測試用例生成方法,屬于軟件測試技術領域。
背景技術
近年來,一種新的底層技術——區塊鏈技術取得了迅猛發展,因其去中心化且不可篡改的特性,在金融、教育等多個領域受到很大的關注。以太坊做為區塊鏈的主流平臺之一,相較于以Bitcoin為代表的數字貨幣區塊鏈平臺,增加了智能合約的使用;且相比于更加企業化的Hyperledger平臺,以太坊因簡單、便捷且面向所有開發者的特點成為更多從事區塊鏈技術研究及相關應用開發人員的首選平臺。智能合約作為運行在以太坊上的通用程序,主要由一種名為Solidity語言編寫,該語言衍生于JavaScript、Python、C++,且具有自己的特性。智能合約的部署和使用使區塊鏈技術有了更廣闊的使用前景。
但Solidity語言作為一門較新的語言且運行環境不同于傳統軟件,因此對于大多數編程經驗不豐富的人員在編寫過程中極易出現編程錯誤導致合約不安全;另一方面,由于運行平臺——以太坊區塊鏈平臺的不可篡改的問題使得不能通過簡單的軟件升級來更新修復有問題的合約。這就使得在部署發布前對智能合約的測試變得尤為重要。目前,針對以太坊智能合約的安全測試已經有較多的研究。Tsankov等人開發了一個名為Securify的代碼分析工具,基于預定義的安全模式分析智能合約字節碼進而實現安全檢測;Tikhomirov等人實現了一個可擴展靜態分析工具Smartcheck,該工具基于他們總結歸納的21種安全漏洞進行了檢測。Liu等人采用模糊測試的思想通過將智能合約轉換為C++的程序實現重入漏洞的檢測;Liu等人基于以太坊智能合約的ABI規格說明書和自定義的測試規則實現了對7種安全問題的測試。
但上述研究都是基于智能合約中預定義錯誤類型進行檢測,隨著智能合約的應用場景越來越多,這些研究顯然不能滿足全部的測試需求,如功能完備性的測試。為進一步實現對智能合約的整體測試,Zhang等人提出了一種面向Solidity語言的測試用例生成方法,首次將遺傳算法用于Solidity語言智能合約的動態數據流測試。但該方法仍存在以下幾點缺陷:1)若算法前期生成的測試用例導致智能合約中的require語句無法執行,會導致測試用例覆蓋率低,算法需要迭代更多次,算法開銷大;2)算法達到最大適應度值而終止時,僅能保證至少輸出一個滿足條件的測試用例,同一測試用例集中的其他測試用例的質量無法保證。因此,進一步優化智能合約的數據流測試是有必要的。
發明內容
發明目的:考慮到在智能合約的使用越來越多且合約安全性不能得到充分保障的前提下,一方面針對智能合約的檢測與測試尚不完善;另一方面,現有的測試用例生成技術或傾向于對傳統軟件程序的測試,或沒有結合智能合約程序特性進行充分優化,導致測試用例生成過程耗時較久且無法保證輸出的測試用例集的整體覆蓋率。本發明目的是提供一種應用改進遺傳算法的智能合約測試用例生成方法,基于智能合約中變量的特性,融合遺傳算法優化種群的思想以及粒子群算法中全局最佳等概念,實現對測試用例生成過程以及算法輸出結果的優化,進一步提升測試用例生成效率、提高算法輸出測試用例集的整體覆蓋率。
技術方案:為實現上述發明目的,本發明采用如下技術方案:
一種應用改進遺傳算法的智能合約測試用例生成方法,包括如下步驟:
(1)根據以太坊智能合約程序的源代碼生成對應的控制流圖;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于河海大學,未經河海大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010579513.8/2.html,轉載請聲明來源鉆瓜專利網。





