【技术实现步骤摘要】
基于元启发式算法的智能合约测试用例生成方法及装置
[0001]本专利技术涉及区块链
,特别涉及基于元启发式算法的智能合约测试用例生成方法及装置
。
技术介绍
[0002]区块链技术,以其不可篡改的分布式账本和去中心化的网络结构,确保了数据的完整性
、
透明性和安全性
。
其中,以太坊作为区块链技术的一种主要实现方式,其引入的智能合约概念,标志着我们进入了区块链
2.0
时代
。
智能合约作为区块链上的图灵完备程序,具有确定性
、
实时性和去中心化的特性,在数字支付
、
金融资产处理
、
云计算等领域有着广阔的应用前景,并被视为有可能重塑包括银行
、
保险
、
供应链,以及金融交易所在内的多个行业
。
[0003]然而,智能合约的开发和部署也面临着一系列的挑战
。
由于以太坊平台本身的不可篡改性,一旦智能合约被部署,就无法通过简单的软件升级来修复存在的问题
。
这种固有的不可修改性导致智能合约中的漏洞一旦存在,就会永远存在,从而导致严重后果
。
近年来,智能合约的安全问题已经引发了一系列的严重损失,如
The DAO
的攻击事件,
Parity
钱包的漏洞事件,因此,在智能合约部署前进行全面且深入的测试变得至关重要
。
[0004]针对现阶段区块链领域所 ...
【技术保护点】
【技术特征摘要】
1.
基于元启发式算法的智能合约测试用例生成方法,其特征在于,具体包括如下步骤:
S1、
对智能合约的源代码进行分析,构建控制流图;
S2、
根据智能合约随机生成若干个初始测试用例,建立初始化种群,进入步骤
S3
;所述种群中每个个体表示一个测试用例;
S3、
计算每两个测试用例之间的相关性;根据计算结果和控制流图,构建树状聚类图,从树状聚类图中划分出不同的聚类,每个聚类代表一组密切相关的测试用例;
S4、
在不同的聚类中分别随机选择父代个体,通过交叉操作和变异操作,生成若干个子代个体;
S5、
对父代个体和子代个体进行测试,根据测试结果找出未被用例覆盖的分支,并进行归一化分支距离的计算;
S6、
根据归一化分支距离,对父代和子代进行排序,根据排序结果选择下一代种群;检查是否满足终止条件,若满足,结束进程;反之,返回步骤
S3。2.
如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于,步骤
S1
具体包括如下子步骤:
S11、
对智能合约的源代码进行分析,识别源代码中的所有基本块;
S12、
创建若干个节点,所述节点分别关联一个基本块;创建若干个代表控制流的可能方向的边,所述边位于两个节点之间,构建初始控制流图;
S13、
在初始控制流图进行完善操作生成最终控制流图;所述完善操作包括添加一个开始节点和一个结束节点
、
对循环和条件语句进行特别标注
、
针对
Solidity
中合约的创建和销毁
、
异常处理情况增加特殊边
。3.
如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于:步骤
S2
中通过解析智能合约的可调用方法及构造函数,生成相应的初始测试用例
。4.
如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于,步骤
S3
具体包括如下子步骤:
S31、
根据每两个测试用例的函数调用相似度
、
状态变量访问相似度,计算每两个测试用例的相关性;
【专利技术属性】
技术研发人员:李腾,石建,陈厅,张峰,蒋辉军,宋书玮,韩朝阳,王东,
申请(专利权)人:杭州后量子密码科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。