[发明专利]一种面向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.vipzhuanli.com/pat/books/201910341716.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:软件测试方法及相关装置
- 下一篇:一种日志处理方法及装置