一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

智能合约测试方法、装置、计算机设备及存储介质与流程

2022-05-18 05:22:08 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,尤其涉及一种智能合约测试方法、装置、计算机设备及存储介质。


背景技术:

2.由于业务场景的复杂多样性,智能合约需满足图灵完备性,因此其可能存在异常复杂的业务逻辑,为了确保智能合约的质量,对发布的智能合约进行测试是必不可少的环节。
3.目前,智能合约测试主要先在区块链上部署待测试的智能合约,然后再调用合约方法来测试,若检测到智能合约存在的问题,在进行相应的代码修改之后,需要重新进行区块链网络和智能合约或合约方法的部署,然后再调用合约方法来测试,测试流程重复,使得测试时间过长,进而导致合约测试效率较低。


技术实现要素:

4.本发明实施例提供一种智能合约测试方法、装置、计算机设备和存储介质,以提高智能合约测试效率。
5.为了解决上述技术问题,本技术实施例提供一种智能合约测试方法,包括:
6.搭建线下测试环境,并在所述线下测试环境中,模拟实现操作接口组;
7.采用测试数据对所述线下测试环境进行初始化,得到初始化线下测试环境,所述初始化线下测试环境包括预存数据信息;
8.根据所述操作接口组,获得待测试合约;
9.调用所述待测试合约,得到第一执行结果;
10.根据所述预存数据信息和所述第一执行结果,判断所述待测试合约是否正确;
11.若不正确,则返回根据所述操作接口组,获得待测试合约的步骤继续执行,直至确定所述待测试合约正确为止。
12.为了解决上述技术问题,本技术实施例还提供一种智能合约测试装置,包括:
13.测试环境搭建模块,用于搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组;
14.测试环境初始化模块,用于采用测试数据对所述线下测试环境进行初始化,得到初始化线下测试环境,所述初始化线下测试环境包括预存数据信息;
15.第一待测试合约获得模块,用于根据所述操作接口组,获得待测试合约;
16.第一结果获取模块,用于调用所述待测试合约,得到第一执行结果;
17.第一判断模块,用于根据所述预存数据信息和所述第一执行结果,判断所述待测试合约是否正确;
18.第二判断模块,用于若不正确,则返回根据所述操作接口组,获得待测试合约的步骤继续执行,直至确定所述待测试合约正确为止。
19.为了解决上述技术问题,本技术实施例还提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述智能合约测试方法的步骤。
20.为了解决上述技术问题,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述智能合约测试方法的步骤。
21.本发明实施例提供的智能合约测试方法、装置、计算机设备及存储介质,通过搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组,采用测试数据对线下测试环境进行初始化,得到初始化线下测试环境,初始化线下测试环境包括预存数据信息,根据操作接口组,获得待测试合约,调用待测试合约,得到第一执行结果,根据预存数据信息和第一执行结果,判断待测试合约是否正确,若不正确,则返回根据操作接口组,获得待测试合约的步骤继续执行,直至确定待测试合约正确为止,本发明通过搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组,通过操作接口组,对待测试合约进行测试,无需对待测试合约进行部署,且确定待测试合约不正确后,可通过调用操作接口组,对待测试合约进行实时修改并测试,有效提高了智能合约测试效率。
附图说明
22.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1是本技术可以应用于其中的示例性系统架构图;
24.图2是本技术的智能合约测试方法的一个实施例的流程图;
25.图3是根据本技术的智能合约测试装置的一个实施例的结构示意图;
26.图4是根据本技术的计算机设备的一个实施例的结构示意图。
具体实施方式
27.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本技术的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
28.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发
明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.请参阅图1,如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
31.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。
32.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
33.服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
34.需要说明的是,本技术实施例所提供的智能合约测试方法由服务器执行,相应地,智能合约测试装置设置于服务器中。
35.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器,本技术实施例中的终端设备101、102、103具体可以对应的是实际生产中的应用系统。
36.请参阅图2,图2示出本发明实施例提供的一种智能合约测试方法,以该方法应用在图1中的服务端为例进行说明,详述如下:
37.s201:搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组。
38.具体的,定义模拟运行类作为线下测试环境,该模拟运行类包括接口类,接口类用于实现操作接口组,其中,操作接口组的获取方法为:根据待测试合约确定待测试合约需要使用的区块链上的虚拟机底层接口,将该虚拟机底层接口抽象,得到操作接口组。
39.示例性的,假设根据待测试合约确定需要使用的虚拟机底层接口包括a操作接口和b操作接口,模拟运行类为runtime,接口类为env,其中,a操作接口用于将数据以“键-值”的形式存入链上,b操作接口用于根据“键”从区块链上获取对应的“值”,模拟实现操作接口组的方式为:将a操作接口定义为方法a,将b操作接口定义为方法b,且方法a和方法b属于同一接口类env。
40.在一些实施例的可选实现方式中,操作接口组包括读取数据的接口、获取区块高度的接口、获取合约地址接口、获取被调用合约地址接口和存储数据的接口,模拟实现操作接口组具体为:
41.模拟实现读取数据的接口,其具体为编写合约方法,用于通过“键”去获取线下测试环境中的存储结构对应的“值”。
42.模拟实现获取区块高度的接口,其具体为编写合约方法,用于返回“hashheight”的值。
43.模拟实现获取合约地址接口,其具体为编写合约方法,用于返回“selfaddress”的值。
44.模拟实现获取被调用合约地址,其具体为编写合约方法,用于返回“calladdress”的值。
45.实现存储数据的接口,其具体为编写合约方法,将键值对{“key”:“value”}存入线下测试环境中的存储结构。
46.s202:采用测试数据对线下测试环境进行初始化,得到初始化线下测试环境,初始化线下测试环境包括预存数据信息。
47.具体的,测试数据根据待测试合约生成的,其可以通过相关人员根据待测试合约进行编写得到,预存数据信息包括至少一个根据测试数据可计算得到的数值。
48.示例性的,假设待测试合约的内容为add(int a,int a),模拟运行类实现add(int a,int b),则预存数据信息为“a b”。
49.s203:根据操作接口组,获得待测试合约。
50.具体的,调用操作接口组,编写待测试合约,最终得到待测试合约。
51.s204:调用待测试合约,得到第一执行结果。
52.具体的,假设待测试合约包括合约方法add(int a,int a)和合约方法sub(int a,int a),调用add(int a,int b)、sub(int a,int a),返回第一执行结果{return a b;}和{return a-b;}。
53.s205:根据预存数据信息和第一执行结果,判断待测试合约是否正确。
54.具体的,将预存数据信息和第一执行结果进行类比,得到类比结果,若类比结果为相等,则确定待测试合约正确,否则,确定待测试合约不正确。
55.s206:若不正确,则返回根据操作接口组,获得待测试合约的步骤继续执行,直至确定待测试合约正确为止。
56.在本实施例中,搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组,采用测试数据对线下测试环境进行初始化,得到初始化线下测试环境,初始化线下测试环境包括预存数据信息,根据操作接口组,获得待测试合约,调用待测试合约,得到第一执行结果,根据预存数据信息和第一执行结果,判断待测试合约是否正确,若不正确,则返回根据操作接口组,获得待测试合约的步骤继续执行,直至确定待测试合约正确为止,本发明通过搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组,通过操作接口组,对待测试合约进行测试,无需对待测试合约进行部署,且确定待测试合约不正确后,可通过调用操作接口组,对待测试合约进行实时修改并测试,有效提高了智能合约测试效率。
57.在本实施例的一些可选的实现方式中,步骤s201中,搭建线下测试环境包括:
58.配置模拟存储结构。
59.具体的,可配置模拟存储结构map并命名为storage,其中,map存储结构是键-值对的集合,通常可以理解为关联数组,即可使用“键”作为下标来获取一个对应的“值”。
60.配置待测试合约的合约地址。
61.具体的,可配置当前合约地址,命名为selfaddress。
62.配置待测试合约的调用合约地址。
63.具体的,可配置被调用合约地址,命名为calladdress。
64.配置区块高度。
65.具体的,可配置区块高度,命名为hashheight。
66.在本实施例中,通过搭建线下测试环境,实现在线下对智能合约的正确性进行测试,有利于减少智能合约的测试步骤,进而提高智能合约的测试效率。
67.在本实施例的一些可选的实现方式中,步骤s203,根据操作接口组,获得待测试合约包括:
68.调用操作接口组,定义合约类。
69.具体的,调用操作接口组,根据操作接口组,定义一个合约类,合约类用于定义需要提供的合约方法。
70.初始化合约类,得到合约对象实例。
71.通过合约对象实例,获得待测试合约。
72.具体的,可在合约对象实例中编写待测试合约,例如,在合约对象实例中编写合约方法a和合约方法b,其中,合约方法a用于将“值”加上前缀“prefix_”存入区块链,合约方法b用于返回对应“键”的“值”。
73.在本实施例中,通过调用操作接口组,获得待测试合约,有利于在确定待测试合约编写不正确后,实时对待测试合约进行修改以及测试,提高智能合约的测试效率。
74.在本实施例的一些可选的实现方式中,步骤s205,根据预存数据信息和第一执行结果,判断合约方法是否正确包括:
75.根据预存数据信息,计算得到第一待比较数据。
76.具体的,假设待测试合约的内容为add(int a,int b),则预测数据信息为a和b,通过将a和b进行相加得到和值,将该和值作为第一待比较数据。
77.将第一执行结果与第一待比较数据进行比较,得到第一比较结果。
78.具体的,假设待测试合约的内容为add(int a,int b),则预测数据信息为a和b,通过将a和b进行相加得到和值,将该和值作为第一待比较数据,若调用待测试合约后,返回的第一执行结果为a b的和值,则将第一执行结果和第一待比较数据进行类比,得到的第一比较结果为相等,否则,得到的第一比较结果为不相等。
79.若第一比较结果为相等,则确定待测试合约正确。
80.若第一比较结果为不相等,则确定待测试合约不正确。
81.在本实施例中,通过预存数据信息和第一执行结果,得到第一比较结果,并根据第一比较结果确定待测试合约是否正确,有利于实时确定待测试合约是否正确,并实时对待测试合约进行修改以及测试,提高智能合约的测试效率。
82.在本实施例的一些可选的实现方式中,待测试合约包括至少一个合约方法,当对其中一个合约方法进行测试时,智能合约测试方法还包括如下步骤s2070至步骤s2073:
83.步骤s2070:根据操作接口组,获得合约方法。
84.具体的,通过调用操作接口组中的操作接口,在操作接口进行合约方法的编写,生成合约方法。
85.步骤s2071:调用合约方法,得到第二执行结果。
86.具体的,第二执行结果为调用合约方法后,得到的返回值。
87.步骤s2072:根据预存数据信息和第二执行结果,判断合约方法是否正确。
88.具体的,假设模拟运行类为runtime,合约类为demo,在合约类中定义合约方法c,其中,合约方法c用于将{“hello”:“world”}的键值对存入区块链,根据合约方法c编写测试
数据,使用测试数据对模拟运行类进行初始化,得到预存数据信息为“world”,调用合约方法c,将{“hello”:“world”}的键值对存入模拟运行类中的storage,紧接着断言runtime中的storage中键为”hello”的值为”world”。若断言正确,表明合约方法c正确,否则表明合约方法c不正确。
89.步骤s2073:若合约方法不正确,则返回根据操作接口组,获得合约方法的步骤继续执行,直至合约方法正确为止。
90.在本实施例中,通过调用操作接口组,获得合约方法,有利于对单个合约方法进行测试,并在确定合约方法编写不正确后,实时对合约方法进行修改以及测试,提高智能合约的测试效率和智能合约测试的灵活度。
91.在本实施例的一些可选的实现方式中,步骤s2072,根据预存数据信息和第二执行结果,判断合约方法是否正确包括:
92.根据预存数据信息,计算得到第二待比较数据。
93.具体的,假设合约方法为add(int a,int b),则预测数据信息为a和b,通过将a和b进行相加得到和值,将该和值作为第二待比较数据。
94.将第二执行结果与第二待比较数据进行比较,得到第二比较结果。
95.具体的,假设合约方法为add(int a,int b),则预测数据信息为a和b,通过将a和b进行相加得到和值,将该和值作为第二待比较数据,若调用合约方法后,返回的第二执行结果为a b的和值,则将第二执行结果和第二待比较数据进行类比,得到的第二比较结果为相等,否则,得到的第二比较结果为不相等。
96.若第二比较结果为相等,则确定合约方法正确。
97.若第二比较结果为不相等,则确定合约方法不正确。
98.在本实施例中,通过预存数据信息和第二执行结果,得到第二比较结果,并根据第二比较结果确定合约方法是否正确,有利于在对单个合约方法进行测试时,实时确定合约方法是否正确,并实时对合约方法进行修改以及测试,提高智能合约的测试效率。
99.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
100.图3示出与上述实施例智能合约测试方法一一对应的智能合约测试装置的原理框图。如图3所示,该智能合约测试装置包括测试环境搭建模块30、测试环境初始化模块31、第一待测试合约获得模块32、第一结果获取模块33、第一判断模块34和第二判断模块35。各功能模块详细说明如下:
101.测试环境搭建模块30,用于搭建线下测试环境,并在线下测试环境中,模拟实现操作接口组。
102.测试环境初始化模块31,用于采用测试数据对线下测试环境进行初始化,得到初始化线下测试环境,初始化线下测试环境包括预存数据信息。
103.第一待测试合约获得模块32,用于根据操作接口组,获得待测试合约。
104.第一结果获取模块33,用于调用待测试合约,得到第一执行结果。
105.第一判断模块34,用于根据预存数据信息和第一执行结果,判断待测试合约是否正确。
106.第二判断模块35,用于若不正确,则返回根据操作接口组,获得待测试合约的步骤继续执行,直至确定待测试合约正确为止。
107.进一步的,测试环境搭建模块30包括:
108.存储结构配置模块,用于配置模拟存储结构。
109.第一合约地址配置模块,用于配置待测试合约的合约地址。
110.第二合约地址配置模块,用于配置待测试合约的调用合约地址。
111.区块高度配置模块,用于配置区块高度。
112.进一步的,第一待测试合约获得模块32包括:
113.合约类定义模块,用于调用操作接口组,定义合约类。
114.合约类初始化模块,用于初始化合约类,得到合约对象实例。
115.第二待测试合约获得模块,用于通过合约对象实例,获得待测试合约。
116.进一步的,第一判断模块34包括:
117.第一计算模块,用于根据预存数据信息,计算得到第一待比较数据。
118.第一比较模块,用于将第一执行结果与第一待比较数据进行比较,得到第一比较结果。
119.第一确定模块,用于若第一比较结果为相等,则确定待测试合约正确。
120.第二确定模块,用于若第一比较结果为不相等,则确定待测试合约不正确。
121.进一步的,待测试合约包括至少一个合约方法,当对其中一个合约方法进行测试时,智能合约测试装置还包括:
122.合约方法获得模块,用于根据操作接口组,获得合约方法。
123.合约方法调用模块,调用合约方法,得到第二执行结果。
124.第三判断模块,用于根据预存数据信息和第二执行结果,判断合约方法是否正确。
125.第四判断模块,用于若合约方法不正确,则返回根据操作接口组,获得合约方法的步骤继续执行,直至合约方法正确为止。
126.进一步的,第三判断模块包括:
127.第二计算模块,用于根据预存数据信息,计算得到第二待比较数据。
128.第二比较模块,用于将第二执行结果与第二待比较数据进行比较,得到第二比较结果。
129.第三确定模块,用于若第二比较结果为相等,则确定合约方法正确。
130.第四确定模块,用于若第二比较结果为不相等,则确定合约方法不正确。
131.关于智能合约测试装置的具体限定可以参见上文中对于智能合约测试方法的限定,在此不再赘述。上述智能合约测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
132.为解决上述技术问题,本技术实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
133.所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件连接存储器41、处理器42、网络接口43的计算机
设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。
134.所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
135.所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或d界面显示存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如电子文件的控制的程序代码等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
136.所述处理器42在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的程序代码或者处理数据,例如运行电子文件的控制的程序代码。
137.所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
138.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有界面显示程序,所述界面显示程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的智能合约测试方法的步骤。
139.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
140.显然,以上所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例,附图中给出了本技术的较佳实施例,但并不限制本技术的专利范围。本技术可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本技术的公开内容的理解更加透彻全面。尽管参照前述实施例对本技术进行了详细的说明,对于本领域的技术人员来而言,其
依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本技术说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本技术专利保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献