[发明专利]一种面向solidity语言的测试用例生成方法有效
申请号: | 201910341716.0 | 申请日: | 2019-04-26 |
公开(公告)号: | CN110096439B | 公开(公告)日: | 2020-07-14 |
发明(设计)人: | 张鹏程;于佳男;吉顺慧;肖锋 | 申请(专利权)人: | 河海大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/12 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 211100 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 solidity 语言 测试 生成 方法 | ||
本发明公开了一种面向solidity语言的测试用例生成方法,针对应用solidity语言实现的智能合约程序,根据程序得到对应的控制流图(CFG),控制流图中涵盖了该智能合约程序中函数方法间的调用信息;根据程序CFG得到程序中存在的变量的定义‑使用对(dup);在生成测试用例的过程中,应用遗传算法加快有效测试用例的生成速度。另一方面,考虑solidity存在的整数溢出安全性问题,设计遗传算法的适应度函数时强调测试用例对可引起整数溢出错误的变量的定义及使用实现了覆盖,对与整数溢出错误相关的dup实现覆盖的测试用例的适应度值会相对较大。本发明方法切实可行,在实现对程序中常规变量操作进行覆盖测试的基础上,实现了整数溢出覆盖测试。
技术领域
本发明涉及一种面向solidity语言的测试用例生成方法,尤其涉及到应用遗传算法并基于数据流测试的测试用例生成方法,属于软件测试技术领域。
背景技术
近两年来,随着区块链技术的不断发展,数字货币、智能合约成为了许多研究的热点,其中以太坊是支持智能合约部署编译的典型平台之一,solidity更是成为当今智能合约编写的热门语言。之所以被称为智能合约,其主要特点就在于可以自动的或具备一定的智能性的,通过预先定义好的执行条件和逻辑,在条件满足时,自动的执行合约内容,实现期望的功能;尤其是借助于区块链平台的去中心化、去信任、防篡改等特性,智能合约的优势被更好的放大,有了更大的应用前景。因此,对solidity这门语言的测试也是一个需更深入研究的问题。
由于区块链平台的特性,以solidity语言编写的智能合约没办法在执行过程中完成动态测试,因此,目前对于solidity语言的测试分析主要集中在对源代码进行静态分析上。除了传统语言中常见的程序错误,在solidity语言中还可能因编程缺陷等引发一些其特有的错误。针对solidity语言编程,Tsankov等人开发了一个程序分析器Securify,该分析器将程序预定义为两种模式:合规模式和违规模式,然后通过分析合约的依赖图从代码中得到语言信息,通过预定义的条件,判断程序合规或违规或者警告;基于重入攻击这个错误,Liu等提出了一个模型ReGuard,该模型通过将solidity程序通过中间表示转换成通过语言C++,然后通过对得到的C++程序执行模糊测试迭代的生成随机又不同的交易来发现错误。
随着对智能约合的使用越来越广泛,已经不仅仅是在货币交易领域,在其他通用信息产业等领域也将会有很广泛的使用,而面向solidity语言的测试仍处于起步阶段,因此有必要考虑到面向程序整体测试的测试用例生成技术。
发明内容
发明目的:考虑到solidity语言的新颖性,且在使用过程中已出现了一些较为严重的安全性错误;与此同时,随着智能合约的应用领域越来越广,在现有的一些静态代码分析的基础上,程序的通用测试也是一个需求。本发明目的是提供一种面向solidity语言的测试用例生成方法,基于数据流测试的方法,实现对程序执行过程中变量操作进行整体性测试,并同时强调了对执行过程中可引发整数溢出错误的变量操作的测试。
技术方案:为实现上述发明目的,本发明采用如下技术方案:
一种面向solidity语言的测试用例生成方法,包括如下步骤:
(1)根据solidity语言的变量类型、流程控制语句、函数体结构、内部函数require以及函数修改器的使用对solidity语言实现的待测试智能合约程序进行分析得到对应的控制流图CFG;
(2)根据步骤(1)的CFG图遍历各节点信息,判断存在uint型变量使用的节点是否存在整数溢出错误的安全性问题,若存在,则将存在整数溢出错误的节点标记;
(3)根据步骤(1)的CFG图遍历各节点信息,统计出程序中所有数值型变量的定义-使用对,记为dup,且若步骤(2)中判断结果为存在整数溢出错误,则将包含步骤(2)中的标记节点存在的变量的定义-使用对统计出来,记为dup’;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910341716.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:软件测试方法及相关装置
- 下一篇:一种日志处理方法及装置