用于生成区块链智能合约的测试用例的方法和设备技术

技术编号:22075457 阅读:82 留言:0更新日期:2019-09-12 14:03
本发明专利技术公开了一种用于生成区块链智能合约的测试用例的方法和设备。该方法包括检索与特定智能合约相似的公共智能合约,作为相似公共智能合约;提取与每个相似公共智能合约相关的一个或更多个交易中的、具有预定类型的交易数据;基于特定智能合约来从交易数据中获取测试数据;以及根据测试数据来生成特定智能合约的测试用例。

Method and Equipment for Generating Test Cases of Block Chain Intelligent Contracts

【技术实现步骤摘要】
用于生成区块链智能合约的测试用例的方法和设备
本专利技术涉及一种用于生成区块链智能合约的测试用例的方法和设备。
技术介绍
近来,区块链相关的技术得到了人们的广泛关注。早先,传统应用的执行都是依赖于一个中心化的权威机构;在区块链技术出现之后,应用可以以一个去中心化的方式来执行,而不需要中心权威机构。区块链提供了一种不需要信任的网络架构,网络用户可以在没有信任的前提下执行交易。这种去中心化的方式依赖于3种技术的应用:即,加密方式存储数据;点对点的网络;节点自治所依赖的智能合约。智能合约是区块链网络上可以自动执行的脚本。一旦将智能合约部署在网络上,它内部的公共函数都可以被其他合约调用。但是智能合约的更新是比较困难的,因为它们存储在去中心化的区块中,很难被修改。所以最好在发布之前,就能确保智能合约的正确性。确保代码程序质量的常见且重要的方式是使测试用例正确地执行。然而,手工编写测试用例非常困难,并且很耗时。测试数据也很难仿造,而对于Solidity语言尤其如此,Solidity语言是撰写以太坊智能合约的最常用的编程语言。它的函数的输入数据可能是20个字节的账户地址,不方便人工仿造。另一方面,本文档来自技高网...

【技术保护点】
1.一种用于生成区块链智能合约的测试用例的方法,包括:检索与特定智能合约相似的公共智能合约,作为相似公共智能合约;提取与每个相似公共智能合约相关的一个或更多个交易中的、具有预定类型的交易数据;基于所述特定智能合约来从所述交易数据中获取测试数据;以及根据所述测试数据来生成所述特定智能合约的测试用例。

【技术特征摘要】
1.一种用于生成区块链智能合约的测试用例的方法,包括:检索与特定智能合约相似的公共智能合约,作为相似公共智能合约;提取与每个相似公共智能合约相关的一个或更多个交易中的、具有预定类型的交易数据;基于所述特定智能合约来从所述交易数据中获取测试数据;以及根据所述测试数据来生成所述特定智能合约的测试用例。2.根据权利要求1所述的方法,其中,基于所述特定智能合约的函数中的参数的类型和/或函数名称来从所述交易数据中获取测试数据。3.根据权利要求2所述的方法,其中,获取测试数据包括:提取所述交易数据中的公共函数,得到函数列表;基于所述特定智能合约的函数中的参数的类型和函数名称在所述特定智能合约中的每个函数与所述函数列表中各个函数之间进行比较以获取所述测试数据。4.根据权利要求3所述的方法,其中,将所述函数列表中的函数视为第一函数并且将所述特定智能合约中的函数视为第二函数,所述基于所述特定智能合约的函数中的参数的类型和函数名称在所述特定智能合约中的每个函数与所述函数列表中各个函数之间进行比较以获取所述测试数据,包括:依次对各个第二函数执行以下操作:从所述函数列表中筛选出参数的类型与第二函数中的各个参数的类型分别一致的第一函数;从参数的类型与第二函数中的各个参数的类型分别一致的第一函数中进一步筛选出函数名称与所述第二函数的函数名称一致的第一函数;以及将与第二函数的各个参数的类型和函数名称分别一致的第一函数中的参数的值设置为所述测试数据。5.根据权利要求4所述的方法,其中,当从所述函数列表中未筛选出参数的类型与第二函数中的各个参数的类型分别一致的第一函数时,遍历所述第二函数中的每一个参数来执行以下操作:从所述函数列表内的各个第一函数的参数中筛选出类型与所述第二函数中的相应参数的类型一致的参数;将所述函数列表中的类型与所述相应参数的类型一致的参数的值设置为所述测试数据;当从所述函数列表的各个参数中未筛选出类型与所述相应参数的类型一致的参数时,判断所述相应参数的类型是否为数组,如果所述相应参数的类型为数组,则从所述函数列表的各个函数的各个参数中筛选出类型与所述相应参数中的一个元素的类型一致的参数并且将类型与所述相应参数中的一个元素的类型一致的参数的值的组合设置为测试数据;并且如果所述相应参数的类型不为数组,结束所述判断。6.根据权利要求5所述的方法,其中,当从参数的类型与第二函数中的各个参数的类型分别一致的第一函数中未筛选出函数名称与所述第二函数中的函数名称一致的第一函数时,基于所述第二函数的函数名称与所述第一函数的函数名称之间的相似度,对参数的类型与第二函数中的各个参数的类型分别一致的第一函数进行排序;选取相似度较高的前m个第一函数,m大于等于1;以...

【专利技术属性】
技术研发人员:皮冰锋华松周恩策孙俊
申请(专利权)人:富士通株式会社
类型:发明
国别省市:日本,JP

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1