CN115878450A - 执行测试任务的方法及装置 - Google Patents
执行测试任务的方法及装置 Download PDFInfo
- Publication number
- CN115878450A CN115878450A CN202111163180.1A CN202111163180A CN115878450A CN 115878450 A CN115878450 A CN 115878450A CN 202111163180 A CN202111163180 A CN 202111163180A CN 115878450 A CN115878450 A CN 115878450A
- Authority
- CN
- China
- Prior art keywords
- node
- target
- test task
- test
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种执行测试任务的方法及装置。该方法包括:将目标测试任务发送至各区块链节点;基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。本发明提供的执行测试任务的方法及装置,可以确保多个区块链节点能够接收和执行测试任务,从而可以提高测试效率,还降低了自动化测试成本。
Description
技术领域
本发明涉及自动化测试技术领域,尤其涉及一种执行测试任务的方法及装置。
背景技术
现有基于区块链的自动化测试系统通常分为区块链系统和用例执行节点,则部署一套基于区块链的自动化测试系统不仅需要部署专门用于执行测试用例的执行机,还需要部署记录系统数据的区块链系统,从而需要投入大量的自动化测试成本。另外,区块链系统将自动化测试脚本和调度算法部署在智能合约中,基于自动化测试系统的部署结构,区块链系统会根据调度算法指派一个执行机完成测试任务,导致测试效率非常低。
发明内容
本发明提供一种执行测试任务的方法及装置,用以解决现有技术中测试成本高和测试效率低的技术问题。
第一方面,本发明提供一种执行测试任务的方法,包括:
将目标测试任务发送至各区块链节点;
基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
在一个实施例中,所述基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,包括:
在确定一个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定所述目标区块链节点;
在确定多个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点;
根据所述第一领导者节点,在剩余空闲节点中确定预设数量的执行节点;
将所述第一领导者节点以及所述执行节点作为所述目标区块链节点。
在一个实施例中,所述基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点,包括:
在所述空闲节点未执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述第一领导者节点。
在一个实施例中,所述基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点,包括:
在所述空闲节点执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点。
在一个实施例中,所述基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点,包括:
基于各空闲节点的当前中央处理器CPU占用率、各空闲节点执行所述目标测试任务的历史执行时间以及对应的历史CPU占用率,确定各空闲节点执行所述目标测试任务的预估执行时间;
基于所述共识机制,将所述预估执行时间最短的空闲节点确定为所述第一领导者节点;
其中,所述节点状态信息包括:所述当前CPU占用率、所述历史执行时间以及所述历史CPU占用率。
在一个实施例中,所述执行测试任务的方法,还包括:
基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果。
在一个实施例中,所述基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果,包括:
在第一领导者节点执行所述目标测试任务的情况下,将所述第一领导者节点的领导状态切换为候选状态;
在确定所述测试结果的情况下,基于各区块链节点的节点状态信息和所述共识机制,在候选状态的区块链节点中确定第二领导者节点;
通过所述第二领导者节点将所述测试结果发送至各区块链节点。
第二方面,本发明提供一种执行测试任务的装置,包括:
发送模块,用于将目标测试任务发送至各区块链节点;
执行模块,用于基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
第三方面,本发明提供一种电子设备,包括存储器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述执行测试任务的方法的步骤。
第四方面,本发明提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行第一方面所述执行测试任务的方法的步骤。
本发明提供的执行测试任务的方法及装置,通过将目标测试任务发送至各区块链节点,以使各区块链节点能够接收测试任务,并基于节点状态信息,在目标区块链节点中执行目标测试任务,从而无需再另外设置测试任务执行节点,降低了自动化测试成本;此外,还根据节点状态信息确定执行测试任务的目标区块链节点,避免了异常状态节点执行测试任务的情况,保证了测试任务执行的稳定性,并提高了测试效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的执行测试任务的方法的流程示意图;
图2是应用本发明提供的执行测试任务的方法的交互示意图;
图3是本发明提供的执行测试任务的装置的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的执行测试任务的方法的流程示意图。参照图1,本发明提供的执行测试任务的方法包括:
步骤110、将目标测试任务发送至各区块链节点;
步骤120、基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
本发明提供的执行测试任务的方法的执行主体可以是自动化测试系统,该自动化测试系统可以是计算机设备或服务器等。
其中,该自动化测试系统可以包括智能合约系统、客户端以及区块链系统。
可选地,在步骤110中,在自动化测试系统中部署智能合约,即在智能合约系统中编写自动化测试脚本,测试数据,触发场景等。触发场景可以包括预先设置的测试周期,人工触发或代码更新触发等。例如:通过提交更新代码可以触发健全sanity测试、通过代码打标签tag可以触发回归regression测试、人工触发测试集或者周期触发regression测试等。当每个智能合约达到触发场景条件时,区块链系统会自动触发执行智能合约,则当智能合约系统满足执行测试的条件时,可以根据测试类型选择需要执行的自动化测试用例集,并且根据智能合约定义确定是否可以并行执行测试用例集中的用例,以将测试任务拆分成多个子任务或一个子任务。如果测试用例集被定义为并行处理,则该测试任务可以拆分成多个子任务;如果测试用例集被定义为串行处理,则只会被拆分成一个子任务。确定测试任务后,智能合约系统将一个或多个目标测试任务发送至区块链系统的各区块链节点中。
其中,智能合约是一种基于规定触发规则的,可自动执行的计算机合约,也可以看作是传统合约的数字版本。由于区块链技术采用的块链式账本,产生的数据不可篡改或者删除,且整个账本将不断新增账本数据,从而保证了历史数据的可追溯;同时,去中心化的运行机制避免了中心化因素的影响。基于区块链技术的智能合约不仅可以发挥智能合约在成本、效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。
可选地,在步骤120中,各区块链节点接收到目标测试任务后,根据区块链节点自身的节点状态信息,例如包括:节点是否空闲、中央处理器(Central Processing Unit,CPU)占用情况或历史执行数据等信息,可以确定一个目标区块链节点或多个目标区块链节点,来执行目标测试任务。
可选地,本发明中的区块链节点在原有功能的基础上,还可以实现自动化测试执行机的功能,即不仅可以执行自动化测试,还可记录测试相关数据。测试相关数据可以为自动化测试数据、脚本、触发条件、测试结果和节点状态信息等数据。
本发明提供的执行测试任务的方法,通过将目标测试任务发送至各区块链节点,以使各区块链节点能够接收目标测试任务,并基于节点状态信息,在目标区块链节点中执行目标测试任务,从而无需再另外设置测试任务执行节点,降低了自动化测试成本;此外,还根据节点状态信息确定执行目标测试任务的目标区块链节点,避免了异常状态节点执行目标测试任务的情况,保证了测试任务执行的稳定性,并提高了测试效率。
在一个实施例中,所述基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,包括:
在确定一个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定所述目标区块链节点;
在确定多个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点;
根据所述第一领导者节点,在剩余空闲节点中确定预设数量的执行节点;
将所述第一领导者节点以及所述执行节点作为所述目标区块链节点。
可选地,智能合约系统向各区块链节点发送目标测试任务后,自动化测试系统根据系统中各区块链节点执行测试任务的情况,确定所有没有在执行测试任务的节点为空闲节点。
可选地,基于各区块链节点的节点状态信息,可以在所有空闲节点中确定一个目标区块链节点来执行目标测试任务。
可选地,基于各区块链节点的节点状态信息,可以在空闲节点中确定多个目标区块链节点来执行目标测试任务。先判断在当前系统中是否存在领导者leader节点,若没有,则可以根据各空闲节点的CPU占用情况、当前网络情况、IO负载情况或历史执行数据等节点状态信息,将性能最优和运行稳定的空闲节点确定为leader节点,来主导目标测试任务的执行。leader节点可以在剩余空闲节点中随机选择预设数量的执行节点共同执行测试任务。其中,预设数量可以为满足预设条件的数量,例如可以设置为超过50%的空闲节点个数且大于3的最小整数。
可选地,将leader节点和选择的执行节点确定为目标区块链节点。所有目标区块链节点可以形成一个执行组,该执行组将会同时执行目标测试任务。在执行组开始执行目标测试任务时,将会释放系统内leader节点的领导权限,但是保持执行组内部的leader节点的领导权限。因此使得执行组执行目标测试任务的过程不受影响,还能够让自动化测试系统持续动态选择leader节点。
本发明提供的执行测试任务的方法,通过各节点的节点状态信息可以确定领导者节点,以保证目标测试任务的执行稳定性;还通过各目标区块链节点共同执行目标测试任务,可以确保状态更优的节点执行目标测试任务,提高了测试效率。
在一个实施例中,所述基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点,包括:
在所述空闲节点未执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述第一领导者节点。
可选地,智能合约系统向各区块链节点发送目标测试任务时,会确认该目标测试任务是否在区块链节点中执行过。在当前空闲节点没有执行过该测试任务的情况下,由当前空闲节点发起投票,各空闲节点基于共识机制确认当前空闲节点没有执行过该测试任务。再基于各空闲节点的CPU占用情况、当前网络情况、IO负载情况等节点状态信息,以及共识机制,在所有空闲节点达成共识后,将性能最优和运行稳定的空闲节点确定为leader节点。
其中,共识机制是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;是区块链网络中参与共识的节点,达成一致状态的过程,该过程意味着多个节点对于某一批交易的发生顺序、合法性以及它们对账本状态的更新达成一致。
本发明提供的执行测试任务的方法,通过未执行过目标测试任务的空闲节点的节点状态信息和共识机制,可以快速确定领导者节点,并能够避免状态异常的领导者节点执行目标测试任务,保证了测试任务的执行稳定性。
在一个实施例中,所述基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点,包括:
在所述空闲节点执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点。
可选地,智能合约系统向各区块链节点发送目标测试任务时,会确认该目标测试任务是否在区块链节点中执行过。在自动化测试系统中所有空闲节点都执行过该测试任务的情况下,根据所有空闲节点的节点状态信息计算出各空闲节点执行该目标测试任务的预估执行时间。若当前空闲节点计算得出本节点为预估执行时间最短的空闲节点,基于共识机制,则由该当前空闲节点发起投票,使得所有空闲节点确认当前空闲节点的预估执行时间是否为最短时间。在所有空闲节点的计算结果一致时,即确定该当前空闲节点为预估执行时间最短的节点时,将该当前空闲节点确定为leader节点。
本发明提供的执行测试任务的方法,通过根据执行过目标测试任务的空闲节点的预估执行时间确定领导者节点,提高了领导者节点的准确性,同时确定预估执行时间最短的节点为领导者节点,提高了测试效率。
在一个实施例中,所述基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点,包括:
基于各空闲节点的当前中央处理器CPU占用率、各空闲节点执行所述目标测试任务的历史执行时间以及对应的历史CPU占用率,确定各空闲节点执行所述目标测试任务的预估执行时间;
基于所述共识机制,将所述预估执行时间最短的空闲节点确定为所述第一领导者节点;
其中,所述节点状态信息包括:所述当前CPU占用率、所述历史执行时间以及所述历史CPU占用率。
可选地,节点状态信息可以包括CPU占用情况以及历史执行数据。CPU占用情况可以包括节点当前CPU占用率,历史执行数据包括节点执行该目标测试任务的历史执行时间,以及执行该测试任务的历史CPU占用率,历史CPU占用率可以是在历史执行时间内执行该目标测试任务的历史平均CPU占用率。
可选地,在历史CPU占用率均大于或均小于当前CPU占用率的情况下,则选取与当前CPU占用率的值最接近的一组历史CPU占用率数据进行本次预估执行时间的计算。假设历史CPU占用率为C1,历史执行时间为T1,当前CPU占用率为CC。则本次预估执行时间为:
可选地,在当前CPU占用率处于最大历史CPU占用率以及最小历史CPU占用率之间的情况下,在当前CPU占用率的两侧各选取一组与当前CPU占用率的值最接近的历史CPU占用率数据,进行本次预估执行时间的计算。假设历史CPU占用率为C1,历史执行时间为T1,历史CPU占用率为C2,历史执行时间为T2,当前CPU占用率为CC。其中,C2大于C1,CC大于C1。则本次预估执行时间为:
本发明提供的执行测试任务的方法,通过CPU占用情况以及历史执行数据确定目标测试任务的本次预估执行时间,以确定领导者节点,提高了领导者节点的准确性,同时确定本次预估执行时间最短的节点为领导者节点,提高了测试效率。
在一个实施例中,所述执行测试任务的方法,还包括:
基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果。
可选地,在所有目标区块链节点执行完目标测试任务并产生测试结果的情况下,各目标区块链节点基于共识机制对测试结果达成共识后,将测试结果保存在内存中,以更新区块链节点中的测试相关数据。其中,测试结果可以包括:测试报告,执行目标测试任务过程中各目标区块链节点的平均CPU占用率,目标测试任务的执行时间等。由此,全网各区块链节点对测试结果达成共识,并记录本次测试结果,作为下一次测试任务选择目标区块链节点的依据。
可选地,在预设时间阈值内领导者节点未向各区块链节点发送测试结果的情况下,智能合约系统将会再次发布该测试任务,并自动重新选举一个执行组再次执行测试任务。再次执行测试任务采用的方法与上述实施例提供的执行测试任务的方法相同,在此不再赘述。
可选地,如果leader节点超过预设时间阈值后发布测试结果,会导致各区块链节点无法达成共识,从而该测试结果无法被各区块链节点记录和存储。
本发明提供的执行测试任务的方法,通过基于共识机制,确定目标测试任务对应的测试结果,从而可以提高测试结果的可靠性;并向各区块链节点发送测试结果,保证了测试结果的一致性。
在一个实施例中,所述基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果,包括:
在第一领导者节点执行所述目标测试任务的情况下,将所述第一领导者节点的领导状态切换为候选状态;
在确定所述测试结果的情况下,基于各区块链节点的节点状态信息和所述共识机制,在候选状态的区块链节点中确定第二领导者节点;
通过所述第二领导者节点将所述测试结果发送至各区块链节点。
可选地,由于在执行组开始执行目标测试任务时,在系统内释放了leader节点的领导权限。自动化测试系统可以通过设置定时器来定时查询当前系统中是否存在leader节点。如果当前系统中不存在leader节点,基于各区块链节点的节点状态消息和共识机制,重新选举leader节点。在确定leader节点后,由leader节点向系统中各区块链节点发送目标测试任务的测试结果,再决定下次测试任务是否开始执行。由此,全网各区块链节点对测试结果达成共识,并记录本次测试结果,作为下一次测试任务选择目标区块链节点的依据。在下一次测试任务发布之后,会根据各节点中记录的测试相关数据再次进行目标区块链节点的确定。
本发明提供的执行测试任务的方法,通过定时查询系统中是否存在leader节点,并在没有leader节点的情况下,及时选举leader节点,从而保证了执行目标测试任务的稳定性,也提高了系统的可靠性。
在一个实施例中,该自动化测试系统还提供前台客户端页面,供用户手动触发测试以及查看测试报告等信息。该自动化测试系统还提供通知功能,例如向代码版本控制系统通知自动化测试结果以进行下一步操作。
图2为应用本发明提供的执行测试任务的方法的交互示意图。参照图2,本发明提供的执行测试任务的方法包括:
步骤201、自动化测试系统获取到代码版本管理系统中提交了新代码事件后,智能合约系统判断达到了智能合约1的触发条件。确定测试用例集以执行智能合约1。根据智能合约定义,测试任务1可以拆分成两个并行处理的子测试任务,分别为测试任务1.1和测试任务1.2。将任务放入待处理列表。
需要说明的是,自动化测试系统包括代码版本控制系统、智能合约系统、前台客户端、区块链A节点和区块链B节点。上述区块链A节点和区块链B节点仅用作空闲节点的示例,本发明对区块链节点的数量不作具体限定。
其中,该智能合约系统中部署了4个智能合约,包括:
智能合约1:代码提交时触发sanity测试;
智能合约2:代码打tag时触发regression测试;
智能合约3:人工触发测试集;
智能合约4:周期触发regression测试。
步骤202、智能合约系统向各区块链节点发布测试任务1.1,智能合约系统每次发布待处理任务列表中的第一个任务,由各区块链节点共同选出当前系统中适当个数的空闲节点来完成测试。
步骤203、根据各区块链节点历史执行测试任务1.1的情况,选出A节点作为当前系统的leader节点,并且作为测试任务1.1的leader节点。A节点选取当前系统中超过50%的空闲节点个数的节点,形成执行组,同时执行该测试任务。A节点选取完成以后广播至各节点,各节点达到共识以后,智能合约更新待处理列表,标记以A节点为leader节点的执行组正在执行测试任务1.1,A节点释放系统leader节点权限但仍保持着执行组内部的leader权限,待测试任务1.1执行完并在执行组内部达成共识以后由A节点发布测试结果。
步骤204、用户在前台客户端页面触发一个测试用例集,系统判断达到智能合约3要求,并执行智能合约。根据智能合约定义测试任务3需要按照顺序执行,无法拆分成多个并行处理的子任务,所以只能拆分成一个子测试任务3.1。
步骤205、目前自动化测试系统中没有leader节点,智能合约系统向各区块链节点发布测试任务1的子测试任务1.2。
步骤206、由于A节点带领的执行组正在执行测试任务1的子测试任务1.1,系统将在其他空闲节点中选取测试的执行节点。各节点选举出B节点作为本轮leader节点,B节点选取执行组,并与各节点达成共识,B节点代表执行组领取测试任务1.2,与全网其他节点达成共识以后,智能合约更新待处理列表,测试任务1.2标记为执行中。
步骤207、A节点带领的执行组在对测试任务1.1的测试结果达成共识以后,将测试报告,测试用时,执行测试任务过程中的CPU占用率保存在内存中。同时打开计时器,参与下一轮竞选,待竞选为leader节点以后,将测试报告,测试用时,执行过程中的平均CPU占用率同步给所有其他区块链节点。各区块链节点达成共识以后,智能合约将测试任务1.1从待处理列表中移除。
步骤208、智能合约3发布测试任务3.1。
步骤209、目前系统中空闲节点个数不满足最小阈值,将测试任务放入系统等待列表中。
步骤210、测试任务1.2执行完成,B节点发布测试结果。智能合约1将测试任务1.2从待处理列表中移除。
步骤211、现在智能合约1的所有子测试任务执行完成,智能合约1通知代码版本管理系统可以进行后续流程。
步骤212、在上述过程中,前台客户端都可以通过任何一个区块链节点查询所有的用例执行情况,因为所有区块链节点上保存了所有的信息。
在一个实施例中,当某个区块链节点竞选为leader节点以后,执行被触发的智能合约,或提交自己内存中存储的信息。将前一个区块链节点的哈希hash值,自身本次要提交的信息的默克尔merkle树根的hash值,以及当前时间戳,和本次要提交的信息一起封装成一个区块,发布到全网所有区块链节点,然后在得到大多数区块链节点的确认信息后将区块保存至区块链。所有跟随Follower节点根据leader节点的信息刷新自己的本地数据,以达到全网信息的一致性。
下面对本发明提供的执行测试任务的装置进行描述,下文描述的执行测试任务的装置与上文描述的执行测试任务的方法可相互对应参照。
图3为本发明提供的执行测试任务的装置的结构示意图。参照图3,本发明提供的执行测试任务的装置包括:
发送模块310,用于将目标测试任务发送至各区块链节点;
执行模块320,用于基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
本发明提供的执行测试任务的装置,通过将目标测试任务发送至各区块链节点,以使各区块链节点能够接收测试任务,并基于节点状态信息,在目标区块链节点中执行目标测试任务,从而无需再另外设置测试任务执行节点,降低了自动化测试成本;此外,还根据节点状态信息确定执行测试任务的目标区块链节点,避免了异常状态节点执行测试任务的情况,保证了测试任务执行的稳定性,并提高了测试效率。
在一个实施例中,所述执行模块320,还包括:
确定单元(图中未示出),用于在确定一个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定所述目标区块链节点;
在确定多个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点;
根据所述第一领导者节点,在剩余空闲节点中确定预设数量的执行节点;
将所述第一领导者节点以及所述执行节点作为所述目标区块链节点。
在一个实施例中,所述确定单元还用于:
在所述空闲节点未执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述第一领导者节点。
在一个实施例中,所述确定单元还用于:
在所述空闲节点执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点。
在一个实施例中,所述确定单元还用于:
基于各空闲节点的当前中央处理器CPU占用率、各空闲节点执行所述目标测试任务的历史执行时间以及对应的历史CPU占用率,确定各空闲节点执行所述目标测试任务的预估执行时间;
基于所述共识机制,将所述预估执行时间最短的空闲节点确定为所述第一领导者节点;
其中,所述节点状态信息包括:所述当前CPU占用率、所述历史执行时间以及所述历史CPU占用率。
在一个实施例中,所述执行测试任务的装置,还包括:
测试结果发送模块(图中未示出),用于基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果。
在一个实施例中,所述测试结果发送模块,还用于:
在第一领导者节点执行所述目标测试任务的情况下,将所述第一领导者节点的领导状态切换为候选状态;
在确定所述测试结果的情况下,基于各区块链节点的节点状态信息和所述共识机制,在候选状态的区块链节点中确定第二领导者节点;
通过所述第二领导者节点将所述测试结果发送至各区块链节点。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communication Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的计算机程序,以执行所述执行测试任务的方法的步骤,例如包括:
将目标测试任务发送至各区块链节点;
基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的执行测试任务的方法,该方法包括:
将目标测试任务发送至各区块链节点;
基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
另一方面,本申请实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行上述各实施例提供的方法,例如包括:
将目标测试任务发送至各区块链节点;
基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种执行测试任务的方法,其特征在于,包括:
将目标测试任务发送至各区块链节点;
基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
2.根据权利要求1所述的执行测试任务的方法,其特征在于,所述基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,包括:
在确定一个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定所述目标区块链节点;
在确定多个目标区块链节点的情况下,基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点;
根据所述第一领导者节点,在剩余空闲节点中确定预设数量的执行节点;
将所述第一领导者节点以及所述执行节点作为所述目标区块链节点。
3.根据权利要求2所述的执行测试任务的方法,其特征在于,所述基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点,包括:
在所述空闲节点未执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述第一领导者节点。
4.根据权利要求2所述的执行测试任务的方法,其特征在于,所述基于各区块链节点的节点状态信息,在空闲节点中确定第一领导者节点,包括:
在所述空闲节点执行过所述目标测试任务的情况下,基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点。
5.根据权利要求4所述的执行测试任务的方法,其特征在于,所述基于各空闲节点的节点状态信息和共识机制,确定所述目标测试任务的预估执行时间最短的空闲节点为所述第一领导者节点,包括:
基于各空闲节点的当前中央处理器CPU占用率、各空闲节点执行所述目标测试任务的历史执行时间以及对应的历史CPU占用率,确定各空闲节点执行所述目标测试任务的预估执行时间;
基于所述共识机制,将所述预估执行时间最短的空闲节点确定为所述第一领导者节点;
其中,所述节点状态信息包括:所述当前CPU占用率、所述历史执行时间以及所述历史CPU占用率。
6.根据权利要求1-5任一项所述的执行测试任务的方法,其特征在于,还包括:
基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果。
7.根据权利要求6所述的执行测试任务的方法,其特征在于,所述基于共识机制,确定所述目标测试任务对应的测试结果,并向各区块链节点发送所述测试结果,包括:
在第一领导者节点执行所述目标测试任务的情况下,将所述第一领导者节点的领导状态切换为候选状态;
在确定所述测试结果的情况下,基于各区块链节点的节点状态信息和所述共识机制,在候选状态的区块链节点中确定第二领导者节点;
通过所述第二领导者节点将所述测试结果发送至各区块链节点。
8.一种执行测试任务的装置,其特征在于,包括:
发送模块,用于将目标测试任务发送至各区块链节点;
执行模块,用于基于各区块链节点的节点状态信息,确定一个或多个目标区块链节点,并在所述目标区块链节点中执行所述目标测试任务;
其中,所述区块链节点用于执行所述目标测试任务和记录测试相关数据。
9.一种电子设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的执行测试任务的方法的步骤。
10.一种处理器可读存储介质,其特征在于,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行权利要求1至7任一项所述的执行测试任务的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111163180.1A CN115878450A (zh) | 2021-09-30 | 2021-09-30 | 执行测试任务的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111163180.1A CN115878450A (zh) | 2021-09-30 | 2021-09-30 | 执行测试任务的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878450A true CN115878450A (zh) | 2023-03-31 |
Family
ID=85756703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111163180.1A Pending CN115878450A (zh) | 2021-09-30 | 2021-09-30 | 执行测试任务的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878450A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117314659A (zh) * | 2023-11-29 | 2023-12-29 | 中国人寿保险股份有限公司上海数据中心 | 一种非保险单证的管理方法 |
-
2021
- 2021-09-30 CN CN202111163180.1A patent/CN115878450A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117314659A (zh) * | 2023-11-29 | 2023-12-29 | 中国人寿保险股份有限公司上海数据中心 | 一种非保险单证的管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656782A (zh) | 可视化调度监控方法、装置及服务器 | |
CN103152390B (zh) | 分布式存储系统的节点配置方法、装置、节点及系统 | |
CN111786818A (zh) | 一种区块链共识节点状态监控方法和装置 | |
CN112422320B (zh) | 服务器的主从切换方法、装置和服务器 | |
CN110708196B (zh) | 数据处理方法及装置 | |
CN112418794B (zh) | 一种业务流转的方法及装置 | |
CN108319538B (zh) | 大数据平台运行状态的监控方法和系统 | |
CN111901422A (zh) | 一种集群中节点的管理方法、系统及装置 | |
CN113342893B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN113553179A (zh) | 分布式键值存储负载均衡方法及系统 | |
CN111181774A (zh) | 一种MapReduce任务的高可用方法、系统、终端及存储介质 | |
CN115878450A (zh) | 执行测试任务的方法及装置 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN109587218B (zh) | 一种集群选举的方法和装置 | |
CN107105037B (zh) | 一种基于文件校验的分布式视频cdn资源管理系统及方法 | |
CN112612604A (zh) | 基于Actor模型的任务调度方法、装置 | |
CN110008068B (zh) | 分布式任务容灾方法及其装置 | |
CN109525408B (zh) | 一种设备异常处理方法、装置及云存储系统 | |
CN115102862A (zh) | 一种用于sdn设备的自动同步方法及装置 | |
CN114546730A (zh) | 数据恢复处理方法、装置及系统 | |
CN113867778A (zh) | 一种镜像文件的生成方法、装置、电子设备及存储介质 | |
CN109542598B (zh) | 定时任务管理方法及装置 | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN108228328B (zh) | 一种流任务实现方法、装置及电子设备 | |
CN110618863A (zh) | 一种基于Raft算法的作业调度方法 |
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 |