[发明专利]生成智能合约测试案例的方法和装置有效
申请号: | 202011054152.1 | 申请日: | 2020-09-30 |
公开(公告)号: | CN111897742B | 公开(公告)日: | 2021-01-15 |
发明(设计)人: | 邬萌;王海军 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06Q40/04 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 李世喆 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 生成 智能 合约 测试 案例 方法 装置 | ||
本说明书实施例提供一种生成智能合约测试案例的方法和装置,该方法包括:首先从当前的测试案例中选取至少一个待变异结构化参数,并保证所选出的待变异结构化参数能够被待测试智能合约中的至少一个接口识别;接着针对每一个待变异结构化参数,得到该待变异结构化参数对应的参数结构;接着针对每一个待变异结构化参数,根据该待变异结构化参数对应的参数结构,对该待变异结构化参数进行变异,获得变异后结构化参数;接着生成包括有各变异后结构化参数的测试案例,作为输入待测试智能合约的测试案例。
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及用于对区块链系统中智能合约进行测试的测试案例的生成方法和装置。
背景技术
区块链系统中的智能合约是一套以数字形式定义的承诺,其中包括了合约参与方执行所定义承诺的协议,通过智能合约可以在没有中心化第三方介入的情况下自动使互不信任的参与方实现约定的协议。智能合约对于区块链系统的参与方来说是完全透明的,而且一旦部署很难被更改,为此在智能合约部署之前需要对智能合约进行测试,以确保所部署智能合约的安全性和正确性。
在对智能合约进行测试时,需要生成一系列测试案例作为智能合约的输入,使得智能合约在执行各测试案例时能够覆盖到不同的程序路径,以对智能合约进行较全面的测试。由于智能合约上的接口仅能解析具有特定格式的数据,所以难以高效地生成能够被智能合约解析的测试案例。
因此,希望能有改进的方案,可以更高效的生成能够通过智能合约数据解析的测试案例。
发明内容
本说明书一个或多个实施例描述了一种生成智能合约测试案例的方法和装置,能够更高效地生成能够通过智能合约数据解析的测试案例。
第一方面,本说明书提供了一种生成智能合约测试案例的方法,包括:
针对当前的测试案例,从该测试案例包括的各结构化参数中选取至少一个待变异结构化参数,其中,所述待变异结构化参数能够被待测试智能合约中的至少一个接口识别;
针对每一个所述待变异结构化参数,得到该待变异结构化参数对应的参数结构,其中,所述参数结构通过对预先构建的样本结构化参数进行分析而确定,且所述样本结构化参数能够被所述待测试智能合约中的至少一个接口识别;
针对每一个所述待变异结构化参数,根据该待变异结构化参数对应的参数结构,对该待变异结构化参数进行变异,获得变异后结构化参数;
生成包括各所述变异后结构化参数的测试案例,并将该测试案例作为输入所述待测试智能合约的测试案例。
一种可能的实施方式,每个结构化参数包括至少一个原始类型数据,且所述参数结构包括原始类型数据的数据类型,在这样情况下,所述根据该待变异结构化参数对应的参数结构,对该待变异结构化参数进行变异,包括:
从该待变异结构化参数包括的各原始类型数据中选取至少一个待变异原始类型数据;
根据该待变异结构化参数对应的参数结构确定每个所述待变异原始类型数据的数据类型;
根据每个所述待变异原始类型数据的数据类型,对该待变异原始类型数据进行参数值变异,以改变该待变异结构化参数的参数值。
一种可能的实施方式,所述根据每个所述待变异原始类型数据的数据类型,对该待变异原始类型数据进行参数值变异,包括:
如果一个所述待变异原始类型数据的数据类型为未限制长度的数据类型,则对该待变异原始类型数据执行修改字节值、删除字节、插入字节和对字节进行移位中的至少一项;
如果一个所述待变异原始类型数据的数据类型为限制长度的数据类型,则对该待变异原始类型数据执行修改字节值和对字节进行位移中的至少一项。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011054152.1/2.html,转载请声明来源钻瓜专利网。