CN117171013A - 基于元启发式算法的智能合约测试用例生成方法及装置 - Google Patents
基于元启发式算法的智能合约测试用例生成方法及装置 Download PDFInfo
- Publication number
- CN117171013A CN117171013A CN202310986736.XA CN202310986736A CN117171013A CN 117171013 A CN117171013 A CN 117171013A CN 202310986736 A CN202310986736 A CN 202310986736A CN 117171013 A CN117171013 A CN 117171013A
- Authority
- CN
- China
- Prior art keywords
- test case
- intelligent contract
- test
- meta
- individuals
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 133
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 29
- 238000010586 diagram Methods 0.000 claims description 16
- 230000035772 mutation Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 claims description 10
- 238000013101 initial test Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000006378 damage Effects 0.000 claims description 4
- 241000609666 Tuber aestivum Species 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000005457 optimization Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000002068 genetic effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000654 solvent vapour annealing Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明基于元启发式算法的智能合约测试用例生成方法及装置;通过构建连接树,计算测试用例之间的相关性并进行层次聚类,形成相似测试用例种群,并在非相似种群的基础上进行后代生成;同时,本发明还针对Solidity语言的特性进行了专门的优化,如添加特殊边以处理Solidity中合约的创建、异常处理等特殊情况,以此完善控制流图的生成;此外,本发明还通过选择距离未覆盖分支最近的测试用例进行后续的种群变异操作。这种方法能够提高测试用例的覆盖率,从而有效提升智能合约的正确性和安全性。
Description
技术领域
本发明涉及区块链技术领域,特别涉及基于元启发式算法的智能合约测试用例生成方法及装置。
背景技术
区块链技术,以其不可篡改的分布式账本和去中心化的网络结构,确保了数据的完整性、透明性和安全性。其中,以太坊作为区块链技术的一种主要实现方式,其引入的智能合约概念,标志着我们进入了区块链2.0时代。智能合约作为区块链上的图灵完备程序,具有确定性、实时性和去中心化的特性,在数字支付、金融资产处理、云计算等领域有着广阔的应用前景,并被视为有可能重塑包括银行、保险、供应链,以及金融交易所在内的多个行业。
然而,智能合约的开发和部署也面临着一系列的挑战。由于以太坊平台本身的不可篡改性,一旦智能合约被部署,就无法通过简单的软件升级来修复存在的问题。这种固有的不可修改性导致智能合约中的漏洞一旦存在,就会永远存在,从而导致严重后果。近年来,智能合约的安全问题已经引发了一系列的严重损失,如The DAO的攻击事件,Parity钱包的漏洞事件,因此,在智能合约部署前进行全面且深入的测试变得至关重要。
针对现阶段区块链领域所面临的挑战,智能合约的扩展性与规模已经呈现出爆炸性增长的趋势,而对安全漏洞的探测难度同步提升。这种状况下,过去那种严重依赖开发者技术熟练度和基于专业人士经验的代码审查的安全模式已难以满足当前需求。因此,大量专注于智能合约漏洞的自动化检测工具涌现出来,现行的智能合约漏洞自动化检测主要采取的技术路线包括静态分析、符号执行以及模糊测试。Tikhomirov等开发了一款名为Smartcheck的静态分析工具,基于他们对已知漏洞的深度研究与归纳,能够针对21种安全漏洞进行有效检测。另一方面,Liu等则利用以太坊智能合约的ABI规格说明书和自定义的测试规则,针对7种主要的安全问题进行了实际测试。Sun等采用突变测试的方式应对智能合约中的整数溢出漏洞,他们针对整数溢出漏洞设计出了五种突变算子,并运用生成的漏洞突变体对当前存在的整数溢出漏洞测试工具进行了全面评估。此外,Nguyen等提出的一种模糊测试工具sFuzz,利用反馈自适应模糊策略,以实现最大程度的路径覆盖。
在过去几年中,对于Solidity智能合约的测试技术虽然已经取得了显著进步,但也还存在一定的局限性。在模糊测试中,模糊器的作用仅仅局限于生成输入数据,它并不能实际构建可运行的测试用例,无法进行组合测试(即包含多个请求的测试用例),也无法对合约的预期行为进行准确测试。而形式化验证方法,尽管其旨在通过将合约转换为形式证明语言来对合约行为进行数学上的验证,但其可扩展性较差,且需要开发者提供复杂的行为模型,存在实用性限制。目前,关于Solidity测试用例生成的研究仍相对较少。现有的研究原型并未专门针对Solidity语言进行优化,因此,代码覆盖率和分支覆盖率均不高。随着程序复杂度的提升和代码行数的增长,测试用例生成方法的覆盖目标规模显著增大。这不仅影响了算法的性能,也降低了测试效率,使得漏报率和误报率较高,检测开销大,效率低,主要原因在于测试用例的覆盖率不足。因此,为了提高智能合约的测试效率和准确性,进一步优化智能合约测试方法是至关重要的。
在当今的数字化时代,区块链技术以其独特的去中心化和不可篡改的特性,在全球范围内获得了广泛的关注和应用。在此背景下,智能合约,作为区块链技术的重要组成部分,其在各种行业的应用正持续扩大。同时,智能合约的不可篡改特性,导致一旦智能合约部署,就无法通过简单的软件升级来修复存在的问题,因此保证智能合约的正确性和安全性是至关重要的。然而,现行的形式化验证方法,虽然以数学原理为基础来验证合约行为,但其在可扩展性上存在局限,且需要开发者提供复杂的行为模型,这在实际应用中形成了显著的限制。此外,当前的测试用例生成技术并未对Solidity语言进行特定优化,因此在代码覆盖率和分支覆盖率上的表现并不理想。
已有的与本发明最相近似的技术方案:一种应用改进遗传算法的智能合约测试用例生成方法:该方法针对部署运行在以太坊上的智能合约,基于源代码获取合约的控制流图(CFG),遍历CFG,统计合约中的定义-使用对(dup),并进一步划分出与require语句执行相关的dup;在测试用例生成环节,对于生成的每一组测试用例,带入执行插桩后的合约程序,为指导生成过程的进化,将遗传算法中种群更新的思想以及粒子群优化算法中全局最佳(G_O)和粒子最佳(I_O)的概念结合使用、并对遗传算法中父代种群的选择策略进行改进,从而提高了有效测试用例的生成效率。
现有技术的不足:
1.模糊测试的局限性:现有的模糊测试技术主要在于生成输入数据,它无法构建可运行的测试用例,也不能进行组合测试,这限制了其在复杂场景下的测试能力。同时,模糊测试无法准确地测试合约的预期行为。
2.形式验证方法的缺陷:尽管形式验证方法可以从数学上验证合约的行为,但其可扩展性较差,并且需要开发者提供复杂的行为模型,这在实际应用中可能导致其效率低下,使用成本高。
3.缺乏针对Solidity语言优化的优化:现有的测试用例生成技术大多没有针对Solidity语言进行优化,没有充分考虑其自身语言特性,导致测试效果不佳。
4.代码和分支覆盖率不足:现有的智能合约测试方法常常无法达到高代码覆盖率和分支覆盖率,这可能导致一些重要的错误被遗漏,影响合约的安全性和可靠性。
发明内容
本发明的目的在于提供基于元启发式算法的智能合约测试用例生成方法及装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本申请公开了基于元启发式算法的智能合约测试用例生成方法,具体包括如下步骤:
S1、对智能合约的源代码进行分析,构建控制流图;
S2、根据智能合约随机生成若干个初始测试用例,建立初始化种群,进入步骤S3;所述种群中每个个体表示一个测试用例;
S3、计算每两个测试用例之间的相关性;根据计算结果和控制流图,构建树状聚类图,从树状聚类图中划分出不同的聚类,每个聚类代表一组密切相关的测试用例;
S4、在不同的聚类中分别随机选择父代个体,通过交叉操作和变异操作,生成若干个子代个体;
S5、对父代个体和子代个体进行测试,根据测试结果找出未被用例覆盖的分支,并进行归一化分支距离的计算;
S6、根据归一化分支距离,对父代和子代进行排序,根据排序结果选择下一代种群;检查是否满足终止条件,若满足,结束进程;反之,返回步骤S3。
作为优选,步骤S1具体包括如下子步骤:
S11、对智能合约的源代码进行分析,识别源代码中的所有基本块;
S12、创建若干个节点,所述节点分别关联一个基本块;创建若干个代表控制流的可能方向的边,所述边位于两个节点之间,构建初始控制流图;
S13、在初始控制流图进行完善操作生成最终控制流图;所述完善操作包括添加一个开始节点和一个结束节点、对循环和条件语句进行特别标注、针对Solidity中合约的创建和销毁、异常处理情况增加特殊边。
作为优选,步骤S2中通过解析智能合约的可调用方法及构造函数,生成相应的初始测试用例。
作为优选,步骤S3具体包括如下子步骤:
S31、根据每两个测试用例的函数调用相似度、状态变量访问相似度,计算每两个测试用例的相关性;
S32、根据步骤S31相关性计算结果,创建一个距离矩阵;距离矩阵中的每个元素表示测试用例之间的相关性值;
S33、根据距离矩阵和控制流图,构建树状聚类图;
S34、根据设定的阈值,从树状聚类图中划分出不同的聚类,每个聚类代表一组密切相关的测试用例。
作为优选,所述交叉操作具体为:通过父代个体之间交换语句来创建后代个体;
作为优选,所述变异操作具体为:对后代个体的输入参数进行随机调整、添加或删除方法调用。
作为优选,步骤S5具体包括如下子步骤:
S51、将测试用例转化为JavaScript测试用例;在本地区块链实例上执行测试;所述本地区块链实例托管着利用Truffle框架部署的被测智能合约;
S52、收集测试结果,根据测试结果找出未被用例覆盖的分支,计算归一化分支距离。
作为优选,步骤S6具体包括如下子步骤:
S61、将所有的测试用例按照归一化分支距离从小到大进行排序;
S62、根据竞争选择策略,选取一定数量的排序靠前的个体;
S63、从步骤S62所选取的个体中再进行一次随机选择,得到所需要数量的个体,作为下一代种群的父代;
本发明还公开了基于元启发式算法的智能合约测试用例生成装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述的基于元启发式算法的智能合约测试用例生成方法。
本发明还公开了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的基于元启发式算法的智能合约测试用例生成方法。
本发明的有益效果:
本发明基于元启发式搜索算法,并利用连接学习算法基于连接树进行测试用例聚类选择,并对Solidity语言的特性进行了特定优化,实现了快速且高覆盖率的测试用例生成;本发明还提出了一种基于归一化分支距离的选择机制,从而进一步提升了未覆盖分支的覆盖率;可以有效解决传统测试方法无法高效生成高覆盖率测试用例,难以发现潜在合约错误和漏洞的问题,从而显著提高智能合约的正确性和安全性。
本发明的特征及优点将通过实施例结合附图进行详细说明。
附图说明
图1是本发明基于元启发式算法的智能合约测试用例生成方法的流程示意图;
图2是本发明基于元启发式算法的智能合约测试用例生成装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
参阅图1,本发明实施例提供基于元启发式算法的智能合约测试用例生成方法,具体包括如下操作:
1.构建控制流图:
a.源代码分析和基本块识别:首先,对智能合约的源代码进行分析,识别并理解其中的各种元素(如函数,变量,控制结构等)。在此过程中,你需要识别出源代码中的所有基本块。基本块是一段连续的指令序列,它只有一个入口点和一个出口点。这通常涉及到识别代码中的控制结构,如循环,条件语句等。
b.构建节点和边:在控制流图中,每个基本块都将被表示为一个节点。对于每个基本块,创建一个节点,并将其与对应的基本块关联起来。然后,如果一个基本块可以直接流向另一个基本块(例如,一个if语句的两个分支),那么在对应的两个节点之间添加一条边。这样的边代表了控制流的可能方向。
c.完善控制流图:添加一个开始节点和一个结束节点,以表示程序的开始和结束。在控制流图中,循环和条件语句通常会被特别标出,以表示控制流的不确定性。同时,针对Solidity中合约的创建和销毁、异常处理等特有的一些情况,对控制流图进行增加特殊边等操作,生成最终控制流图。
构建控制流图的作用是为后续的测试用例生成和优化过程提供基础:控制流图为生成初始测试用例提供了合约的执行流程,有助于生成合法且有意义的测试用例。控制流图是计算测试用例之间的相关性的基础。通过控制流图,可以了解测试用例之间的执行路径和代码依赖关系,从而更准确地计算测试用例之间的相关性。
2.生成初始测试用例:初始测试用例通过随机生成产生。通过解析待测合约的可调用方法及构造函数,生成相应的列表。测试用例以一系列方法调用的形式进行编码。序列的根为实现合约部署/实例化的公共构造函数。
3.初始化种群:从已生成的初始测试用例集开始,创建一个种群。种群中的每个个体表示一个测试用例。
4.构建Linkage Tree:
计算种群中每对测试用例之间的相关性,计算公式定义如下:S1和S2为两个测试用例,它们之间的相似度R(S1,S2)可以通过以下公式计算得出:
R(S1,S2)=w1*FCS(S1,S2)+w2*SVA(S1,S2)
其中,FCS(S1,S2)、SVA(S1,S2)分别为函数调用相似度、状态变量访问相似度,它们分别度量了两个测试用例之间在调用其他函数或方法、访问或修改状态变量方面的相似程度。而w1、w2为相应相似度指标的权重,用于控制它们对最终相似度的贡献程度。
构建距离矩阵:根据计算出的相关性,为每对测试用例创建一个距离矩阵。距离矩阵中的每个元素表示测试用例之间的相关性值。
层次聚类:使用层次聚类算法,根据距离矩阵和控制流图构建树状聚类图。
划分聚类:根据设定的阈值,从树状聚类图中划分出不同的聚类。每个聚类代表一组密切相关的测试用例。
例如,设定阈值为0.8,从根节点(代表所有测试用例的聚类)开始,根据设定的阈值,向下遍历树状聚类图。如果节点的相关性值大于等于阈值0.8,则继续遍历。若节点的相关性值小于阈值,停止继续向下遍历该分支,将该节点作为一个独立的聚类。重复此步骤直至遍历完所有节点。最后划分出所有不同的聚类。
5.交叉操作:从不同聚类中分别随机选择父代个体,再通过在成对测试(称为父级)之间交换语句来创建后代个体。
6.变异操作:对新生成的后代个体应用变异操作。变异操作可以包括对测试用例的输入参数进行随机调整、添加或删除方法调用等。
7.归一化分支距离计算:首先将测试用例转化为JavaScript测试用例。随后,在Ganache本地区块链实例上执行测试。该本地区块链实例托管着利用Truffle框架部署的被测智能合约。然后,收集测试执行的结果,根据测试结果找出未被用例覆盖的分支,归一化分支距离(Normalized Branch Distance)定义如下:
其中t,b分别表示测试用例及分支。d(t,b)的取值范围是[0,1]。测试用例标准化分支距离越小,表示更接近于覆盖相应的分支。当d为0时,表示测试用例正好覆盖了目标分支;当d为1时,表示测试用例与目标分支的差距最大。
8.下一代种群选择:将父代和子代个体合并为一个大的集合,使用加权总和方法为归一化分支距离、代码覆盖率等评价指标赋予一个权重,然后计算每个测试用例的加权总和,最后根据加权总和的大小进行排序,基于排序结果选择下一代种群。
具体地,测试用例的适应性通过归一化分支距离来评估,归一化分支距离越小代表测试用例的覆盖率和质量越高。具体过程为将所有的测试用例按照归一化分支距离进行排序,排名靠前的代表适应性较好,覆盖了更多的代码分支。随后,然后,根据竞争选择策略,从排序后的测试用例中选取一定数量(根据实际需求选择,一般取前20%)的排序靠前的优秀个体,同时会引入一定的随机性,从所选取优秀个体中再进行一次随机选择,得到所需要数量的个体,增加种群的多样性,避免过早陷入局部最优解,作为下一代种群的父代。
9.终止条件检查:检查是否达到终止条件,如最大迭代次数、预设的覆盖率阈值等。如果满足终止条件,算法结束。否则,返回第4步。
本发明针对Solidity语言的特性进行专门优化,对数据流图生成过程进行改进,包括对智能合约的源代码分析、基本块识别、构建节点和边,以及对控制流图进行完善,如添加特殊边以处理Solidity中合约的创建和销毁、异常处理等特殊情况;
本发明创新性地使用连接学习和元启发式搜索算法,首先通过解析待测合约的可调用方法以及构造函数生成初始测试用例和初始化种群,然后通过构建Linkage Tree,计算测试用例间的相关性,并进行层次聚类,形成相似测试用例种群。
本发明在聚类基础上,通过从不同聚类中选择父代个体,然后进行交叉和变异操作,生成子代个体,从而拓展测试用例的覆盖范围;
本发明提出了基于归一化分支距离的选择机制,通过在本地区块链实例上执行测试,收集测试结果,找出未被用例覆盖的分支,并计算归一化分支距离,然后选择距离未覆盖分支最近的用例进行后续的种群变异操作,以提高未覆盖分支被覆盖的概率。
本发明基于元启发式算法的智能合约测试用例生成装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本发明基于元启发式算法的智能合约测试用例生成方法所在任意具备数据处理能力的设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于元启发式算法的智能合约测试用例生成方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(SmartMedia Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于元启发式算法的智能合约测试用例生成方法,其特征在于,具体包括如下步骤:
S1、对智能合约的源代码进行分析,构建控制流图;
S2、根据智能合约随机生成若干个初始测试用例,建立初始化种群,进入步骤S3;所述种群中每个个体表示一个测试用例;
S3、计算每两个测试用例之间的相关性;根据计算结果和控制流图,构建树状聚类图,从树状聚类图中划分出不同的聚类,每个聚类代表一组密切相关的测试用例;
S4、在不同的聚类中分别随机选择父代个体,通过交叉操作和变异操作,生成若干个子代个体;
S5、对父代个体和子代个体进行测试,根据测试结果找出未被用例覆盖的分支,并进行归一化分支距离的计算;
S6、根据归一化分支距离,对父代和子代进行排序,根据排序结果选择下一代种群;检查是否满足终止条件,若满足,结束进程;反之,返回步骤S3。
2.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于,步骤S1具体包括如下子步骤:
S11、对智能合约的源代码进行分析,识别源代码中的所有基本块;
S12、创建若干个节点,所述节点分别关联一个基本块;创建若干个代表控制流的可能方向的边,所述边位于两个节点之间,构建初始控制流图;
S13、在初始控制流图进行完善操作生成最终控制流图;所述完善操作包括添加一个开始节点和一个结束节点、对循环和条件语句进行特别标注、针对Solidity中合约的创建和销毁、异常处理情况增加特殊边。
3.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于:步骤S2中通过解析智能合约的可调用方法及构造函数,生成相应的初始测试用例。
4.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于,步骤S3具体包括如下子步骤:
S31、根据每两个测试用例的函数调用相似度、状态变量访问相似度,计算每两个测试用例的相关性;
S32、根据步骤S31相关性计算结果,创建一个距离矩阵;距离矩阵中的每个元素表示测试用例之间的相关性值;
S33、根据距离矩阵和控制流图,构建树状聚类图;
S34、根据设定的阈值,从树状聚类图中划分出不同的聚类,每个聚类代表一组密切相关的测试用例。
5.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于:所述交叉操作具体为:通过父代个体之间交换语句来创建后代个体。
6.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于:所述变异操作具体为:对后代个体的输入参数进行随机调整、添加或删除方法调用。
7.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于:步骤S5具体包括如下子步骤:
S51、将测试用例转化为JavaScript测试用例;在本地区块链实例上执行测试;所述本地区块链实例托管着利用Truffle框架部署的被测智能合约;
S52、收集测试结果,根据测试结果找出未被用例覆盖的分支,计算归一化分支距离。
8.如权利要求1所述的基于元启发式算法的智能合约测试用例生成方法,其特征在于:步骤S6具体包括如下子步骤:
S61、将所有的测试用例按照归一化分支距离从小到大进行排序;
S62、根据竞争选择策略,选取一定数量的排序靠前的个体;
S63、从步骤S62所选取的个体中再进行一次随机选择,得到所需要数量的个体,作为下一代种群的父代。
9.基于元启发式算法的智能合约测试用例生成装置,其特征在于:包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-8任一项所述的基于元启发式算法的智能合约测试用例生成方法。
10.一种计算机可读存储介质,其特征在于:其上存储有程序,该程序被处理器执行时,实现权利要求1-8任一项所述的基于元启发式算法的智能合约测试用例生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310986736.XA CN117171013A (zh) | 2023-08-08 | 2023-08-08 | 基于元启发式算法的智能合约测试用例生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310986736.XA CN117171013A (zh) | 2023-08-08 | 2023-08-08 | 基于元启发式算法的智能合约测试用例生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117171013A true CN117171013A (zh) | 2023-12-05 |
Family
ID=88935832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310986736.XA Pending CN117171013A (zh) | 2023-08-08 | 2023-08-08 | 基于元启发式算法的智能合约测试用例生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117171013A (zh) |
-
2023
- 2023-08-08 CN CN202310986736.XA patent/CN117171013A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN113986674B (zh) | 时序数据的异常检测方法、装置和电子设备 | |
CN110162972B (zh) | 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 | |
CN110798467A (zh) | 目标对象识别方法、装置、计算机设备及存储介质 | |
CN112364352A (zh) | 可解释性的软件漏洞检测与推荐方法及系统 | |
CN114547611A (zh) | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 | |
CN117972732B (zh) | 基于多特征融合的智能合约漏洞检测方法及系统 | |
CN113536308A (zh) | 软件基因视角下多粒度信息融合的二进制代码溯源方法 | |
CN112783513B (zh) | 一种代码风险检查方法、装置及设备 | |
CN115225336A (zh) | 一种面向网络环境的漏洞可利用性的计算方法及装置 | |
Wang et al. | Gvd-net: Graph embedding-based machine learning model for smart contract vulnerability detection | |
Zhen et al. | DA-GNN: A smart contract vulnerability detection method based on Dual Attention Graph Neural Network | |
CN117725592A (zh) | 一种基于有向图注意力网络的智能合约漏洞检测方法 | |
CN113626826A (zh) | 智能合约安全检测方法、系统、设备、终端及应用 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
Yang et al. | Efficient validation of self-adaptive applications by counterexample probability maximization | |
CN116702157A (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
CN116502231A (zh) | 一种基于多级目标关键路径的智能合约漏洞检测方法 | |
CN117171013A (zh) | 基于元启发式算法的智能合约测试用例生成方法及装置 | |
Jain et al. | Multi-Objective Approach for Detecting Vulnerabilities in Ethereum Smart Contracts | |
Liang et al. | SCGRU: A Model for Ethereum Smart Contract Vulnerability Detection Combining CNN and BiGRU-Attention | |
CN114139165B (zh) | 基于机器学习中的多目标识别的智能合约漏洞检测方法 | |
CN117556425B (zh) | 基于图神经网络的智能合约漏洞检测方法、系统和设备 | |
Devi et al. | Optimizing automated programming contracts with modified ant colony optimization | |
Manojkumar et al. | Test Case Optimization Through Ant Colony Optimization Enabled Boosted Regression Model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |