CN109753418A - 性能测试方法、装置、计算机设备和存储介质 - Google Patents
性能测试方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109753418A CN109753418A CN201811624185.8A CN201811624185A CN109753418A CN 109753418 A CN109753418 A CN 109753418A CN 201811624185 A CN201811624185 A CN 201811624185A CN 109753418 A CN109753418 A CN 109753418A
- Authority
- CN
- China
- Prior art keywords
- block
- chain network
- block chain
- transaction request
- client
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种性能测试方法、装置、计算机设备和存储介质。所述方法包括:客户端将交易请求发送到区块链网络中,区块链网络对交易请求进行校验并发送校验结果到客户端中,其中,校验结果包含第一时间戳;当区块链网络的节点对交易数据进行处理并达成共识时,发送出块指令到客户端中,其中,出块指令包含第二时间戳;客户端根据校验结果的第一时间戳和出块指令的第二时间戳生成测试结果。上述性能测试方法、装置、计算机设备和存储介质,能够提高性能测试的准确性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种性能测试方法、装置、计算机设备和存储介质。
背景技术
在区块链网络中,在将数据写入时,必须经过区块链网络的共识机制,当一定的节点达成共识时,才将数据写入区块链网络中,提高了数据的安全性。因此,共识机制在区块链网络中的作用尤为重要,需要对共识机制进行性能的测试。
传统的共识机制性能测试方法,是根据待写入数据对应的交易请求能否被区块链网络响应得到。然而,这种性能测试的方法,交易请求被区块链网络响应时,根据得到的结果推测出共识机制的性能,误差较大,存在准确性较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够准确性的性能测试方法、装置、计算机设备和存储介质。
一种性能测试方法,应用于区块链网络,所述方法包括:
接收客户端发送的交易请求,并对所述交易请求进行校验;
将校验结果发送至所述客户端中,并通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到处理结果,其中,所述校验结果中包含第一时间戳;
当所述区块链网络的节点得到的处理结果达成共识时,根据所述处理结果得到出块指令;
发送所述出块指令至所述客户端,其中,所述出块指令包含第二时间戳,所述第一时间戳和第二时间戳用于指示所述客户端生成测试结果。
在其中一个实施例中,所述当所述区块链网络的节点得到的处理结果达成共识时,根据所述处理结果得到出块指令,包括:
当所述区块链网络的节点得到的处理结果达成共识时,将所述交易请求中的交易数据存储在所述区块链网络的节点中,并生成出块指令。
一种性能测试方法,应用于客户端,所述方法包括:
发送交易请求到区块链网络中;
获取所述区块链网络发送的对所述交易请求进行校验得到的校验结果,其中,所述校验结果中包含第一时间戳;
接收所述区块链网络发送的出块指令,其中,所述出块指令包含第二时间戳,所述出块指令是所述区块链网络的节点得到的处理结果达成共识时根据所述处理结果得到的,所述处理结果是通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到的;
根据所述第一时间戳和第二时间戳生成测试结果。
在其中一个实施例中,所述客户端中包含主进程和至少一个工作进程,所述工作进程与所述区块链的节点对应,所述发送交易请求到区块链网络中,包括:
获取参数数据;
通过所述主进程对所述参数数据解析得到工作数据,并将所述工作数据发送给所述工作进程;
各个工作进程根据所述工作数据生成交易请求,并将所述交易请求发送到区块链网络中对应的节点。
在其中一个实施例中,所述接收所述区块链网络发送的出块指令之后,还包括:
将所述出块指令存储在目标队列中;
每间隔预设时长从所述目标队列的出块指令中获取目标出块指令,其中,所述目标出块指令中包含第二目标时间戳;
所述根据所述第一时间戳和第二时间戳生成测试结果,包括:
根据所述第一时间戳和第二目标时间戳生成测试结果。
在其中一个实施例中,所述每间隔预设时长从所述目标队列的出块指令中获取目标出块指令之后,还包括:
获取所述目标出块指令携带的第一调用函数,根据所述第一调用函数执行对应的处理,其中,所述第一调用函数是根据所述目标出块指令对应的交易请求中包含的第二调用函数得到的。
在其中一个实施例中,所述根据所述第一时间戳和第二时间戳生成测试结果,包括:
根据所述第一时间戳和第二时间戳的差值生成共识时长,并根据所述共识时长生成测试结果。
在其中一个实施例中,所述根据所述第一时间戳和第二时间戳生成测试结果,包括:
根据所述校验结果获取第一测试数据;
根据所述第一时间戳和第二时间戳得到第二测试数据;
根据所述第一测试数据和第二测试数据生成测试结果。
一种性能测试装置,应用于区块链网络,所述装置包括:
校验模块,接收客户端发送的交易请求,并对所述交易请求进行校验;
处理模块,用于将校验结果发送至所述客户端中,并通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到处理结果,其中,所述校验结果中包含第一时间戳;
出块指令生成模块,用于当所述区块链网络的节点得到的处理结果达成共识时,根据所述处理结果得到出块指令;
发送模块,用于发送所述出块指令至所述客户端,其中,所述出块指令包含第二时间戳,所述第一时间戳和第二时间戳用于指示所述客户端生成测试结果。
一种性能测试装置,应用于客户端,所述装置包括:
发送模块,用于发送交易请求到区块链网络中;
校验结果获取模块,用于获取所述区块链网络发送的对所述交易请求进行校验得到的校验结果,其中,所述校验结果中包含第一时间戳;
出块指令接收模块,用于接收所述区块链网络发送的出块指令,其中,所述出块指令包含第二时间戳,所述出块指令是所述区块链网络的节点得到的处理结果达成共识时根据所述处理结果得到的,所述处理结果是通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到的;
测试结果生成模块,用于根据所述第一时间戳和第二时间戳生成测试结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述性能测试方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述性能测试方法的步骤。
上述性能测试方法、装置、计算机设备和存储介质,客户端将交易请求发送到区块链网络中,区块链网络对交易请求进行校验并发送校验结果到客户端中,其中,校验结果包含第一时间戳;当区块链网络的节点对交易数据进行处理并达成共识时,发送出块指令到客户端中,其中,出块指令包含第二时间戳;客户端根据校验结果的第一时间戳和出块指令的第二时间戳生成测试结果,根据校验结果的第一时间戳和达成共识时第二时间戳,可以更加准确地得到共识时长,提高了性能测试的准确性。
附图说明
图1为一个实施例中性能测试方法的应用环境图;
图2为一个实施例中区块链网络性能测试方法的流程示意图;
图3为一个实施例中客户端性能测试方法的流程示意图;
图4为一个实施例中客户端性能测试步骤的流程示意图;
图5为另一个实施例中客户端性能测试步骤的流程示意图;
图6为一个实施例中性能测试结果的示意图;
图7为一个实施例中客户端和区块链网络性能测试方法的流程示意图;
图8为一个实施例中区块链网络性能测试装置的结构框图;
图9为一个实施例中客户端性能测试装置的结构框图;
图10为一个实施例中客户端性能测试装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的性能测试方法,可以应用于如图1所示的应用环境中。其中,客户端102通过网络与区块链网络104通过网络进行通信。客户端102将交易请求发送到区块链网络104中,区块链网络104对交易请求进行校验并发送校验结果到客户端102中,其中,校验结果包含第一时间戳;当区块链网络104的节点对交易数据进行处理并达成共识时,发送出块指令到客户端102中,其中,出块指令包含第二时间戳;客户端102根据校验结果的第一时间戳和出块指令的第二时间戳生成测试结果。其中,客户端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
在一个实施例中,如图2所示,提供了一种性能测试方法,应用于区块链网络,包括以下步骤:
步骤202,接收客户端发送的交易请求,并对交易请求进行校验。
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构。为了保证客户端发送的交易请求的安全性和合法性,需要对交易请求进行校验。
区块链网络接收到一笔交易请求后,会对交易请求所携带的证书、签名或背书协议等消息进行校验。
例如,区块链网络接收到一笔交易请求后,对该交易请求进行校验时,需要检查该交易所持有的签名是否满足某种角色(member或admin)或某个数量或具体某个人或某个部门的要求。
步骤204,将校验结果发送至客户端中,并通过区块链网络的节点对交易请求中的交易数据进行处理得到处理结果,其中,校验结果中包含第一时间戳。
对交易请求进行校验后,得到校验结果并发送至客户端中。当校验成功时,将校验成功的校验结果发送至客户端。当校验失败时,将校验失败的校验结果发送至客户端。校验失败后,不执行通过区块链网络的节点对交易请求中的交易数据进行处理得到处理结果。
可以理解的是,对交易请求进行校验后,立即通过区块链网络的节点对交易请求中的交易数据进行处理。也就是说,校验结果中包含的第一时间戳为校验结束时的时间戳,也是对交易请求中的交易数据开始进行处理时的时间戳。
校验成功后,通过区块链网络的节点对交易请求中的交易数据进行处理得到处理结果。可以在区块链网络中选取若干毫不相干的节点,通过选取的若干毫不相干的节点对该交易请求中的交易数据进行投票,得到投票结果。
步骤206,当区块链网络的节点得到的处理结果达成共识时,根据处理结果得到出块指令。
其中,出块指令指的是将交易请求中的交易数据打包成区块存储到区块链时生成的指令。在区块链网络的节点得到的处理结果达成共识时,即区块链网络中的节点对交易请求中的交易数据达成共识时,根据处理结果得到出块指令。
对于一笔交易请求中的交易数据,如果利益不相干的若干个节点能够达成共识,就可以认为整个区块链网络对于该交易请求中的交易数据也能够达成共识。例如,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么就可以断定你这人还不坏。
步骤208,发送出块指令至客户端,其中,出块指令包含第二时间戳,第一时间戳和第二时间戳用于指示客户端生成测试结果。
可以理解的是,当区块链网络的节点得到的处理结果达成共识时,得到出块指令,出块指令中包含的第二时间戳也就是区块链网络的节点对交易请求中的交易数据达成共识时的时间戳。
上述性能测试方法中,区块链网络对客户端发送的交易请求进行校验并发送校验结果到客户端中,其中,校验结果包含第一时间戳;当区块链网络的节点对交易数据进行处理并达成共识时,发送出块指令到客户端中,其中,出块指令包含第二时间戳;第一时间戳和第二时间戳用于指示客户端生成测试结果,可以更加准确地测量区块链网络达成共识的过程,提高了性能测试的准确性。
在一个实施例中,当区块链网络的节点得到的处理结果达成共识时,根据处理结果得到出块指令,包括:当区块链网络的节点得到的处理结果达成共识时,将交易请求中的交易数据存储在区块链网络的节点中,并生成出块指令。
当区块链网络的节点的得到的处理结果达成共识时,将交易请求中的交易数据打包成区块存储在区块链网络的节点中。
可选的是,可以根据设定的交易请求的数量打包成区块,即当存储的交易请求的数量达到设定的阈值时,打包成区块存储在区块链网络的节点中。也可以根据设定的时长打包成区块,即当交易请求记录在账本中的时长满足设定的时长阈值时,将该账本打包成区块存储在区块链网络的节点中。区块中可以存储一笔交易请求的数据,也可以存储多笔交易请求的数据,不限于此。
在一个实施例中,如图3所示,提供了一种性能测试方法,应用于客户端,包括以下步骤:
步骤302,发送交易请求到区块链网络中。
步骤304,获取区块链网络发送的对交易请求进行校验得到的校验结果,其中,校验结果中包含第一时间戳。
客户端将交易请求发送到区块链网络中,当区块链网络对交易请求进行校验结束后,获取区块链网络发送的校验结果。校验结果中包含第一时间戳,也就是区块链网络对交易请求中的交易数据开始进行处理时的时间戳。
步骤306,接收区块链网络发送的出块指令,其中,出块指令包含第二时间戳,出块指令是区块链网络的节点得到的处理结果达成共识时根据处理结果得到的,处理结果是通过区块链网络的节点对交易请求中的交易数据进行处理得到的。
可以理解的是,对于同一笔交易请求,区块链网络首先对该交易请求进行校验,再对该交易请求进行处理。相应地,客户端首先接收到该交易请求的校验结果,再接收到该交易请求的出块指令。即对于同一笔交易请求,第二时间戳晚于第一时间戳。
步骤308,根据第一时间戳和第二时间戳生成测试结果。
根据第一时间戳和第二时间戳生成对区块链网络的共识机制的测试结果。其中,共识机制也就是区块链网络对交易请求中的交易数据达成共识的过程。
在本实施例中,客户端发送的交易请求到区块链网络中并获取区块链网络发送的校验结果,其中,校验结果包含第一时间戳;接收区块链网络发送的出块指令,其中,出块指令包含第二时间戳;第一时间戳和第二时间戳生成测试结果,可以更加准确地测量区块链网络达成共识的过程,提高了性能测试的准确性。
在一个实施例中,客户端中包含主进程和至少一个工作进程,工作进程与区块链的节点对应,发送交易请求到区块链网络中,包括:
步骤402,获取参数数据。
参数数据可以是交易请求的总量,发送交易请求的速率、区块链网络中节点的地址、证书文件等。
步骤404,通过主进程对参数数据解析得到工作数据,并将工作数据发送给工作进程。
通过主进程对参数数据解析得到工作数据。例如,参数数据为交易请求的总量为1000笔,发送交易请求的总速率为500TPS(Transaction Per Second,每秒事务处理量),工作进程为4个。则通过主进程对参数数据解析得到工作数据为:每个工作进程分配的交易请求为250笔,每个工作进程发送交易请求的速率为125TPS。
工作进程既可部署在单机上也可以部署到独立的服务器上,方便地进行横向扩展从而支持大规模并发测试。
步骤406,各个工作进程根据工作数据生成交易请求,并将交易请求发送到区块链网络中对应的节点。
可以理解的是,当其中一个或者多个工作进程数据堵塞时,主进程可以将参数数据重新解析得到新的工作数据。例如,可以减少分配给数据堵塞的工作进程的交易请求的数量,并增加数据通畅的工作进程的交易请求的数量。也可以降低数据堵塞的工作进程的交易请求发送速率,并提高数据通畅的工作进程的交易请求发送速率。
在本实施例中,客户端中的主进程对参数数据进行解析得到工作数据,各个工作进程根据工作数据生成交易请求并发送到区块链网络中对应的节点,可以灵活地配置计算机资源,增加计算机资源的复用率。
在一个实施例中,接收区块链网络发送的出块指令之后,还包括:
步骤502,将出块指令存储在目标队列中。
目标队列可以是先入先出队列,也可以是存储出块指令的数据集合,不限于此。其中,先入先出队列指的是先进入的数据先取出的队列。
步骤504,每间隔预设时长从目标队列的出块指令中获取目标出块指令,其中,目标出块指令中包含第二目标时间戳。
可以理解的是,等待区块链网络发送的出块指令耗时较长。因此,可以设置一个目标队列存储出块指令,在客户端的运行过程中每间隔预设时对目标队列进行检测,当检测到出块指令时获取目标出块指令,避免了客户端等待区块链网络发送出块指令的过程,提高了客户端运行的效率。
目标出块指令指的是一笔交易请求对应的出块指令。每间隔预设时长,客户端对目标队列进行检测,当检测到目标队列中存在出块指令,获取该出块指令作为目标出块指令。
根据第一时间戳和第二时间戳生成测试结果,包括:
步骤506,根据第一时间戳和第二目标时间戳生成测试结果。
根据目标出块指令获取同一笔交易请求对应的校验结果的第一时间戳,根据校验结果的第一时间戳和目标出块指令的第二目标时间戳生成该笔交易请求的测试结果。
在本实施例中,将出块指令存储在目标队列中,每间隔预设时长从目标队列的出块指令中获取目标出块指令,可以提高客户端运行的效率。
在一个实施例中,每间隔预设时长从目标队列的出块指令中获取目标出块指令之后,还包括:获取目标出块指令携带的第一调用函数,根据第一调用函数执行对应的处理,其中,第一调用函数是根据目标出块指令对应的交易请求中包含的第二调用函数得到的。
在生成每一笔交易请求时,会生成每一笔交易请求对应的第二调用函数并存储在交易请求中。当区块链网络发送出块指令到客户端时,出块指令中携带了该笔交易请求对应的第二调用函数。
客户端获取目标出块指令携带的第一调用函数。其中,第一调用函数是根据目标出块指令对应的交易请求中包含的第二调用函数得到的。第一调用函数可以与第二调用函数一致,也可以根据第二调用函数生成不同的第一调用函数,不限于此。
应用程序在单线程运行的过程中,会有很多比较耗时的任务,如I/O(输入/输出)操作。在这些比较耗时的任务操作过程中,需要等待其他应用程序或者接口响应,造成应用程序执行过程中效率较低的问题。
相应地,在客户端运行的过程中,等待区块链网络发送的出块指令比较耗时。因此,可以在客户端中设置一个目标队列,接收到出块指令时将出块指令存储在目标队列中。在客户端运行的过程中,定时检测目标队列,当检测到目标队列中存在出块指令,获取该目标出块指令并获取目标出块指令携带的第一调用函数。客户端可以根据第一调用函数执行对应的处理,提高了客户端运行的效率。
在一个实施例中,根据第一时间戳和第二时间戳生成测试结果,包括:根据第一时间戳和第二时间戳的差值生成共识时长,并根据共识时长生成测试结果。
第一时间戳为区块链网络对交易请求校验结束时的时间戳,也是区块链网络的节点对交易请求中的交易数据进行处理,即共识过程开始时的时间戳。第二时间戳为区块链的节点得到的处理结果达成共识时的时间戳。将第二时间戳减去第一时间戳得到的差值即为区块链网络的共识时长,根据共识时长生成测试结果。
例如,当共识时长较小时,表示区块链网络的共识机制的性能较好,测试结果可以为“共识时长较小,共识机制性能较好”。当共识时长较大时,表示区块链网络的共识机制的性能较差,测试结果可以为“共识时长较大,共识机制性能较差”。
在一个实施例中,根据第一时间戳和第二时间戳生成测试结果,包括:根据校验结果获取第一测试数据;根据第一时间戳和第二时间戳得到第二测试数据;根据第一测试数据和第二测试数据生成测试结果。
其中,第一测试数据指的是根据校验结果获取的数据;第二测试数据指的是根据第一时间戳和第二时间戳获取的数据。
测试结果如图6所示,第一测试数据可以是“总交易请求数”“失败交易数”、“失败率”、“请求响应最大延迟”、“请求响应平均延迟”、“请求响应吞吐量”等,第二测试数据可以是“交易出块最大延迟”、“交易出块平均延迟”、“交易出块吞吐量”等。
其中,请求响应最大延迟指的是客户端从发送交易请求到接收校验结果时的最大时长,请求响应平均延迟指的是客户端从发送交易请求到接收校验结果的平均时长,请求响应吞吐量指的是客户端每秒获取的校验结果的数量。交易出块最大延迟指的是共识时长的最大时长,交易出块平均延迟指的是所有交易请求的共识时长的平均时长,交易出块吞吐量区块链网络共识机制每秒达成共识的交易请求的数量。
可以理解的是,第一测试数据和第二测试数据还与客户端本身的一些数据有关,如“CPU最高占用率”、“CPU平均占用率”、“内存最高占用”、“内存平均占用”、“磁盘读(平均)”、“磁盘写(平均)”、“网络流入带宽(平均)”、“网络流出带宽(平均)”等。
在本实施例中,根据校验结果获取第一测试数据、根据出块指令获取第二测试数据、根据第一测试数据、第二测试数据、第一时间戳和第二时间戳生成测试结果,可以更加准确地得到区块链网络共识机制的测试结果。
应该理解的是,虽然图2-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,步骤702,客户端获取参数数据并根据参数数据得到交易请求,执行步骤704,发送交易请求到区块链网络中,并同时执行步骤706,检测出块指令。区块链网络接收到交易请求后,执行步骤708,对交易请求进行校验,并发送校验结果到客户端中。客户端接收到校验结果后,执行步骤710,对校验结果进行统计,得到测试数据。区块链网络对交易请求进行校验之后,执行步骤712,对交易请求中的交易数据进行共识处理,当区块链网络的节点达成共识时,得到出块指令并发送到客户端中。客户端接收到出块指令,执行步骤714,将出块指令存储在目标队列中。每间隔预设时长执行步骤706,检测出块指令并从目标队列的出块指令中获取目标出块指令,执行步骤710,根据出块指令统计测试数据,最后执行步骤716,根据测试数据生成测试结果。
在一个实施例中,如图8所示,提供了一种性能测试装置800,应用于区块链网络,包括:校验模块802、处理模块804、出块指令生成模块806和发送模块808,其中:
校验模块802,接收客户端发送的交易请求,并对交易请求进行校验。
处理模块804,用于将校验结果发送至客户端中,并通过区块链网络的节点对交易请求中的交易数据进行处理得到处理结果,其中,校验结果中包含第一时间戳。
出块指令生成模块806,用于当区块链网络的节点得到的处理结果达成共识时,根据处理结果得到出块指令。
发送模块808,用于发送出块指令至客户端,其中,出块指令包含第二时间戳,第一时间戳和第二时间戳用于指示客户端生成测试结果。
在本实施例中,区块链网络对客户端发送的交易请求进行校验并发送校验结果到客户端中,其中,校验结果包含第一时间戳;当区块链网络的节点对交易数据进行处理并达成共识时,发送出块指令到客户端中,其中,出块指令包含第二时间戳;第一时间戳和第二时间戳用于指示客户端生成测试结果,可以更加准确地测量区块链网络达成共识的过程,提高了性能测试的准确性。
在一个实施例中,上述出块指令生成模块806还用于当区块链网络的节点得到的处理结果达成共识时,将交易请求中的交易数据存储在区块链网络的节点中,并生成出块指令。
在一个实施例中,如图9所示,提供了一种性能测试装置900,应用于客户端,包括:发送模块902、校验结果获取模块904、出块指令接收模块906和测试结果生成模块908,其中:
发送模块902,用于发送交易请求到区块链网络中。
校验结果获取模块904,用于获取区块链网络发送的对交易请求进行校验得到的校验结果,其中,校验结果中包含第一时间戳。
出块指令接收模块906,用于接收区块链网络发送的出块指令,其中,出块指令包含第二时间戳,出块指令是区块链网络的节点得到的处理结果达成共识时根据处理结果得到的,处理结果是通过区块链网络的节点对交易请求中的交易数据进行处理得到的。
测试结果生成模块908,用于根据第一时间戳和第二时间戳生成测试结果。
在本实施例中,客户端发送的交易请求到区块链网络中并获取区块链网络发送的校验结果,其中,校验结果包含第一时间戳;接收区块链网络发送的出块指令,其中,出块指令包含第二时间戳;第一时间戳和第二时间戳生成测试结果,可以更加准确地测量区块链网络达成共识的过程,提高了性能测试的准确性。
在一个实施例中,如图10所示,提供了一种性能测试装置1000,应用于客户端,包括:发送模块1002、校验结果获取模块1004、出块指令接收模块1006、目标出块指令获取模块1008、调用函数获取模块1010和测试结果生成模块1012,其中:
发送模块1002,用于发送交易请求到区块链网络中。
校验结果获取模块1004,用于获取区块链网络发送的对交易请求进行校验得到的校验结果,其中,校验结果中包含第一时间戳。
出块指令接收模块1006,用于接收区块链网络发送的出块指令,其中,出块指令包含第二时间戳,出块指令是区块链网络的节点得到的处理结果达成共识时根据处理结果得到的,处理结果是通过区块链网络的节点对交易请求中的交易数据进行处理得到的。
目标出块指令获取模块1008,用于将出块指令存储在目标队列中;每间隔预设时长从目标队列的出块指令中获取目标出块指令,其中,目标出块指令中包含第二目标时间戳。根据第一时间戳和第二时间戳生成测试结果,包括:根据第一时间戳和第二目标时间戳生成测试结果。
调用函数获取模块1010,用于获取目标出块指令携带的第一调用函数,根据第一调用函数执行对应的处理,其中,第一调用函数是根据目标出块指令对应的交易请求中包含的第二调用函数得到的。
测试结果生成模块1012,用于根据第一时间戳和第二时间戳生成测试结果。
在本实施例中,客户端发送的交易请求到区块链网络中并获取区块链网络发送的校验结果,其中,校验结果包含第一时间戳;接收区块链网络发送的出块指令并将出块指令存储在目标队列中,每间隔预设时长从目标队列中获取目标出块指令,其中,目标出块指令包含第二时间戳;第一时间戳和第二时间戳生成测试结果,可以更加准确地测量区块链网络达成共识的过程,提高了性能测试的准确性。客户端获取目标出块指令携带的第一调用函数并执行对应的处理,提高了客户端运行的效率。
在一个实施例中,上述发送模块1002还用于获取参数数据;通过主进程对参数数据解析得到工作数据,并将工作数据发送给工作进程;各个工作进程根据工作数据生成交易请求,并将交易请求发送到区块链网络中对应的节点。
在一个实施例中,上述测试结果生成模块1012还用于根据第一时间戳和第二时间戳的差值生成共识时长,并根据共识时长生成测试结果。
在一个实施例中,上述测试结果生成模块1012还用于根据校验结果获取第一测试数据;根据第一时间戳和第二时间戳得到第二测试数据;根据第一测试数据和第二测试数据生成测试结果。
关于性能测试装置的具体限定可以参见上文中对于性能测试方法的限定,在此不再赘述。上述性能测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种性能测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述性能测试方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述性能测试方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种性能测试方法,应用于区块链网络,所述方法包括:
接收客户端发送的交易请求,并对所述交易请求进行校验;
将校验结果发送至所述客户端中,并通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到处理结果,其中,所述校验结果中包含第一时间戳;
当所述区块链网络的节点得到的处理结果达成共识时,根据所述处理结果得到出块指令;
发送所述出块指令至所述客户端,其中,所述出块指令包含第二时间戳,所述第一时间戳和第二时间戳用于指示所述客户端生成测试结果。
2.根据权利要求1所述的方法,其特征在于,所述当所述区块链网络的节点得到的处理结果达成共识时,根据所述处理结果得到出块指令,包括:
当所述区块链网络的节点得到的处理结果达成共识时,将所述交易请求中的交易数据存储在所述区块链网络的节点中,并生成出块指令。
3.一种性能测试方法,应用于客户端,所述方法包括:
发送交易请求到区块链网络中;
获取所述区块链网络发送的对所述交易请求进行校验得到的校验结果,其中,所述校验结果中包含第一时间戳;
接收所述区块链网络发送的出块指令,其中,所述出块指令包含第二时间戳,所述出块指令是所述区块链网络的节点得到的处理结果达成共识时根据所述处理结果得到的,所述处理结果是通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到的;
根据所述第一时间戳和第二时间戳生成测试结果。
4.根据权利要求3所述的方法,其特征在于,所述客户端中包含主进程和至少一个工作进程,所述工作进程与所述区块链的节点对应,所述发送交易请求到区块链网络中,包括:
获取参数数据;
通过所述主进程对所述参数数据解析得到工作数据,并将所述工作数据发送给所述工作进程;
各个工作进程根据所述工作数据生成交易请求,并将所述交易请求发送到区块链网络中对应的节点。
5.根据权利要求3所述的方法,其特征在于,所述接收所述区块链网络发送的出块指令之后,还包括:
将所述出块指令存储在目标队列中;
每间隔预设时长从所述目标队列的出块指令中获取目标出块指令,其中,所述目标出块指令中包含第二目标时间戳;
所述根据所述第一时间戳和第二时间戳生成测试结果,包括:
根据所述第一时间戳和第二目标时间戳生成测试结果。
6.根据权利要求5所述的方法,其特征在于,所述每间隔预设时长从所述目标队列的出块指令中获取目标出块指令之后,还包括:
获取所述目标出块指令携带的第一调用函数,根据所述第一调用函数执行对应的处理,其中,所述第一调用函数是根据所述目标出块指令对应的交易请求中包含的第二调用函数得到的。
7.根据权利要求3所述的方法,其特征在于,所述根据所述第一时间戳和第二时间戳生成测试结果,包括:
根据所述第一时间戳和第二时间戳的差值生成共识时长,并根据所述共识时长生成测试结果。
8.根据权利要求3-6中任一项所述的方法,其特征在于,所述根据所述第一时间戳和第二时间戳生成测试结果,包括:
根据所述校验结果获取第一测试数据;
根据所述第一时间戳和第二时间戳得到第二测试数据;
根据所述第一测试数据和第二测试数据生成测试结果。
9.一种性能测试装置,应用于区块链网络,其特征在于,所述装置包括:
校验模块,接收客户端发送的交易请求,并对所述交易请求进行校验;
处理模块,用于将校验结果发送至所述客户端中,并通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到处理结果,其中,所述校验结果中包含第一时间戳;
出块指令生成模块,用于当所述区块链网络的节点得到的处理结果达成共识时,根据所述处理结果得到出块指令;
发送模块,用于发送所述出块指令至所述客户端,其中,所述出块指令包含第二时间戳,所述第一时间戳和第二时间戳用于指示所述客户端生成测试结果。
10.一种性能测试装置,应用于客户端,其特征在于,所述装置包括:
发送模块,用于发送交易请求到区块链网络中;
校验结果获取模块,用于获取所述区块链网络发送的对所述交易请求进行校验得到的校验结果,其中,所述校验结果中包含第一时间戳;
出块指令接收模块,用于接收所述区块链网络发送的出块指令,其中,所述出块指令包含第二时间戳,所述出块指令是所述区块链网络的节点得到的处理结果达成共识时根据所述处理结果得到的,所述处理结果是通过所述区块链网络的节点对所述交易请求中的交易数据进行处理得到的;
测试结果生成模块,用于根据所述第一时间戳和第二时间戳生成测试结果。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811624185.8A CN109753418B (zh) | 2018-12-28 | 2018-12-28 | 性能测试方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811624185.8A CN109753418B (zh) | 2018-12-28 | 2018-12-28 | 性能测试方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109753418A true CN109753418A (zh) | 2019-05-14 |
CN109753418B CN109753418B (zh) | 2022-07-12 |
Family
ID=66404181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811624185.8A Active CN109753418B (zh) | 2018-12-28 | 2018-12-28 | 性能测试方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753418B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111144883A (zh) * | 2019-12-06 | 2020-05-12 | 深圳前海微众银行股份有限公司 | 一种区块链网络的处理性能分析方法及装置 |
CN111478828A (zh) * | 2020-06-24 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111488291A (zh) * | 2020-06-24 | 2020-08-04 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111639131A (zh) * | 2020-05-28 | 2020-09-08 | 国网天津市电力公司电力科学研究院 | 一种用于电能表现场检验的区块链生成系统及方法 |
CN111738721A (zh) * | 2020-06-23 | 2020-10-02 | 金蝶软件(中国)有限公司 | 一种区块链交易监听方法以及相关装置 |
CN112540902A (zh) * | 2020-12-03 | 2021-03-23 | 山东云海国创云计算装备产业创新中心有限公司 | 一种片上系统性能检验方法、装置、设备及可读存储介质 |
CN113767406A (zh) * | 2019-05-31 | 2021-12-07 | 西门子(中国)有限公司 | 故障数据存储方法、装置、系统和计算机可读介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
CN107092556A (zh) * | 2017-03-09 | 2017-08-25 | 北京小度信息科技有限公司 | 测试方法、装置及设备 |
CN108154367A (zh) * | 2017-12-26 | 2018-06-12 | 质数链网科技成都有限公司 | 一种区块链业务校验方法及装置 |
US20180240114A1 (en) * | 2017-02-22 | 2018-08-23 | Alibaba Group Holding Limited | Transaction verification in a consensus network |
US20180293557A1 (en) * | 2017-04-05 | 2018-10-11 | Samsung Sds Co., Ltd. | Method of charging electronic currency automatically based on blockchain and system thereof |
WO2018188967A1 (de) * | 2017-04-12 | 2018-10-18 | Siemens Aktiengesellschaft | Verfahren und vorrichtung zum rechnergestützten testen einer blockkette |
-
2018
- 2018-12-28 CN CN201811624185.8A patent/CN109753418B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598824A (zh) * | 2016-11-25 | 2017-04-26 | 深圳前海微众银行股份有限公司 | 区块链的性能分析方法及装置 |
US20180240114A1 (en) * | 2017-02-22 | 2018-08-23 | Alibaba Group Holding Limited | Transaction verification in a consensus network |
CN107092556A (zh) * | 2017-03-09 | 2017-08-25 | 北京小度信息科技有限公司 | 测试方法、装置及设备 |
US20180293557A1 (en) * | 2017-04-05 | 2018-10-11 | Samsung Sds Co., Ltd. | Method of charging electronic currency automatically based on blockchain and system thereof |
WO2018188967A1 (de) * | 2017-04-12 | 2018-10-18 | Siemens Aktiengesellschaft | Verfahren und vorrichtung zum rechnergestützten testen einer blockkette |
CN108154367A (zh) * | 2017-12-26 | 2018-06-12 | 质数链网科技成都有限公司 | 一种区块链业务校验方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113767406A (zh) * | 2019-05-31 | 2021-12-07 | 西门子(中国)有限公司 | 故障数据存储方法、装置、系统和计算机可读介质 |
CN111144883A (zh) * | 2019-12-06 | 2020-05-12 | 深圳前海微众银行股份有限公司 | 一种区块链网络的处理性能分析方法及装置 |
CN111144883B (zh) * | 2019-12-06 | 2023-05-16 | 深圳前海微众银行股份有限公司 | 一种区块链网络的处理性能分析方法及装置 |
CN111639131A (zh) * | 2020-05-28 | 2020-09-08 | 国网天津市电力公司电力科学研究院 | 一种用于电能表现场检验的区块链生成系统及方法 |
CN111738721A (zh) * | 2020-06-23 | 2020-10-02 | 金蝶软件(中国)有限公司 | 一种区块链交易监听方法以及相关装置 |
CN111478828A (zh) * | 2020-06-24 | 2020-07-31 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111488291A (zh) * | 2020-06-24 | 2020-08-04 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111478828B (zh) * | 2020-06-24 | 2020-10-20 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN112540902A (zh) * | 2020-12-03 | 2021-03-23 | 山东云海国创云计算装备产业创新中心有限公司 | 一种片上系统性能检验方法、装置、设备及可读存储介质 |
CN112540902B (zh) * | 2020-12-03 | 2023-03-14 | 山东云海国创云计算装备产业创新中心有限公司 | 一种片上系统性能检验方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109753418B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753418A (zh) | 性能测试方法、装置、计算机设备和存储介质 | |
CN112073269B (zh) | 区块链网络测试方法、装置、服务器及存储介质 | |
CN106528418B (zh) | 一种测试方法及装置 | |
CN110598446A (zh) | 基于区块链的测试方法、装置、存储介质和计算机设备 | |
CN108206830B (zh) | 漏洞扫描方法、装置、计算机设备和存储介质 | |
CN109586948A (zh) | 更新系统配置数据的方法、装置、计算机设备和存储介质 | |
CN108833521A (zh) | 消息推送方法、装置、系统、计算机设备和存储介质 | |
CN111475376A (zh) | 处理测试数据的方法、装置、计算机设备和存储介质 | |
CN109240727A (zh) | 应用程序更新方法、装置、计算机设备和存储介质 | |
CN104978530B (zh) | 一种应用安全管理方法、装置、服务器以及系统 | |
CN109726134B (zh) | 接口测试方法和系统 | |
CN109634730A (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN109886810B (zh) | 众包交易方法及系统、可读存储介质和终端 | |
CN109710695A (zh) | 事务请求有效性识别和发起方法、装置、设备和介质 | |
CN109669859A (zh) | 服务测试方法、装置、计算机设备和存储介质 | |
CN109981739A (zh) | 基于区块链的会话数据处理方法、装置、设备及介质 | |
WO2016188101A1 (zh) | 一种针对业务系统的测试方法和装置 | |
CN113312630A (zh) | 实现可信调度的方法及装置 | |
CN110674145A (zh) | 数据一致性的检测方法、装置、计算机设备和存储介质 | |
CN114564387A (zh) | 一种针对OpenStack云平台的场景式自动化测试方法及系统 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN111159025B (zh) | 应用程序接口测试方法、装置、计算机设备和存储介质 | |
CN113553088A (zh) | 补丁包发布方法、装置、计算机设备和存储介质 | |
CN108763934B (zh) | 数据处理方法及装置、存储介质、服务器 | |
US9176797B1 (en) | Workflow processing and methods for auditing and playback of data |
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 |