[发明专利]一种面向solidity语言的测试用例生成方法有效
申请号: | 201910341716.0 | 申请日: | 2019-04-26 |
公开(公告)号: | CN110096439B | 公开(公告)日: | 2020-07-14 |
发明(设计)人: | 张鹏程;于佳男;吉顺慧;肖锋 | 申请(专利权)人: | 河海大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/12 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 211100 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种面向solidity语言的测试用例生成方法,针对应用solidity语言实现的智能合约程序,根据程序得到对应的控制流图(CFG),控制流图中涵盖了该智能合约程序中函数方法间的调用信息;根据程序CFG得到程序中存在的变量的定义‑使用对(dup);在生成测试用例的过程中,应用遗传算法加快有效测试用例的生成速度。另一方面,考虑solidity存在的整数溢出安全性问题,设计遗传算法的适应度函数时强调测试用例对可引起整数溢出错误的变量的定义及使用实现了覆盖,对与整数溢出错误相关的dup实现覆盖的测试用例的适应度值会相对较大。本发明方法切实可行,在实现对程序中常规变量操作进行覆盖测试的基础上,实现了整数溢出覆盖测试。 | ||
搜索关键词: | 一种 面向 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)中初始测试用例的适应度值,开始遗传算法迭代执行,得到算法内最优结果。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910341716.0/,转载请声明来源钻瓜专利网。
- 上一篇:软件测试方法及相关装置
- 下一篇:一种日志处理方法及装置