CN107329888A - 智能合约操作码覆盖率计算方法和系统 - Google Patents
智能合约操作码覆盖率计算方法和系统 Download PDFInfo
- Publication number
- CN107329888A CN107329888A CN201710405835.9A CN201710405835A CN107329888A CN 107329888 A CN107329888 A CN 107329888A CN 201710405835 A CN201710405835 A CN 201710405835A CN 107329888 A CN107329888 A CN 107329888A
- Authority
- CN
- China
- Prior art keywords
- command code
- intelligent contract
- identification information
- coverage rate
- block chain
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种智能合约操作码覆盖率计算方法和系统,该方法包括步骤:当获取到智能合约的源代码文件时,发送部署请求给区块链,以供所述区块链根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链,以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。本发明简化了智能合约覆盖率计算流程,提高了智能合约覆盖率的计算精度。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种智能合约操作码覆盖率计算方法和系统。
背景技术
覆盖率是用来度量软件功能测试完整性的一个衡量指标,是测试技术有效性的一个度量。目前在区块链领域主要有两种覆盖率计算方法。一种是人工或脚本记录测试用例执行调用的接口方法,接着做数据统计汇总,最后输出分析结果。另外一种是通过利用智能合约的日志事件机制,先将智能合约源代码做转编译,通过对源代码进行分析插入自定义的日志事件信息,并向区块链发出交易请求,最后通过脚本分析区块链交易的日志事件信息,对数据汇总,进行统计分析,最后输出分析结果。智能合约是以区块链某种编程语言编写的,以实现特定逻辑的服务程序,并以二进制的方式发布于联盟区块链上,供智能合约参与方在某个时间点,在联盟区块链上执行调用并获得结果。联盟区块链介于公有链和私有链之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,如金融组织。
然而,第一种覆盖率计算方法较大程度上依赖于人工维护,无法自动化执行,容易出错;开发工作量大,无法大规模复用;统计粒度较粗,只能到接口方法级别,且不能反馈未覆盖部分(未执行部分)的源代码相关信息。第二种评估方案能反馈未覆盖部分的源代码相关信息,但实施步骤较为繁琐,复杂;统计粒度只能到源代码行级别,无法继续深入。
发明内容
本发明的主要目的在于提供一种智能合约操作码覆盖率计算方法和系统,旨在解决现有智能合约覆盖率计算方法计算精度差和操作繁琐的技术问题。
为实现上述目的,本发明提供一种智能合约操作码覆盖率计算方法,所述智能合约操作码覆盖率计算方法包括步骤:
当获取到智能合约的源代码文件时,发送部署请求给区块链,以供所述区块链根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;
根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链,以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;
根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。
优选地,所述根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息的步骤之前,还包括:
编译所述源代码文件,得到所述源代码文件的操作码集合以及与所述操作码对应的源代码信息,并初始化与所述源代码文件对应的登记信息。
优选地,所述构建含有所述标识信息的交易请求的步骤包括:
调用预设的测试用例,获取与所述测试用例对应的调用方法名和输入参数列表;
将所述标识信息添加到所述输入参数列表中,根据所述合约地址、所述调用方法名和所述输入参数列表构建交易请求。
优选地,所述以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中的步骤包括:
由所述区块链接收所述交易请求,解析所述交易请求中的输入参数列表,得到所述输入参数列表中的标识信息;
根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项;
若所述统计信息表中存在与所述标识信息对应的统计信息项,则获取执行所述交易请求过程中每个操作码在所述操作码集合中的序号,并在对应的标志位列表中将所述序号对应元素的值设置为1;
更新所述区块链当前的块高度,以及更新所述块高度的更新时间;
若更新后的所述块高度满足预设条件,则以所述标识信息为文件名,将所述区块链中更新前后的块高度、所述更新时间和所述标志位列表形成统计结果文件,将所述统计结果文件输出至所述存储介质中。
优选地,所述根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率的步骤包括:
获取所述统计结果文件中的标志位列表;
计算所述标志位列表中元素值为1的元素个数,以及计算所述标志位列表中总元素的个数;
基于所述预设公式,根据所述元素值为1的元素个数和所述总元素的个数计算得到所述智能合约操作码覆盖率,其中,所述预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于所述标志位列表中元素值为1的元素个数;所述操作码集合大小等于所述标志位列表中总元素的个数。
优选地,所述根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项的步骤之后,还包括:
若所述统计信息表中未存在与所述标识信息对应的统计信息项,则在所述统计信息表中以所述标识信息为索引,增加新的统计信息项。
此外,为实现上述目的,本发明还提供一种智能合约操作码覆盖率计算系统,所述智能合约操作码覆盖率计算系统包括操作码覆盖率计算装置和区块链;
所述操作码覆盖率计算装置包括:发送模块,用于当获取到智能合约的源代码文件时,发送部署请求给区块链;
所述区块链包括:部署模块,用于根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;
所述操作码覆盖率计算装置还包括:获取模块,用于根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息;
构建模块,用于构建含有所述标识信息的交易请求;
所述发送模块还用于将所述交易请求发送给所述区块链;
所述区块链还包括:输出模块,用于根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;
所述获取模块还用于根据所述标识信息在所述存储介质中获取所述统计结果文件;
所述操作码覆盖率计算装置还包括:计算模块,用于根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。
优选地,所述操作码覆盖率计算装置还包括:
编译模块,用于编译所述源代码文件,得到所述源代码文件的操作码集合以及与所述操作码对应的源代码信息;
初始化模块,用于初始化与所述源代码文件对应的登记信息。
优选地,所述构建模块包括:
调用单元,用于调用预设的测试用例;
第一获取单元,用于获取与所述测试用例对应的调用方法名和输入参数列表;
添加单元,用于将所述标识信息添加到所述输入参数列表中;
构建单元,用于根据所述合约地址、所述调用方法名和所述输入参数列表构建交易请求。
优选地,所述输出模块包括:
接收单元,用于收所述交易请求;
解析单元,用于解析所述交易请求中的输入参数列表,得到所述输入参数列表中的标识信息;
判断单元,用于根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项;
第二获取单元,用于若所述统计信息表中存在与所述标识信息对应的统计信息项,则获取执行所述交易请求过程中每个操作码在所述操作码集合中的序号;
设置单元,用于在对应的标志位列表中将所述序号对应元素的值设置为1;
更新单元,用于更新所述区块链当前的块高度,以及更新所述块高度的更新时间;
输出单元,用于若更新后的所述块高度满足预设条件,则以所述标识信息为文件名,将所述区块链中更新前后的块高度、所述更新时间和所述标志位列表形成统计结果文件,将所述统计结果文件输出至所述存储介质中。
优选地,所述计算模块包括:
第三获取单元,用于获取所述统计结果文件中的标志位列表;
计算单元,用于计算所述标志位列表中元素值为1的元素个数,以及计算所述标志位列表中总元素的个数;基于所述预设公式,根据所述元素值为1的元素个数和所述总元素的个数计算得到所述智能合约操作码覆盖率,其中,所述预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于所述标志位列表中元素值为1的元素个数;所述操作码集合大小等于所述标志位列表中总元素的个数。
优选地,所述输出模块还包括:
增加单元,用于若所述统计信息表中未存在与所述标识信息对应的统计信息项,则在所述统计信息表中以所述标识信息为索引,增加新的统计信息项。
本发明通过当获取到智能合约的源代码文件时,发送部署请求给区块链,以供所述区块链根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链,以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。简化了智能合约覆盖率计算流程;在计算智能合约覆盖率过程中,计算精度可以精确到操作码级别,提高了智能合约覆盖率计算方法的计算精度;同时,在计算智能合约覆盖率过程中,不仅可以反馈智能合约中已覆盖部分的源代码相关信息,而且可以反馈智能合约中未覆盖部分的源代码相关信息,使智能合约的反馈信息更加全面。
附图说明
图1为本发明智能合约操作码覆盖率计算方法较佳实施例的流程示意图;
图2为本发明智能合约操作码覆盖率计算系统较佳实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种智能合约操作码覆盖率计算方法。
参照图1,图1为本发明智能合约操作码覆盖率计算方法较佳实施例的流程示意图。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中,所述智能合约操作码覆盖率计算方法包括:
步骤S10,当获取到智能合约的源代码文件时,发送部署请求给区块链,以供所述区块链根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;
本发明实施例的智能合约操作码覆盖率计算方法可以由服务器来执行,也可以由终端来执行,还可以由服务器和终端共同来执行,终端包括但不限于智能手机,计算机等。其中,执行智能合约操作码覆盖率计算方法的终端和/或服务器中安装有操作码覆盖率工具,具体的操作是由终端和/或服务器中操作码覆盖率工具去执行,该操作码覆盖率工具可以理解为一段程序代码。
区块链是一串使用密码学算法所产生的数据块,每一个数据块中包含了多次区块链网络交易有效确认的信息。操作码是能被解释器识别并执行操作的指令编号,智能合约编译后的输出是一个操作码的集合。将测试用例执行过程依次执行的操作码称为操作码路径。每条操作码路径都是操作码的一个集合。解释器是一种计算机程序,可以识别指令,并将指令一个个转译成计算机可执行的代码。
当操作码覆盖率工具获取到智能合约的源代码文件时,发送部署智能合约的部署请求给区块链。操作码覆盖率工具获取智能合约的源代码文件的方式不限定于获取用户输入的智能合约源代码文件,以及调用预先存储在操作码覆盖率工具所在终端和/或服务器中的智能合约源代码文件。
当区块链接收到部署智能合约的部署请求时,区块链根据该部署请求部署智能合约,得到该智能合约的合约地址。区块链将所得的合约地址返回给操作码覆盖率工具。在本发明实施例中,合约地址以哈希值的形式表示。
步骤S20,根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链,以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;
当操作码覆盖率工具接收到区块链返回的智能合约的合约地址时,根据该合约地址获取智能合约的标识信息,该标识信息为智能合约源代码文件的标识信息,每个智能合约源代码文件只有一个唯一的标识信息。在本发明实施例中,智能合约存在对应的登记信息。在登记信息中,包括智能合约源代码文件的标识信息、智能合约的文件名称、合约地址、测试用例执行个数、以及大小为N的智能合约源代码映射表,其中,N为大于等于1的正整数。该源代码映射表以操作码集合序号[0,N-1]为索引,以操作码集合中序号为索引的操作码所对应源代码文件中对应行的源代码为值。
当得到该智能合约的标识信息后,操作码覆盖率工具构建含有该标识信息的交易请求,将所构建的交易请求发送给区块链。当区块链接收到该交易请求时,解析该交易请求,得到交易请求中的标识信息,在执行该交易请求后,根据该标识信息输出区块链的统计结果文件至预设的存储介质中。本领域技术人员可知,存储介质包括但不限于磁盘、光盘、软盘和硬盘等。
进一步地,在操作码覆盖率工具接收到合约地址时,更新登记信息中和合约地址字段。
步骤S30,根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。
当区块链将统计结果文件存储至预设的存储介质中后,操作码覆盖率工具根据标识信息在预设的存储介质中获取该统计结果文件,根据统计结果文件和预设公式计算智能合约操作码覆盖率。其中,预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合。和操作码集合的大小都可从统计结果文件中获知。
本实施例通过当获取到智能合约的源代码文件时,发送部署请求给区块链,以供所述区块链根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链,以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。简化了智能合约覆盖率计算流程;在计算智能合约覆盖率过程中,计算精度可以精确到操作码级别,提高了智能合约覆盖率计算方法的计算精度;同时,在计算智能合约覆盖率过程中,不仅可以反馈智能合约中已覆盖部分的源代码相关信息,而且可以反馈智能合约中未覆盖部分的源代码相关信息,使智能合约的反馈信息更加全面。
进一步地,提出本发明智能合约操作码覆盖率计算方法第二实施例。
所述智能合约操作码覆盖率计算方法第二实施例与所述智能合约操作码覆盖率计算方法第一实施例的区别在于,所述智能合约操作码覆盖率计算方法还包括:
步骤a,编译所述源代码文件,得到所述源代码文件的操作码集合以及与所述操作码对应的源代码信息,并初始化与所述源代码文件对应的登记信息。
当操作码覆盖率工具获取到智能合约的源代码文件时,调用编译器编译该源代码文件,得到操作码集合及操作码对应的源代码信息,其中,操作码集合的大小可以设置为N。
当操作码覆盖率工具获取到智能合约的源代码文件时,初始化与智能合约对应的登记信息,存储记录该智能合约的登记信息。需要说明的是,初始化后登记信息中测试用例执行个数的值为0。
进一步地,所述构建含有所述标识信息的交易请求的步骤包括:
步骤b,调用预设的测试用例,获取与所述测试用例对应的调用方法名和输入参数列表;
步骤c,将所述标识信息添加到所述输入参数列表中,根据所述合约地址、所述调用方法名和所述输入参数列表构建交易请求。
操作码覆盖率工具调用预设的测试用例,获取与所述测试用例对应的调用方法名和输入参数列表。需要说明的是,一个测试用例中可能包含多个函数或者多个可被执行的程序,而每一个函数或者程序都有对应的调用方法名和输入参数列表。在本发明实施例中,预设的测试用例可为用户输入,或者预先存储在操作码覆盖率所在的终端和/或服务器中的。
当操作码覆盖率工具获取到输入参数列表时,将智能合约的标识信息添加到输入参数列表中。具体地,在本发明实施例中,将标识信息添加到输入参数列表的末尾。当将标识信息添加到输入参数列表中后,操作码覆盖率工具将所接收的合约地址、所获取的调用方法名和输入参数列表构建成交易请求。
进一步地,当操作码覆盖率工具成功将交易请求发送给区块链后,将智能合约登记信息中的测试用例执行个数的值加1。
进一步地,所述以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中的步骤包括:
步骤d,由所述区块链接收所述交易请求,解析所述交易请求中的输入参数列表,得到所述输入参数列表中的标识信息;
步骤e,根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项;
当区块链接收到操作码覆盖率工具发送的交易请求后,区块链调用解释器,解析交易请求中的输入参数列表,得到输入参数列表中的标识信息。当得到标识信息后,区块链调用统计模块接口,判断统计信息表中是否已存在与标识信息对应的统计信息项。其中,统计信息项的数据结构包括以下信息:①智能合约源代码文件的标识信息;②最老的统计块号;③最新的统计块号;④更新最新的统计块号的更新时间(更新时间以时间戳的形式存在);⑤长度为智能合约操作码总长度的标志位列表。需要说明的是,统计块号是表示区块链的一种方式,以数值的形式表示,以表示区块链中各个块的位置。
步骤f,若所述统计信息表中存在与所述标识信息对应的统计信息项,则获取执行所述交易请求过程中每个操作码在所述操作码集合中的序号,并在对应的标志位列表中将所述序号对应元素的值设置为1;
步骤g,更新所述区块链当前的块高度,以及更新所述块高度的更新时间;
步骤h,若更新后的所述块高度满足预设条件,则以所述标识信息为文件名,将所述区块链中更新前后的块高度、所述更新时间和所述标志位列表形成统计结果文件,将所述统计结果文件输出至所述存储介质中。
若统计信息表中存在与标识信息对应的统计信息项,区块链则获取执行交易请求过程每个操作码在操作码集合中的序号,并在对应的标志位列表中将该序号对应元素的值设置为1。在本发明实施例中,标志位列表中所有元素的初始值都为0。执行交易请求的过程可以理解为执行测试用例的过程。
若统计信息表中存在与标识信息对应的统计信息项,区块链则更新其当前的块高度,即更新区块链的统计块号,并更新区块链块高度的更新时间。当更新区块链块高度的更新时间后,判断更新后的块高度是否满足预设条件。
若更新后的块高度满足预设条件,区块链则以标识信息为文件名,将区块链中更新前后的块高度、更新时间和标志位列表形成统计结果文件,并将所形成统计结果文件输出至所述存储介质中。可以理解的是,更新前后的块高度为区块链中最新的统计块号和最老的统计块号。
若更新后的块高度不满足预设条件,则继续等待,直到更新后的块高度满足预设条件。
需要说明的是,预设条件为更新后的块高度是否大于更新前的块高度加上预设数值,其中,预设数值可以根据需要具体设置,如可以设置为100,或者150等。
进一步地,所述根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率的步骤包括:
步骤i,获取所述统计结果文件中的标志位列表;
步骤j,计算所述标志位列表中元素值为1的元素个数,以及计算所述标志位列表中总元素的个数;
步骤k,基于所述预设公式,根据所述元素值为1的元素个数和所述总元素的个数计算得到所述智能合约操作码覆盖率,其中,所述预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于所述标志位列表中元素值为1的元素个数;所述操作码集合大小等于所述标志位列表中总元素的个数。
当操作码覆盖率工具获取到统计结果文件时,解析统计结果文件,获取统计结果文件中的标志位列表,计算标志位列表中元素值为1的元素个数,以及计算标志位列表中总元素的个数。需要说明的是,标志位列表中总元素的个数与源代码映射表中的元素个数相等,即标志位列表的大小和源代码映射表的大小相等。当操作码覆盖率工具得到标志位列表中元素值为1的元素个数,以及标志位列表中总元素的个数时,将标志位列表中元素值为1的元素个数为分子,标志位列表中总元素的个数为分母代入预设公式中,得到智能合约操作覆盖率。其中,预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于标志位列表中元素值为1的元素个数;操作码集合大小等于标志位列表中总元素的个数。
进一步的,操作码覆盖率工具可通过遍历统计结果文件标志位列表中元素值为0的元素,将标志位列表与源代码映射表进行对比,通过元素值为0的元素在智能合约登记信息中的源代码映射表中查找未覆盖的源代码行内容。需要说明的是,未覆盖的源代码为区块链在执行测试用例过程中未执行的源代码。标志位列表中的元素和源代码映射表中的元素是相同的,只是各个元素对应的内容不一样。
进一步地,所述智能合约操作码覆盖率计算方法还包括:
步骤l,若所述统计信息表中未存在与所述标识信息对应的统计信息项,则在所述统计信息表中以所述标识信息为索引,增加新的统计信息项。
若所述统计信息表中未存在与标识信息对应的统计信息项,区块链则在统计信息表以该标识信息为索引,增加新的统计信息项。在新增加的统计信息项中,最老的统计块号和最新的统计块号都初始化为当前区块链的块高度;更新时间初始化为当前时间的时间戳,可以理解的是,当前时间为增加新的统计信息项的时间;而标志位列表中所有元素对应的值都为0。当增加新的统计信息项后,统计信息表中存在与标识信息对应的统计信息项,执行步骤f,步骤g和步骤h。
进一步地,当操作码覆盖率工具计算出智能合约操作码覆盖率之后,输出分析报告。分析报告的内容包括智能合约源代码文件的标识信息、智能合约的文件名称、最老的统计块号、最新的统计块号、更新时间、合约地址、测试用例执行个数、操作码覆盖率、以及智能合约未覆盖的源代码列表。在未覆盖的源代码列表中包括未覆盖的源代码的行号,以及未覆盖的源代码内容。
本实施例通过智能合约源代码文件的标识信息、标志位列表和源代码文件映射表,提高了智能合约覆盖率计算方法的计算精度,简化了智能合约覆盖率计算流程,同时可以获取智能合约中未覆盖部分的源代码相关信息。
本发明进一步提供一种智能合约操作码覆盖率计算系统。
参照图2,图2为本发明智能合约操作码覆盖率计算系统的较佳实施例的功能模块示意图。
需要强调的是,对本领域的技术人员来说,图2所示模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图2所示的操作码覆盖率计算装置10和区块链20的模块,可轻易进行新的模块的补充;各模块的名称是自定义名称,仅用于辅助理解该智能合约操作码覆盖率计算系统的各个程序功能块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的模块所要达成的功能。
在本实施例中,所述智能合约操作码覆盖率计算系统包括操作码覆盖率计算装置10和区块链20;
所述操作码覆盖率计算装置10包括:发送模块11,用于当获取到智能合约的源代码文件时,发送部署请求给区块链20;
所述区块链20包括:部署模块21,用于根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;
本发明实施例的智能合约操作码覆盖率计算装置10中安装有操作码覆盖率工具,操作码覆盖率工具可以理解为一段程序代码。
区块链20是一串使用密码学算法所产生的数据块,每一个数据块中包含了多次区块链20网络交易有效确认的信息。操作码是能被解释器识别并执行操作的指令编号,智能合约编译后的输出是一个操作码的集合。将测试用例执行过程依次执行的操作码称为操作码路径。每条操作码路径都是操作码的一个集合。解释器是一种计算机程序,可以识别指令,并将指令一个个转译成计算机可执行的代码。
当发送模块11获取到智能合约的源代码文件时,发送部署智能合约的部署请求给区块链20。发送模块11获取智能合约的源代码文件的方式不限定于获取用户输入的智能合约源代码文件,以及调用预先存储在操作码覆盖率计算装置10中的智能合约源代码文件。
当区块链20的部署模块21接收到部署智能合约的部署请求时,部署模块21根据该部署请求部署智能合约,得到该智能合约的合约地址。部署模块21将所得的合约地址返回给操作码覆盖率计算装置10。在本发明实施例中,合约地址以哈希值的形式表示。
所述操作码覆盖率计算装置10还包括:获取模块12,用于根据所述区块链20返回的所述智能合约的合约地址获取所述智能合约的标识信息;
构建模块13,用于构建含有所述标识信息的交易请求;
所述发送模块11还用于将所述交易请求发送给所述区块链20;
所述区块链20还包括:输出模块22,用于根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;
当获取模块12接收到部署模块21返回的智能合约的合约地址时,根据该合约地址获取智能合约的标识信息,该标识信息为智能合约源代码文件的标识信息,每个智能合约源代码文件只有一个唯一的标识信息。在本发明实施例中,智能合约存在对应的登记信息。在登记信息中,包括智能合约源代码文件的标识信息、智能合约的文件名称、合约地址、测试用例执行个数、以及大小为N的智能合约源代码映射表,其中,N为大于等于1的正整数。该源代码映射表以操作码集合序号[0,N-1]为索引,以操作码集合中序号为索引的操作码所对应源代码文件中对应行的源代码为值。
当得到该智能合约的标识信息后,构建模块13构建含有该标识信息的交易请求,将所构建的交易请求发送给区块链20。当区块链20的输出模块22接收到该交易请求时,解析该交易请求,得到交易请求中的标识信息,在执行该交易请求后,根据该标识信息输出区块链20的统计结果文件至预设的存储介质中。本领域技术人员可知,存储介质包括但不限于磁盘、光盘、软盘和硬盘等。
进一步地,在操作码覆盖率工具接收到合约地址时,更新登记信息中和合约地址字段。
所述获取模块12还用于根据所述标识信息在所述存储介质中获取所述统计结果文件;
所述操作码覆盖率计算装置10还包括:计算模块14,用于根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。
当输出模块22将统计结果文件存储至预设的存储介质中后,获取模块12根据标识信息在预设的存储介质中获取该统计结果文件,计算模块14根据统计结果文件和预设公式计算智能合约操作码覆盖率。其中,预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合。和操作码集合的大小都可从统计结果文件中获知。
本实施例通过当获取到智能合约的源代码文件时,发送部署请求给区块链20,以供所述区块链20根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;根据所述区块链20返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链20,以供所述区块链20根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。简化了智能合约覆盖率计算流程;在计算智能合约覆盖率过程中,计算精度可以精确到操作码级别,提高了智能合约覆盖率计算方法的计算精度;同时,在计算智能合约覆盖率过程中,不仅可以反馈智能合约中已覆盖部分的源代码相关信息,而且可以反馈智能合约中未覆盖部分的源代码相关信息,使智能合约的反馈信息更加全面。
进一步地,提出本发明智能合约操作码覆盖率计算系统第二实施例。
所述智能合约操作码覆盖率计算系统第二实施例与所述智能合约操作码覆盖率计算系统第一实施例的区别在于,所述操作码覆盖率计算装置10还包括:
编译模块,用于编译所述源代码文件,得到所述源代码文件的操作码集合以及与所述操作码对应的源代码信息;
初始化模块,用于初始化与所述源代码文件对应的登记信息。
当获取到智能合约的源代码文件时,编译模块调用编译器编译该源代码文件,得到操作码集合及操作码对应的源代码信息,其中,操作码集合的大小可以设置为N。
当获取到智能合约的源代码文件时,初始化模块初始化与智能合约对应的登记信息,存储记录该智能合约的登记信息。需要说明的是,初始化后登记信息中测试用例执行个数的值为0。
进一步地,所述构建模块13包括:
调用单元,用于调用预设的测试用例;
第一获取单元,用于获取与所述测试用例对应的调用方法名和输入参数列表;
添加单元,用于将所述标识信息添加到所述输入参数列表中;
构建单元,用于根据所述合约地址、所述调用方法名和所述输入参数列表构建交易请求。
调用单元调用预设的测试用例,第一获取单元获取与所述测试用例对应的调用方法名和输入参数列表。需要说明的是,一个测试用例中可能包含多个函数或者多个可被执行的程序,而每一个函数或者程序都有对应的调用方法名和输入参数列表。在本发明实施例中,预设的测试用例可为用户输入,或者预先存储在操作码覆盖率所在的终端和/或服务器中的。
当第一获取单元获取到输入参数列表时,添加单元将智能合约的标识信息添加到输入参数列表中。具体地,在本发明实施例中,将标识信息添加到输入参数列表的末尾。当添加单元将标识信息添加到输入参数列表中后,构建单元将所接收的合约地址、所获取的调用方法名和输入参数列表构建成交易请求。
进一步地,当发送模块11成功将交易请求发送给区块链20后,将智能合约登记信息中的测试用例执行个数的值加1。
进一步地,所述输出模块22包括:
接收单元,用于收所述交易请求;
解析单元,用于解析所述交易请求中的输入参数列表,得到所述输入参数列表中的标识信息;
判断单元,用于根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项;
当接收单元接收到发送模块11发送的交易请求后,解析单元调用解释器,解析交易请求中的输入参数列表,得到输入参数列表中的标识信息。当得到标识信息后,判断单元调用统计模块接口,判断统计信息表中是否已存在与标识信息对应的统计信息项。其中,统计信息项的数据结构包括以下信息:①智能合约源代码文件的标识信息;②最老的统计块号;③最新的统计块号;④更新最新的统计块号的更新时间(更新时间以时间戳的形式存在);⑤长度为智能合约操作码总长度的标志位列表。需要说明的是,统计块号是表示区块链20的一种方式,以数值的形式表示,以表示区块链20中各个块的位置。
第二获取单元,用于若所述统计信息表中存在与所述标识信息对应的统计信息项,则获取执行所述交易请求过程中每个操作码在所述操作码集合中的序号;
设置单元,用于在对应的标志位列表中将所述序号对应元素的值设置为1;
更新单元,用于更新所述区块链20当前的块高度,以及更新所述块高度的更新时间;
输出单元,用于若更新后的所述块高度满足预设条件,则以所述标识信息为文件名,将所述区块链20中更新前后的块高度、所述更新时间和所述标志位列表形成统计结果文件,将所述统计结果文件输出至所述存储介质中。
若统计信息表中存在与标识信息对应的统计信息项,第二获取单元则获取执行交易请求过程每个操作码在操作码集合中的序号,设置单元在对应的标志位列表中将该序号对应元素的值设置为1。在本发明实施例中,标志位列表中所有元素的初始值都为0。执行交易请求的过程可以理解为执行测试用例的过程。
若统计信息表中存在与标识信息对应的统计信息项,更新单元则更新其当前的块高度,即更新区块链20的统计块号,并更新区块链20块高度的更新时间。当更新单元更新区块链20块高度的更新时间后,判断更新后的块高度是否满足预设条件。
若更新后的块高度满足预设条件,区块链20则以标识信息为文件名,将区块链20中更新前后的块高度、更新时间和标志位列表形成统计结果文件,并将所形成统计结果文件输出至所述存储介质中。可以理解的是,更新前后的块高度为区块链20中最新的统计块号和最老的统计块号。
若更新后的块高度不满足预设条件,则继续等待,直到更新后的块高度满足预设条件。
需要说明的是,预设条件为更新后的块高度是否大于更新前的块高度加上预设数值,其中,预设数值可以根据需要具体设置,如可以设置为100,或者150等。
进一步地,所述计算模块14包括:
第三获取单元,用于获取所述统计结果文件中的标志位列表;
计算单元,用于计算所述标志位列表中元素值为1的元素个数,以及计算所述标志位列表中总元素的个数;基于所述预设公式,根据所述元素值为1的元素个数和所述总元素的个数计算得到所述智能合约操作码覆盖率,其中,所述预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于所述标志位列表中元素值为1的元素个数;所述操作码集合大小等于所述标志位列表中总元素的个数。
当获取到统计结果文件时,解析统计结果文件,第三获取单元获取统计结果文件中的标志位列表,计算单元计算标志位列表中元素值为1的元素个数,以及计算标志位列表中总元素的个数。需要说明的是,标志位列表中总元素的个数与源代码映射表中的元素个数相等,即标志位列表的大小和源代码映射表的大小相等。当得到标志位列表中元素值为1的元素个数,以及标志位列表中总元素的个数时,计算单元将标志位列表中元素值为1的元素个数为分子,标志位列表中总元素的个数为分母代入预设公式中,得到智能合约操作覆盖率。其中,预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于标志位列表中元素值为1的元素个数;操作码集合大小等于标志位列表中总元素的个数。
进一步的,操作码覆盖率工具可通过遍历统计结果文件标志位列表中元素值为0的元素,将标志位列表与源代码映射表进行对比,通过元素值为0的元素在智能合约登记信息中的源代码映射表中查找未覆盖的源代码行内容。需要说明的是,未覆盖的源代码为区块链20在执行测试用例过程中未执行的源代码。标志位列表中的元素和源代码映射表中的元素是相同的,只是各个元素对应的内容不一样。
进一步地,所述输出模块22还包括:
增加单元,用于若所述统计信息表中未存在与所述标识信息对应的统计信息项,则在所述统计信息表中以所述标识信息为索引,增加新的统计信息项。
若所述统计信息表中未存在与标识信息对应的统计信息项,增加单元则在统计信息表以该标识信息为索引,增加新的统计信息项。在新增加的统计信息项中,最老的统计块号和最新的统计块号都初始化为当前区块链20的块高度;更新时间初始化为当前时间的时间戳,可以理解的是,当前时间为增加新的统计信息项的时间;而标志位列表中所有元素对应的值都为0。当增加新的统计信息项后,统计信息表中存在与标识信息对应的统计信息项,执行第二获取单元,设置单元,更新单元和输出单元。
进一步地,当计算模块14计算出智能合约操作码覆盖率之后,输出分析报告。分析报告的内容包括智能合约源代码文件的标识信息、智能合约的文件名称、最老的统计块号、最新的统计块号、更新时间、合约地址、测试用例执行个数、操作码覆盖率、以及智能合约未覆盖的源代码列表。在未覆盖的源代码列表中包括未覆盖的源代码的行号,以及未覆盖的源代码内容。
本实施例通过智能合约源代码文件的标识信息、标志位列表和源代码文件映射表,提高了智能合约覆盖率计算方法的计算精度,简化了智能合约覆盖率计算流程,同时可以获取智能合约中未覆盖部分的源代码相关信息。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种智能合约操作码覆盖率计算方法,其特征在于,所述智能合约操作码覆盖率计算方法包括以下步骤:
当获取到智能合约的源代码文件时,发送部署请求给区块链,以供所述区块链根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;
根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息,构建含有所述标识信息的交易请求,并将所述交易请求发送给所述区块链,以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;
根据所述标识信息在所述存储介质中获取所述统计结果文件,根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。
2.如权利要求1所述的智能合约操作码覆盖率计算方法,其特征在于,所述根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息的步骤之前,还包括:
编译所述源代码文件,得到所述源代码文件的操作码集合以及与所述操作码对应的源代码信息,并初始化与所述源代码文件对应的登记信息。
3.如权利要求2所述的智能合约操作码覆盖率计算方法,其特征在于,所述构建含有所述标识信息的交易请求的步骤包括:
调用预设的测试用例,获取与所述测试用例对应的调用方法名和输入参数列表;
将所述标识信息添加到所述输入参数列表中,根据所述合约地址、所述调用方法名和所述输入参数列表构建交易请求。
4.如权利要求3所述的智能合约操作码覆盖率计算方法,其特征在于,所述以供所述区块链根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中的步骤包括:
由所述区块链接收所述交易请求,解析所述交易请求中的输入参数列表,得到所述输入参数列表中的标识信息;
根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项;
若所述统计信息表中存在与所述标识信息对应的统计信息项,则获取执行所述交易请求过程中每个操作码在所述操作码集合中的序号,并在对应的标志位列表中将所述序号对应元素的值设置为1;
更新所述区块链当前的块高度,以及更新所述块高度的更新时间;
若更新后的所述块高度满足预设条件,则以所述标识信息为文件名,将所述区块链中更新前后的块高度、所述更新时间和所述标志位列表形成统计结果文件,将所述统计结果文件输出至所述存储介质中。
5.如权利要求4所述的智能合约操作码覆盖率计算方法,其特征在于,所述根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率的步骤包括:
获取所述统计结果文件中的标志位列表;
计算所述标志位列表中元素值为1的元素个数,以及计算所述标志位列表中总元素的个数;
基于所述预设公式,根据所述元素值为1的元素个数和所述总元素的个数计算得到所述智能合约操作码覆盖率,其中,所述预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于所述标志位列表中元素值为1的元素个数;所述操作码集合大小等于所述标志位列表中总元素的个数。
6.如权利要求4或5所述的智能合约操作码覆盖率计算方法,其特征在于,所述根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项的步骤之后,还包括:
若所述统计信息表中未存在与所述标识信息对应的统计信息项,则在所述统计信息表中以所述标识信息为索引,增加新的统计信息项。
7.一种智能合约操作码覆盖率计算系统,其特征在于,所述智能合约操作码覆盖率计算系统包括操作码覆盖率计算装置和区块链;
所述操作码覆盖率计算装置包括:发送模块,用于当获取到智能合约的源代码文件时,发送部署请求给区块链;
所述区块链包括:部署模块,用于根据所述部署请求部署智能合约,并返回所述智能合约的合约地址;
所述操作码覆盖率计算装置还包括:获取模块,用于根据所述区块链返回的所述智能合约的合约地址获取所述智能合约的标识信息;
构建模块,用于构建含有所述标识信息的交易请求;
所述发送模块还用于将所述交易请求发送给所述区块链;
所述区块链还包括:输出模块,用于根据所述交易请求中的标识信息输出对应的统计结果文件至预设的存储介质中;
所述获取模块还用于根据所述标识信息在所述存储介质中获取所述统计结果文件;
所述操作码覆盖率计算装置还包括:计算模块,用于根据所述统计结果文件和预设公式计算所述智能合约操作码覆盖率。
8.如权利要求7所述的智能合约操作码覆盖率计算系统,其特征在于,所述操作码覆盖率计算装置还包括:
编译模块,用于编译所述源代码文件,得到所述源代码文件的操作码集合以及与所述操作码对应的源代码信息;
初始化模块,用于初始化与所述源代码文件对应的登记信息。
9.如权利要求8所述的智能合约操作码覆盖率计算系统,其特征在于,所述构建模块包括:
调用单元,用于调用预设的测试用例;
第一获取单元,用于获取与所述测试用例对应的调用方法名和输入参数列表;
添加单元,用于将所述标识信息添加到所述输入参数列表中;
构建单元,用于根据所述合约地址、所述调用方法名和所述输入参数列表构建交易请求。
10.如权利要求9所述的智能合约操作码覆盖率计算系统,其特征在于,所述输出模块包括:
接收单元,用于收所述交易请求;
解析单元,用于解析所述交易请求中的输入参数列表,得到所述输入参数列表中的标识信息;
判断单元,用于根据所述标识信息判断预置的统计信息表中是否已存在与所述标识信息对应的统计信息项;
第二获取单元,用于若所述统计信息表中存在与所述标识信息对应的统计信息项,则获取执行所述交易请求过程中每个操作码在所述操作码集合中的序号;
设置单元,用于在对应的标志位列表中将所述序号对应元素的值设置为1;
更新单元,用于更新所述区块链当前的块高度,以及更新所述块高度的更新时间;
输出单元,用于若更新后的所述块高度满足预设条件,则以所述标识信息为文件名,将所述区块链中更新前后的块高度、所述更新时间和所述标志位列表形成统计结果文件,将所述统计结果文件输出至所述存储介质中。
11.如权利要求10所述的智能合约操作码覆盖率计算系统,其特征在于,所述计算模块包括:
第三获取单元,用于获取所述统计结果文件中的标志位列表;
计算单元,用于计算所述标志位列表中元素值为1的元素个数,以及计算所述标志位列表中总元素的个数;基于所述预设公式,根据所述元素值为1的元素个数和所述总元素的个数计算得到所述智能合约操作码覆盖率,其中,所述预设公式为:
其中,m>0,Ti代表第i个测试用例的操作码路径的集合,代表m个测试用例的操作码路径的集合做数学并集所得到的集合,等于所述标志位列表中元素值为1的元素个数;所述操作码集合大小等于所述标志位列表中总元素的个数。
12.如权利要求10或11所述的智能合约操作码覆盖率计算系统,其特征在于,所述输出模块还包括:
增加单元,用于若所述统计信息表中未存在与所述标识信息对应的统计信息项,则在所述统计信息表中以所述标识信息为索引,增加新的统计信息项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710405835.9A CN107329888B (zh) | 2017-05-31 | 2017-05-31 | 智能合约操作码覆盖率计算方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710405835.9A CN107329888B (zh) | 2017-05-31 | 2017-05-31 | 智能合约操作码覆盖率计算方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107329888A true CN107329888A (zh) | 2017-11-07 |
CN107329888B CN107329888B (zh) | 2019-10-18 |
Family
ID=60194149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710405835.9A Active CN107329888B (zh) | 2017-05-31 | 2017-05-31 | 智能合约操作码覆盖率计算方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107329888B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107886006A (zh) * | 2017-11-28 | 2018-04-06 | 北京博晨技术有限公司 | 数据操作方法、装置及电子设备 |
CN107943691A (zh) * | 2017-11-17 | 2018-04-20 | 深圳圣马歌科技有限公司 | 一种自动产生智能合约的功能测试页面的方法及装置 |
CN107943469A (zh) * | 2017-11-17 | 2018-04-20 | 深圳圣马歌科技有限公司 | 一种智能合约的发布方法及装置 |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN109117179A (zh) * | 2018-08-31 | 2019-01-01 | 北京八分量信息科技有限公司 | 一种软件的实现方法及平台 |
CN109408373A (zh) * | 2018-09-26 | 2019-03-01 | 深圳壹账通智能科技有限公司 | 智能合约的测试方法、计算机可读存储介质及测试终端 |
CN109960696A (zh) * | 2019-03-22 | 2019-07-02 | 杭州复杂美科技有限公司 | 一种智能合约的配置方法、设备和存储介质 |
CN110162470A (zh) * | 2019-04-28 | 2019-08-23 | 阿里巴巴集团控股有限公司 | 一种区块链的测试方法和装置 |
CN110221956A (zh) * | 2018-03-02 | 2019-09-10 | 富士通株式会社 | 用于生成区块链智能合约的测试用例的方法和设备 |
CN110633199A (zh) * | 2018-06-22 | 2019-12-31 | 富士通株式会社 | 用于支持智能合约的区块链的测试装置、方法及介质 |
WO2020015448A1 (zh) * | 2018-07-18 | 2020-01-23 | 百度在线网络技术(北京)有限公司 | 一种区块链网络的账号处理方法、装置、设备及存储介质 |
CN110766402A (zh) * | 2019-06-27 | 2020-02-07 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN111090874A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 调用合约的方法及装置 |
CN111290958A (zh) * | 2020-02-20 | 2020-06-16 | 联动优势(北京)数字科技有限公司 | 一种调试智能合约的方法及装置 |
CN111459604A (zh) * | 2019-01-18 | 2020-07-28 | 南京大学 | 一种基于窥孔优化的智能合约性能优化方法 |
US10783082B2 (en) * | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN112202647A (zh) * | 2020-12-09 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 区块链网络中的测试方法、装置及测试设备 |
CN112783795A (zh) * | 2021-02-22 | 2021-05-11 | 中国工商银行股份有限公司 | 软件测试覆盖率检测方法及系统 |
CN113204765A (zh) * | 2021-04-27 | 2021-08-03 | 交叉信息核心技术研究院(西安)有限公司 | 一种Hyperledger Fabric链码的测试方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885273A (zh) * | 2005-06-21 | 2006-12-27 | 华为技术有限公司 | 一种逻辑测试的功能覆盖率分析方法 |
CN105404585A (zh) * | 2015-12-01 | 2016-03-16 | 腾讯科技(深圳)有限公司 | 获取代码覆盖率的方法及装置 |
CN105468505A (zh) * | 2014-08-12 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法及覆盖率测试装置 |
CN105718373A (zh) * | 2016-01-27 | 2016-06-29 | 中电科航空电子有限公司 | 满足do-178c的代码覆盖率生成方法 |
US20160275461A1 (en) * | 2015-03-20 | 2016-09-22 | Rivetz Corp. | Automated attestation of device integrity using the block chain |
CN105976231A (zh) * | 2016-06-24 | 2016-09-28 | 深圳前海微众银行股份有限公司 | 基于区块链智能合约的资产管理方法及节点 |
US20160323109A1 (en) * | 2015-05-01 | 2016-11-03 | Monegraph, Inc. | Rights transfers using block chain transactions |
CN106295406A (zh) * | 2016-08-13 | 2017-01-04 | 深圳市樊溪电子有限公司 | 一种用于区块链自安全存储系统及其方法 |
CN106407808A (zh) * | 2015-07-31 | 2017-02-15 | 英国电讯有限公司 | 减轻区块链攻击 |
CN106559211A (zh) * | 2016-11-22 | 2017-04-05 | 中国电子科技集团公司第三十研究所 | 一种区块链中隐私保护智能合约方法 |
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
-
2017
- 2017-05-31 CN CN201710405835.9A patent/CN107329888B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885273A (zh) * | 2005-06-21 | 2006-12-27 | 华为技术有限公司 | 一种逻辑测试的功能覆盖率分析方法 |
CN105468505A (zh) * | 2014-08-12 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法及覆盖率测试装置 |
US20160275461A1 (en) * | 2015-03-20 | 2016-09-22 | Rivetz Corp. | Automated attestation of device integrity using the block chain |
US20160323109A1 (en) * | 2015-05-01 | 2016-11-03 | Monegraph, Inc. | Rights transfers using block chain transactions |
CN106407808A (zh) * | 2015-07-31 | 2017-02-15 | 英国电讯有限公司 | 减轻区块链攻击 |
CN105404585A (zh) * | 2015-12-01 | 2016-03-16 | 腾讯科技(深圳)有限公司 | 获取代码覆盖率的方法及装置 |
CN105718373A (zh) * | 2016-01-27 | 2016-06-29 | 中电科航空电子有限公司 | 满足do-178c的代码覆盖率生成方法 |
CN105976231A (zh) * | 2016-06-24 | 2016-09-28 | 深圳前海微众银行股份有限公司 | 基于区块链智能合约的资产管理方法及节点 |
CN106295406A (zh) * | 2016-08-13 | 2017-01-04 | 深圳市樊溪电子有限公司 | 一种用于区块链自安全存储系统及其方法 |
CN106559211A (zh) * | 2016-11-22 | 2017-04-05 | 中国电子科技集团公司第三十研究所 | 一种区块链中隐私保护智能合约方法 |
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943691A (zh) * | 2017-11-17 | 2018-04-20 | 深圳圣马歌科技有限公司 | 一种自动产生智能合约的功能测试页面的方法及装置 |
CN107943469A (zh) * | 2017-11-17 | 2018-04-20 | 深圳圣马歌科技有限公司 | 一种智能合约的发布方法及装置 |
CN107943469B (zh) * | 2017-11-17 | 2022-01-11 | 深圳圣马歌科技有限公司 | 一种智能合约的发布方法及装置 |
CN107886006B (zh) * | 2017-11-28 | 2020-06-02 | 北京博晨技术有限公司 | 数据操作方法、装置及电子设备 |
CN107886006A (zh) * | 2017-11-28 | 2018-04-06 | 北京博晨技术有限公司 | 数据操作方法、装置及电子设备 |
CN110221956A (zh) * | 2018-03-02 | 2019-09-10 | 富士通株式会社 | 用于生成区块链智能合约的测试用例的方法和设备 |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
CN110633199A (zh) * | 2018-06-22 | 2019-12-31 | 富士通株式会社 | 用于支持智能合约的区块链的测试装置、方法及介质 |
US11687942B2 (en) | 2018-07-18 | 2023-06-27 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing account of blockchain network, and storage medium |
WO2020015448A1 (zh) * | 2018-07-18 | 2020-01-23 | 百度在线网络技术(北京)有限公司 | 一种区块链网络的账号处理方法、装置、设备及存储介质 |
CN109117179A (zh) * | 2018-08-31 | 2019-01-01 | 北京八分量信息科技有限公司 | 一种软件的实现方法及平台 |
CN109408373A (zh) * | 2018-09-26 | 2019-03-01 | 深圳壹账通智能科技有限公司 | 智能合约的测试方法、计算机可读存储介质及测试终端 |
CN109408373B (zh) * | 2018-09-26 | 2022-03-04 | 深圳壹账通智能科技有限公司 | 智能合约的测试方法、计算机可读存储介质及测试终端 |
CN111459604A (zh) * | 2019-01-18 | 2020-07-28 | 南京大学 | 一种基于窥孔优化的智能合约性能优化方法 |
CN109960696A (zh) * | 2019-03-22 | 2019-07-02 | 杭州复杂美科技有限公司 | 一种智能合约的配置方法、设备和存储介质 |
CN110162470A (zh) * | 2019-04-28 | 2019-08-23 | 阿里巴巴集团控股有限公司 | 一种区块链的测试方法和装置 |
CN110162470B (zh) * | 2019-04-28 | 2023-08-18 | 创新先进技术有限公司 | 一种区块链的测试方法和装置 |
CN110766402B (zh) * | 2019-06-27 | 2021-09-03 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
CN110766402A (zh) * | 2019-06-27 | 2020-02-07 | 深圳市润鹏华通创新科技有限公司 | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 |
US11010303B2 (en) | 2019-08-30 | 2021-05-18 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
US10783082B2 (en) * | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
US11307990B2 (en) | 2019-08-30 | 2022-04-19 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
CN111290958A (zh) * | 2020-02-20 | 2020-06-16 | 联动优势(北京)数字科技有限公司 | 一种调试智能合约的方法及装置 |
CN111090874A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 调用合约的方法及装置 |
CN112202647A (zh) * | 2020-12-09 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 区块链网络中的测试方法、装置及测试设备 |
CN112783795A (zh) * | 2021-02-22 | 2021-05-11 | 中国工商银行股份有限公司 | 软件测试覆盖率检测方法及系统 |
CN112783795B (zh) * | 2021-02-22 | 2024-02-09 | 中国工商银行股份有限公司 | 软件测试覆盖率检测方法及系统 |
CN113204765A (zh) * | 2021-04-27 | 2021-08-03 | 交叉信息核心技术研究院(西安)有限公司 | 一种Hyperledger Fabric链码的测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107329888B (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107329888A (zh) | 智能合约操作码覆盖率计算方法和系统 | |
CN113946461A (zh) | 一种故障根因分析的方法及装置 | |
CN109034660A (zh) | 基于预测模型的风险控制策略的确定方法及相关装置 | |
WO1992016906A1 (en) | Computerised information-retrieval database systems | |
CN101345654A (zh) | 一种指标计算方法和装置 | |
CN105630957A (zh) | 一种基于用户管理应用行为的应用质量判别方法及系统 | |
CN113656686B (zh) | 一种基于产教融合的任务报告的生成方法及服务系统 | |
CN106485261A (zh) | 一种图像识别的方法和装置 | |
CN110147544A (zh) | 一种基于自然语言的指令生成方法、装置以及相关设备 | |
CN113362024A (zh) | 一种基于区块链的应用程序开发多模块协同系统 | |
CN108733712A (zh) | 一种问答系统评价方法和装置 | |
CN114584374B (zh) | 一种基于区块链的大数据隐私共享安全保护系统及方法 | |
CN104679870B (zh) | 一种用于信息系统的数据获取的方法 | |
CN109240903A (zh) | 一种自动评估的方法和装置 | |
CN110489142A (zh) | 设备软件升级的评估方法及装置、存储介质、终端 | |
US10956914B2 (en) | System and method for mapping a customer journey to a category | |
CN111382250A (zh) | 问句文本的匹配方法、装置、计算机设备和存储介质 | |
CN107871055A (zh) | 一种数据分析方法和装置 | |
CN108183890A (zh) | 一种数据通信协议的解析方法及系统 | |
US11275756B2 (en) | System for extracting, categorizing and analyzing data for training user selection of products and services, and a method thereof | |
CN108259441A (zh) | 一种防止url访问绕行的方法及装置 | |
CN111737529B (zh) | 一种多源异构数据采集方法 | |
US10003492B2 (en) | Systems and methods for managing data related to network elements from multiple sources | |
CN116777481A (zh) | 一种产品供应链追溯方法及系统 | |
CN108345620A (zh) | 品牌信息处理方法、装置、存储介质及电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |