CN113760691B - 持续集成测试方法、装置及存储介质 - Google Patents

持续集成测试方法、装置及存储介质 Download PDF

Info

Publication number
CN113760691B
CN113760691B CN202010522913.5A CN202010522913A CN113760691B CN 113760691 B CN113760691 B CN 113760691B CN 202010522913 A CN202010522913 A CN 202010522913A CN 113760691 B CN113760691 B CN 113760691B
Authority
CN
China
Prior art keywords
test
result
node
nodes
test node
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.)
Active
Application number
CN202010522913.5A
Other languages
English (en)
Other versions
CN113760691A (zh
Inventor
张栋珀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202010522913.5A priority Critical patent/CN113760691B/zh
Publication of CN113760691A publication Critical patent/CN113760691A/zh
Application granted granted Critical
Publication of CN113760691B publication Critical patent/CN113760691B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请实施例提供一种持续集成测试方法、装置及存储介质,该方法包括:客户端在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,至少两个测试节点中的每个测试节点响应于第一测试请求,执行持续集成过程中的任意一个操作,获得第一执行结果,并将获得的第一执行结果发送给其他测试节点,每个测试节点可以根据自身的第一执行结果以及其他测试节点的第一执行结果来确定第一共识结果,并将各自的第一共识结果发送给客户端,客户端根据每个测试节点的第一共识结果来确定第一测试请求的测试结果。通过多个测试节点并行进行独立测试,节约测试时间,降低外部扰动带来的测试误差,提高持续集成自动化测试的效率和准确性。

Description

持续集成测试方法、装置及存储介质
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种持续集成测试方法、装置及存储介质。
背景技术
持续集成(Continuous integration,简称CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,每次集成都通过自动化的构建(包括编译,部署,自动化测试)来验证项目迭代是否满足质量要求,从而尽快地发现由于项目迭代造成的软件运行异常。
在持续集成自动测试过程中,编译操作或部署操作发生失败时,整个持续集成流程失败。对于一组测试用例集合,其中某一个测试用例执行失败即表示自动化测试操作的失败。当测试失败时,软件开发人员及时对错误软件进行检查,以保证软件正常运行。
在使用测试过程中,会存在一些外部扰动,例如测试设备出现一些异常表现,这些非程序原因的外部扰动会导致整个持续集成流程的阻塞或失败,会浪费时间,降低持续集成自动化测试的效率。
发明内容
本申请实施例提供一种持续集成测试方法、装置及存储介质,用以排除持续集成测试过程中的外部干扰,提高持续集成自动化测试的效率。
第一方面,本申请实施例提供一种持续集成测试方法,该方法应用于客户端,该方法包括:
在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,第一测试请求用于请求至少两个测试节点执行第一操作,第一操作为持续集成过程中的任意一个操作;
获得每个测试节点的第一共识结果,第一共识结果是基于每个测试节点的第一执行结果确定的,第一执行结果为测试节点执行第一操作时得到的执行结果;
根据每个测试节点的第一共识结果,确定第一测试请求的测试结果。
本申请的实施例提供的技术方案可以包括以下有益效果:通过多个测试节点来并行执行持续集成过程,当其中一个测试节点出现异常时,可以根据其他的测试节点的示第一共识结果来确定最终的测试结果,节约测试时间,降低外部扰动带来的测试误差,提高持续集成自动化测试的效率和准确性。
在第一方面的一种可能的实现方式中,根据每个测试节点的第一共识结果,确定第一测试请求的测试结果,包括:
在第一操作为编译操作或部署操作,且每个测试节点的第一共识结果为通过时,向至少两个测试节点发送第二测试请求,第二测试请求用于请求至少两个测试节点执行第二操作,第二操作为持续集成过程中第一操作的下一步操作;
获得每个测试节点的第二共识结果,第二共识结果是基于每个测试节点的第二执行结果确定的,第二执行结果为测试节点执行第二操作时得到的执行结果;
根据每个测试节点的第二共识结果,确定第一测试请求的测试结果。
本申请的实施例提供的技术方案可以包括以下有益效果:本申请实施例对持续集成过程中的编译操作、部署操作和自动化操作依次均采用多个测试节点进行并行测试,针对每个操作,排除外部扰动对该操作带来的测试误差,进一步提高了持续集成的可靠性和准确性。
在第一方面的一种可能的实现方式中,上述方法还包括:
从至少两个测试节点中确定主测试节点;
此时上述获得每个测试节点的第一共识结果,包括:接收来自主测试节点的反馈信息,反馈信息包括每个测试节点的第一共识结果;从反馈信息中获得每个测试节点的第一共识结果。
在第一方面的一种可能的实现方式中,上述向至少两个测试节点发送第一测试请求,包括:向主测试节点发送第一测试请求,使得主测试节点将第一测试请求发送给每个测试节点;和/或,上述向至少两个测试节点发送第二测试请求包括:向主测试节点发送第二测试请求,使得主测试节点将第二测试请求发送给每个测试节点。
在第一方面的一种可能的实现方式中,在第一操作为编译操作或部署操作,每个测试节点的第一共识结果为通过,且至少两个测试节点中第一测试节点的第一执行结果为失败时,重启第一测试节点;在第一测试节点重启后,向至少两个测试节点发送第二测试请求。
在第一方面的一种可能的实现方式中,若主测试节点为第一测试节点时,则该方法还包括:从至少两个测试节点中重新确定主测试节点。
本申请的实施例提供的技术方案可以包括以下有益效果:客户端从至少两个测试节点中确定主测试节点,并通过主测试节点与其他测试节点进行通信,提高了通信的效率。
第二方面,本申请实施例提供一种持续集成测试方法,应用于至少两个测试节点中的每个测试节点,该方法包括:
接收来自客户端的第一测试请求,响应于第一测试请求,执行第一操作,获得第一执行结果,第一测试请求用于请求至少两个测试节点执行第一操作,第一操作为持续集成过程中的任意一个操作;
将自身的第一执行结果发送给至少两个测试节点中的其他测试节点,以及接收来自于其他测试节点的第一执行结果;
根据每个测试节点的第一执行结果,确定第一共识结果,并将第一共识结果发送给客户端。
本申请的实施例提供的技术方案可以包括以下有益效果:通过多个测试节点来并行执行持续集成过程,当其中一个测试节点出现异常时,可以根据其他的测试节点的示第一共识结果来确定最终的测试结果,节约测试时间,降低外部扰动带来的测试误差,提高持续集成自动化测试的效率和准确性。另外,本申请实施例中每个测试节点将自身的第一执行结果广播给其他的测试节点,接收其他测试节点的第一执行结果,并根据自身的第一执行结果以及其他测试节点的第一执行结果,获得自身的第一共识结果,保证最后持续集成测试结果的稳定性和一致性,提高了持续集成测试的准确性。
在第二方面的一种可能的实现方式中,上述方法还包括:
接收来自客户端的第二测试请求,响应于第二测试请求,执行第二操作,获得第二执行结果,第二操作为持续集成过程中第一操作的下一步操作;
将自身的第二执行结果发送给其他测试节点,以及接收来自于其他测试节点的第二执行结果;
根据每个测试节点的第二执行结果,确定第二共识结果,并将第二共识结果发送给客户端。
在第二方面的一种可能的实现方式中,上述接收来自客户端的第一测试请求,包括:从主测试节点处接收来自客户端的第一测试请求,主测试节点为至少两个测试节点中的一个测试节点;和/或,接收来自客户端的第二测试请求,包括:从主测试节点处接收来自客户端的第二测试请求。
在第二方面的一种可能的实现方式中,上述将第一共识结果发送给客户端,包括:将第一共识结果发送给主测试节点,使得主测试节点将第一共识结果发送给客户端;和/或,将第二共识结果发送给客户端,包括:将第二共识结果发送给主测试节点,使得主测试节点将第二共识结果发送给客户端。
在第二方面的一种可能的实现方式中,上述根据每个测试节点的第一执行结果,确定第一共识结果,包括:根据每个测试节点的第一执行结果,使用拜占庭容错共识方法,确定第一共识结果;和/或,根据每个测试节点的第二执行结果,确定第二共识结果,包括:根据每个测试节点的第二执行结果,使用拜占庭容错共识方法,确定第二共识结果,这样保证各测试节点关于第一共识结果和第二共识结果的一致性。
第三方面,本申请实施例提供一种持续集成测试装置,包括:
发送单元,用于在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,第一测试请求用于请求至少两个测试节点执行第一操作,第一操作为持续集成过程中的任意一个操作;
获取单元,用于获得每个测试节点的第一共识结果,第一共识结果是基于每个测试节点的第一执行结果确定的,第一执行结果为测试节点执行第一操作时得到的执行结果;
处理单元,用于根据每个测试节点的第一共识结果,确定第一测试请求的测试结果。
在第三方面的一种可能的实现方式中,发送单元,还用于在第一操作为编译操作或部署操作,且每个测试节点的第一共识结果为通过时,向至少两个测试节点发送第二测试请求,第二测试请求用于请求至少两个测试节点执行第二操作,第二操作为持续集成过程中第一操作的下一步操作;
获取单元,还用于获得每个测试节点的第二共识结果,第二共识结果是基于每个测试节点的第二执行结果确定的,第二执行结果为测试节点执行第二操作时得到的执行结果;
处理单元,具体用于根据每个测试节点的第二共识结果,确定第一测试请求的测试结果。
在第三方面的一种可能的实现方式中,处理单元,还用于从至少两个测试节点中确定主测试节点;
获取单元,具体用于接收来自主测试节点的反馈信息,反馈信息包括每个测试节点的第一共识结果;从反馈信息中获得每个测试节点的第一共识结果。
在第三方面的一种可能的实现方式中,发送单元,具体用于向主测试节点发送第一测试请求,使得主测试节点将第一测试请求发送给每个测试节点;
和/或,
发送单元,具体用于向主测试节点发送第二测试请求,使得主测试节点将第二测试请求发送给每个测试节点。
在第三方面的一种可能的实现方式中,处理单元,还用于在第一操作为编译操作或部署操作,每个测试节点的第一共识结果为通过,且至少两个测试节点中第一测试节点的第一执行结果为失败时,重启第一测试节点;
发送单元,具体用于在第一测试节点重启后,向至少两个测试节点发送第二测试请求。
在第三方面的一种可能的实现方式中,处理单元,还用于在主测试节点为第一测试节点时,从至少两个测试节点中重新确定主测试节点。
第四方面,本申请实施例提供一种持续集成测试装置,包括:
收发单元,用于接收来自客户端的第一测试请求,第一测试请求用于请求至少两个测试节点执行第一操作,第一操作为持续集成过程中的任意一个操作;
处理单元,用于响应于第一测试请求,执行第一操作,获得第一执行结果;
收发单元,还用于将自身的第一执行结果发送给至少两个测试节点中的其他测试节点,以及接收来自于其他测试节点的第一执行结果;
处理单元,还用于根据每个测试节点的第一执行结果,确定第一共识结果;
收发单元,还用于将第一共识结果发送给客户端。
在第四方面的一种可能的实现方式中,收发单元,还用于接收来自客户端的第二测试请求,第二操作为持续集成过程中第一操作的下一步操;
处理单元,还用于响应于第二测试请求,执行第二操作,获得第二执行结果作;
收发单元,还用于将自身的第二执行结果发送给其他测试节点,以及接收来自于其他测试节点的第二执行结果;
处理单元,还用于根据每个测试节点的第二执行结果,确定第二共识结果;
收发单元,还用于将第二共识结果发送给客户端。
在第四方面的一种可能的实现方式中,收发单元,具体用于从主测试节点处接收来自客户端的第一测试请求,主测试节点为至少两个测试节点中的一个测试节点;
和/或,
收发单元,具体用于从主测试节点处接收来自客户端的第二测试请求。
在第四方面的一种可能的实现方式中,收发单元,具体用于将第一共识结果发送给主测试节点,使得主测试节点将第一共识结果发送给客户端;
和/或,
收发单元,具体用于将第二共识结果发送给主测试节点,使得主测试节点将第二共识结果发送给客户端。
在第四方面的一种可能的实现方式中,处理单元,具体用于根据每个测试节点的第一执行结果,使用拜占庭容错共识装置,确定第一共识结果;
和/或,
处理单元,具体用于根据每个测试节点的第二执行结果,使用拜占庭容错共识装置,确定第二共识结果。
第五方面,本申请实施例提供一种电子设备,包括处理器和存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序以实现上述第一方面和/或第二方面任一项所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质包括计算机指令,当所述指令被计算机执行时,使得所述计算机实现如第一方面和/或第二方面任一项所述的方法。
第七方面,本申请实施例提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,计算机的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得计算机实施第一方面和/或第二方面任一所述的方法。
本申请实施例提供的持续集成测试方法、装置及存储介质,客户端在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,至少两个测试节点中的每个测试节点响应于第一测试请求,执行持续集成过程中的任意一个操作,获得第一执行结果,并将获得的第一执行结果发送给其他测试节点,这样每个测试节点可以根据自身的第一执行结果以及其他测试节点的第一执行结果来确定第一共识结果,使得各第一测试节点达到共识,保证最后持续集成测试结果的稳定性和一致性,提高了持续集成测试的准确性。接着,各测试节点将第一共识结果发送给客户端,客户端根据每个测试节点的第一共识结果来确定第一测试请求的测试结果。即本申请实施例,通过至少两个测试节点并行进行独立测试,当其中一个测试节点故障时,可以根据其他测试节点的第一共识结果来确定持续集成过程的最终测试结果,节约测试时间,降低外部扰动带来的测试误差,提高持续集成自动化测试的效率和准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例涉及的一种应用场景示意图;
图2为本申请实施例涉及的持续集成测试方法的一种流程示意图;
图3为本申请实施例涉及各测试节点之间的交互示意图;
图4为本申请实施例提供的持续集成测试方法的另一流程图;
图5为本申请实施例提供的持续集成测试方法的另一流程图;
图6为本申请实施例涉及的客户端、主测试节点和其他测试节点之间的交互示意图;
图7为本申请实施例提供的持续集成测试装置的一种结构示意图;
图8为本申请实施例提供的持续集成测试装置的一种结构示意图;
图9为本申请实施例提供的一种终端设备的结构示意图;
图10为本申请实施例提供的一种持续集成测试装置的结构示意图;
图11为本申请实施例涉及的电子设备的框图;
图12为本申请实施例提供的一种持续集成测试装置的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应理解,在本申请实施例中,“与A对应的B”表示B与A相关联。在一种实现方式中,可以根据A确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
持续集成(Continuous integration,简称CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,每次集成都通过自动化的构建(包括编译,部署,自动化测试)来验证项目迭代是否满足质量要求,从而尽快地发现由于项目迭代造成的软件运行异常。
在持续集成测试过程中,会存在一些外部扰动,例如测试设备出现一些异常表现,这些非程序原因的外部扰动会导致整个持续集成流程的阻塞或失败。例如,编译操作或部署操作发生失败时,整个持续集成流程失败。对于一组测试用例集合,其中某一个用例执行失败即表示自动化测试操作的失败。这种由于外部扰动而非程序本身造成的持续集成测试失败,会浪费时间,降低持续集成自动化测试的效率。
为了解决上述技术问题,本申请实施例提供一种持续集成测试方法,客户端在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求。至少两个测试节点中的每个测试节点响应于第一测试请求,执行第一操作,获得第一执行结果,并广播自身的第一执行结果,同时接收其他测试节点广播的第一执行结果,这样每个测试节点可以根据自身的第一执行结果以及其他测试节点的第一执行结果,获得自身的第一共识结果,并将自身的第一共识结果发送给客户端。客户端根据每个测试节点的第一共识结果,确定第一测试请求对应的测试结果。这样通过多个测试节点来并行执行持续集成过程,当其中一个测试节点出现异常时,可以根据其他的测试节点的示第一共识结果来确定最终的测试结果,节约测试时间,提高持续集成自动化测试的效率。
另外,本申请实施例中每个测试节点将自身的第一执行结果广播给其他的测试节点,接收其他测试节点的第一执行结果,并根据自身的第一执行结果以及其他测试节点的第一执行结果,获得自身的第一共识结果,保证最后持续集成测试结果的稳定性和一致性,提高了持续集成测试的准确性。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例涉及的一种应用场景示意图,包括:终端设备12、管理服务器11和N个测试节点13。
管理服务器11用于维护代码管理仓库,代码管理仓库包括主干代码和修改过的新代码,用户通过客户端连到管理服务器11,可以从管理服务器11中取出最新的代码或者提交更新的代码。可选的,管理服务器11可以为自由开放(Subversion,SVN)服务器,或者为GIT服务器。
终端设备12上安装有客户端,该客户端可以与管理服务器11连接,可以从管理服务器11取出最新的代码或者提交更新的代码。可选的,终端设备12还可以对管理服务器11上的码管理仓库进行监控。终端设备12:可以是无线终端设备也可以是有线终端设备,无线终端设备可以是指一种具有无线收发功能的设备,可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。所述终端设备可以是手机(mobile phone)、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端设备、无人驾驶(self driving)中的无线终端设备、远程医疗(remote medical)中的无线终端设备、智能电网(smart grid)中的无线终端设备、运输安全(transportation safety)中的无线终端设备、智慧城市(smart city)中的无线终端设备、智慧家庭(smart home)中的无线终端设备等等,在此不作限定。可以理解的是,本申请实施例中,终端设备也可以称为用户设备(user equipment,UE)。
N个测试节点13中的每个测试节点可以完成持续集成过程,例如可以执行编译操作、部署操作和自动化测试操作中的至少一个。N个测试节点13的测试环境相同。
可选的,如图1所示,上述N个测试节点13可以为N个独立的测试服务器。
需要说明的是,图1为本申请实施例的一种应用场景的示意图,本申请实施例的测试方法的应用场景包括但不限于图1所示。
例如在一些实施例中,上述N个测试节点可以为一个测试服务器上的N个测试进程。
例如在一些实施例,上述N个测试节点为区块链中的每个节点(peer),每个节点(peer)对应一个虚拟容器(docker),每个节点(peer)的测试环境为虚拟容器的镜像环境,其测试环境相同。
下面结合具体的示例,对持续集成测试方法的具体过程进行描述。
图2为本申请实施例涉及的持续集成测试方法的一种流程示意图。如图2所示,本申请实施例的方法包括:
S101、客户端在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求。
其中,第一测试请求用于请求至少两个测试节点执行第一操作,上述第一操作为持续集成过程中的任意一个操作,持续集成过程包括:编译操作、部署操作和自动化测试操作。
示例性的,上述至少两个测试节点可以为图1中N个测试节点中的全部或部分。至少两个测试节点中的每一个测试节点可以与安装有客户端的终端设备进行通信。其通信方式可以为有线通信,也可以为无线通信。
S102、测试节点响应于第一测试请求,执行第一操作,获得第一执行结果。
每个测试节点的第一执行结果包括通过(即True)和失败(即False)两种情况。
本申请实施例中,每个测试节点执行第一操作,获得第一执行结果的过程相似,为例便于描述,以测试节点1为例进行说明。
示例一,若第一操作为编译操作,测试节点1接收到第一测试请求后,执行编译操作,获得编译操作的结果,将该编译操作的结果作为测试节点1的第一执行结果。
示例二,若第一操作为部署操作,测试节点1接收到第一测试请求后,执行部署操作,获得部署操作的结果,将该部署操作的结果作为测试节点1的第一执行结果。
示例三,若第一操作为自动化测试操作,测试节点1接收到第一测试请求后,加载自动化测试用例集合,执行每一条测试用例,获得每一条测试用例的测试结果。接着,测试节点1根据每条测试用例的测试结果,获得自动化测试操作的结果,并将该自动化测试操作的结果作为测试节点1的第一执行结果。
其中,测试节点1执行第一操作(例如编译操作、部署操作或自动化测试操作),获得对应的第一执行结果的过程可以参照已有技术的描述,在此不再赘述。
S103、测试节点将自身的第一执行结果发送给至少两个测试节点中的其他测试节点,以及接收来自于其他测试节点的第一执行结果。
为了便于描述,特此举例说明:
如图3所示,假设至少两个测试节点包括4个测试节点,分别为测试节点0、测试节点1、测试节点2和测试节点3,将测试节点0的第一执行结果记为第一执行结果0,将测试节点1的第一执行结果记为第一执行结果1,将测试节点2的第一执行结果记为第一执行结果2,将测试节点3的第一执行结果记为第一执行结果3。测试节点0将自身的第一执行结果0发送给测试节点1、测试节点2和测试节点3,测试节点1将自身的第一执行结果1发送给测试节点0、测试节点2和测试节点3,测试节点2将自身的第一执行结果2发送给测试节点0、测试节点1和测试节点3,测试节点3将自身的第一执行结果3发送给测试节点0、测试节点1和测试节点2。这样,每个测试节点可以获得自身的第一执行结果,以及其他节点的第一执行结果。
可选的,上述各测试节点向其他测试节点发送自身的第一执行结果的方式可以为广播方式,例如,测试节点1将自身的第一执行结果1广播给测试节点0、测试节点2和测试节点3。
S104、测试节点根据每个测试节点的第一执行结果,确定第一共识结果,将第一共识结果发送给客户端。
本申请实施例中,测试节点根据每个测试节点的第一执行结果,确定第一共识结果的方式包括但不限于如下方式:
方式一,当第一执行结果为通过的测试节点的数量与测试节点的总数量的第一比值大于或等于预设比值(例如60%)时,确定各测试节点的第一共识结果为通过,否则为失败。如图3所示,假设4个测试节点中,测试节点3的第一执行结果为False,其他测试节点的第一执行结果均为True,这样可以获得第一比值为3/4大于60%,进而确定4个测试节点中每个测试节点的第一共识结果均为True。
方式二,各测试节点根据每个测试节点的第一执行结果,使用拜占庭容错共识方法,确定各测试节点的第一共识结果。
具体的,根据如下公式(1)确定各测试节点的第一共识结果:
p>3d+1(d>0)…………………(1)
其中,d为第一执行结果为失败的测试节点数,p为总的测试节点数,即上述的至少两个测试节点。
当p满足上述公式(1)时,确定测试节点的第一共识结果为通过(即True),若p不满足上述公式(1)时,则确定测试节点的第一共识结果为失败(即False)。
下面通过几个具体的示例来进一步说明采用方式二,来确定第一共识结果的过程。
示意一,参照图3所示,若4个测试节点的第一执行结果均为True时,根据上述公式(1),可以确定出各测试节点对应的第一执行结果与第一共识结果的对应关系如表1所示:
表1:p=4,d=0
测试节点 对应的第一执行结果 第一共识结果
测试节点0 T T T T T
测试节点1 T T T T T
测试节点2 T T T T T
测试节点3 T T T T T
其中,各测试节点对应的第一执行结果包括测试节点自身的第一执行结果以及从其他测试节点处获得的第一执行结果,例如测试节点1对应的第一执行结果包括测试节点1的第一执行结果,以及测试节点0的第一执行结果、测试节点2的第一执行结果和测试节点3的第一执行结果。表1中的T表示True。
由表1可知,当各测试节点的第一执行结果均为True时,则各测试节点的第一共识结果也为True。
示例二,参照图3所示,若4个测试节点中有一个测试节点的第一执行结果为False,例如测试节点3的第一执行结果3为False,其他测试节点的第一执行结果均为True时,此时,根据上述公式(1),可以确定出各测试节点对应的第一执行结果与第一共识结果如表2所示:
表2:p=4,d=1
表2中的F表示False,由表2可知,当4个测试节点中有一个测试节点的第一执行结果为False,其他测试节点的第一执行结果均为True时,根据上述公式(1)可以确定各测试节点的第一共识结果为True。
示例三,参照图3所示,若4个测试节点中有两个测试节点的第一执行结果为False,例如测试节点3和测试节点2的第一执行结果为False,测试节点0和测试节点1的第一执行结果为True时,此时,根据上述公式(1),可以确定出各测试节点对应的第一执行结果与第一共识结果如表3所示:
表3:p=4,d=2
测试节点 对应的第一执行结果 第一共识结果
测试节点0 T T F F N/A
测试节点1 T F F T N/A
测试节点2 F F T T N/A
测试节点3 F T T F N/A
表3中的N/A表示共识失败,由表3可知,当4个测试节点中有两个测试节点的第一执行结果为False,其他两个测试节点的第一执行结果均为True时,根据上述公式(1)可以确定各测试节点的第一共识结果为N/A。
本申请实施例,各测试节点将自身的第一执行结果发送给其他的测试节点,使得每个测试节点除了获得自身的第一执行结果外,还获得了其他测试节点的第一执行结果,这样各测试节点根据每个测试节点的第一执行结果来确定第一共识结果时,保证了第一共识结果的一致性。
各测试节点根据上述方式一或方式二,确定出各自的第一共识结果后,将各自的第一共识结果发送给客户端。
S105、客户端根据每个测试节点的第一共识结果,确定第一测试请求的测试结果。
客户端接收到每个测试节点发送的第一共识结果后,根据每个测试节点的第一共识结果,确定第一测试请求的测试结果,例如,当每个测试节点的第一共识结果均为True时,确定第一测试请求的测试结果为True(即通过),当每个测试节点的第一共识结果均为N/A时,确定第一测试请求的测试结果为False(即失败)。
本申请实施例提供的持续集成测试方法,客户端在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,至少两个测试节点中的每个测试节点响应于第一测试请求,执行持续集成过程中的任意一个操作,获得第一执行结果,并将获得的第一执行结果发送给其他测试节点,这样每个测试节点可以根据自身的第一执行结果以及其他测试节点的第一执行结果来确定第一共识结果,使得各第一测试节点达到共识,保证最后持续集成测试结果的稳定性和一致性,提高了持续集成测试的准确性。接着,各测试节点将第一共识结果发送给客户端,客户端根据每个测试节点的第一共识结果来确定第一测试请求的测试结果。即本申请实施例,至少两个测试节点并行进行独立测试,当其中一个测试节点故障时,可以根据其他测试节点的第一共识结果来确定持续集成过程的最终测试结果,节约测试时间,降低外部扰动带来的测试误差,提高持续集成自动化测试的效率和准确性。
图4为本申请实施例提供的持续集成测试方法的另一流程图,在上述实施例的基础上,在第一操作为编译操作或部署操作,且每个测试节点的第一共识结果为通过时,上述S105中客户端根据每个测试节点的第一共识结果,确定第一测试请求的测试结果,如图4所示,包括:
S201、客户端在第一操作为编译操作或部署操作,且每个测试节点的第一共识结果为通过时,向至少两个测试节点发送第二测试请求。
上述第二测试请求用于请求至少两个测试节点执行第二操作。
第二操作为持续集成过程中第一操作的下一步操作。例如,若第一操作为编译操作,则第二操作为部署操作,若第一操作为部署操作,则第二操作为自动测试操作。
也就是说,客户端在确定测试节点发送的第一共识结果为通过时,判断上述第一操作是否为自动测试操作,若第一操作为自动测试操作则整个测试过程结束。若判断第一操作不是自动测试操作,而是编译操作,客户端向至少两个测试节点发送第二测试请求,请求各测试节点执行部署操作,各测试节点执行完部署操作后。若第一操作为部署操作,则客户端向至少两个测试节点发送第二测试请求,请求各测试节点执行自动化测试操作。
S202、测试节点响应于第二测试请求,执行第二操作,获得第二执行结果。
各测试节点执行第二操作,获得第二执行结果的过程与各测试节点执行第一操作,获得第一执行结果的过程相似,参照上述S102的描述,在此不再赘述。
S203、测试节点将自身的第二执行结果发送给其他测试节点,以及接收来自于其他测试节点的第二执行结果。
上述S203与上述S103的执行过程相似,参照上述S103的描述,在此不再赘述。
S204、测试节点根据每个测试节点的第二执行结果,确定第二共识结果,并将第二共识结果发送给客户端。
上述S204与上述S104的执行过程相似,参照上述S104的描述,在此不再赘述。
S205、客户端根据每个测试节点的第二共识结果,确定第一测试请求的测试结果。
若上述第二操作为自动化测试操作,则客户端根据每个测试节点的第二共识结果,确定第一测试请求的测试结果,即当各测试节点关于自动化测试操作的第二共识结果为True时,确定第一测试请求的测试结果为True(即通过),当各测试节点关于自动化测试操作的第二共识结果为时,确定第一测试请求的测试结果为False(即失败)。
若上述第二操作为部署操作,则客户端确定各测试节点关于部署操作的第二共识结果为True时,客户端再次向至少两个测试节点发送第二测试请求,该第二测试请求用于请求各测试节点执行自动化测试操作,返回执行上述S202至S205的步骤。
下面以第二操作为自动化测试操作为例,对自动化测试操作实现过程进行介绍,自动化测试操作包括如下步骤:
步骤1、测试节点接收到第二测试请求后,执行自动化测试操作,加载自动化测试用例集合。
该自动化测试用例集合中包括多个自动化测试用例,各测试用例可能相互独立,也可能具有依赖关系。当多个测试用例中,任意一个测试用例的执行结果与其他测试用例的执行结果之间没有相关性时,则说明多个测试用例相互独立。反之,当测试用例的执行结果与其他测试用例的执行结果之间具有相关性时,则说明多个用例之间具有依赖性。
步骤2、从自动化测试用例集合中选取一个测试用例作为第一测试用例,获得该测试节点的第二执行结果。
步骤3、测试节点将自身的第二执行结果发送给其他测试节点,以及接收来自于其他测试节点的第二执行结果。
步骤4、各测试节点根据每个测试节点关于该测试用例的第二执行结果,确定该测试用例对应的第二共识结果,并将该测试用例对应的第二共识结果发送给客户端。
步骤5、判断自动化测试用例集合中的测试用例是否测试完毕,若否,则返回执行上述步骤2至步骤4。若是,则整个自动化测试操作过程结束。
最后,客户端根据每个测试用例对应的第二共识结果,确定自动化测试操作的测试结果。
本申请实施例提供的持续集成测试方法,客户端在第一操作为编译操作或部署操作,且每个测试节点的第一共识结果为通过时,向至少两个测试节点发送第二测试请求,使得测试节点响应于第二测试请求,执行第二操作,直到整个持续集成过程结束为止。即本申请实施例对持续集成过程中的编译操作、部署操作和自动化操作依次均采用多个测试节点进行并行测试,针对每个操作,排除外部扰动对该操作带来的测试误差,进一步提高了持续集成的可靠性和准确性
图5为本申请实施例提供的持续集成测试方法的另一流程图,在上述实施例的基础上,本申请实施例涉及确定主测试节点的过程。如图5所示,本申请实施例的方法包括:
S301、客户端从至少两个测试节点中确定主测试节点。
客户端确定主测试节点的方法包括但不限于如下几种:
方式一,客户端可以从至少两个测试节点中随机确定一个测试节点作为主测试节点。
方式二,客户端将至少两个测试节点中,最先与客户端建立通信的测试节点确定为主测试节点。
方式三,客户端将至少两个测试节点中,网络信息最佳的测试节点确定为主测试节点。
方式四,客户端将至少两个测试节点中,硬件设备最佳的测试节点确定为主测试节点。
S302、客户端向主测试节点发送第一测试请求。
如图6所示,假设至少两个测试节点包括4个测试节点,分别为测试节点0、测试节点1、测试节点2和测试节点3,假设主测试节点为测试节点0。客户端通过主测试节点与其他测试节点进行通信,例如,客户端将第一测试请求发送给主测试节点,主测试节点将接收的第一测试请求再发送给其他测试节点。
主测试节点向其他测试节点发送第一测试请求的方式可以为广播方式。
S303、主测试节点将第一测试请求发送给每个测试节点。
各测试节点从主测试节点处接收到第一测试请求后,响应于第一测试请求,执行第二操作,获得第一执行结果,并将自身的第一执行结果发送给其他测试节点,以及接收来自于其他测试节点的第一执行结果。接着,各测试节点根据每个测试节点的第一执行结果,确定自身的第一共识结果。该过程的具体实现可以参照上述S102至S104的描述。
S304、测试节点将第一共识结果发送给主测试节点。
参照图6所示,各测试节点确定出各自的第一共识结果后,将各自的第一共识结果发送给主测试节点。主测试节点再将各测试节点的第一共识节点发送给客户端。
S305、主测试节点将每个测试节点的第一共识结果发送给客户端。
客户端保存每个测试节点的第一共识结果,保证了整个持续集成自动化测试流程的可追溯,解决了由于服务器故障导致的记录丢失等问题。
若上述第一操作为自动化测试操作,则客户端将第一操作对应的第一共识结果,确定第一测试请求的测试结果。
若第一操作为编译操作或部署操作,且每个测试节点的第一共识结果为通过时,则执行S306。
S306、客户端向主测试节点发送第二测试请求。
客户端将第二测试请求发送给主测试节点,主测试节点将该第二测试请求发送给其他测试节点。
在一些实施例中,客户端在第一操作为编译操作或部署操作,每个测试节点的第一共识结果为通过,且至少两个测试节点中第一测试节点的第一执行结果为失败时,客户端重启该第一测试节点,并在该第一测试节点重启后,向至少两个测试节点发送第二测试请求。
在该示例的一种可能的实现方式中,若上述第一测试节点为主测试节点,则客户端从至少两个测试节点中重新确定主测试节点,并向重新确定的主测试节点发送第二测试请求。
客户端重新确定主测试节点的方式可以是,随机从没有重启的测试节点中确定主测试节点。
S307、主测试节点将第二测试请求发送给每个测试节点。
各测试节点从主测试节点处接收到第二测试请求后,响应于第二测试请求,执行第二操作,获得第二执行结果,并将自身的第二执行结果发送给其他测试节点,以及接收来自于其他测试节点的第二执行结果。接着,各测试节点根据每个测试节点的第二执行结果,确定自身的第二共识结果。该过程的具体实现可以参照上述S202至S204的描述。
S308、测试节点将第二共识结果发送给主测试节点。
参照图6所示,各测试节点确定出各自的第二共识结果后,将各自的第二共识结果发送给主测试节点。主测试节点再将各测试节点的第二共识节点发送给客户端。
S309、主测试节点将每个测试节点的第二共识结果发送给客户端。
客户端保存每个测试节点的第二共识结果。
若上述第二操作为自动化测试操作,则客户端将第二操作对应的第二共识结果,确定第一测试请求的测试结果。
若第二操作为部署操作中的任意操作,则继续执行上述S306至S309的步骤。
本申请实施例提供的持续集成测试方法,客户端从至少两个测试节点中确定主测试节点,并通过主测试节点与其他测试节点进行通信,提高了通信的效率。
下面通过将本申请实施例的持续集成测试方法与现有的持续集成自动化测试方法对比,以进一步说明本申请实施例的测试方法的优越性。
在持续集成测试过程中,由于其他原因(如网络延迟,测试环境/预发布环境不稳定,服务器不稳定)造成了外部扰动,这些扰动因子有x(0<x<1)的概率导致正常流程发生异常。设有以下扰动因子:
编译操作外部扰动x1
部署操作外部扰动x2
自动化测试操作,单个测试用例外部扰动x3(各测试用例执行结果相对独立)。
假设,如果不存在以上扰动的情况,执行成功的概率为100%,即全部通过。
传统的持续集成自动化测试方法的通过率:
不存在扰动时,整体持续集成通过率为100%。
当存在扰动时,编译操作通过率r1的计算公式(2):
r1=(1-x1) (2)
当存在扰动时,部署操作通过率r1的计算公式(3):
r2=(1-x2) (3)
当存在扰动时,m个测试用例(相对独立),全部通过率r3的计算公式(4):
r3=(1-x3)m (4)
所以传统的持续集成自动化测试在扰动情况下通过率y1为:
y1=r1r2r3 (5)
即:y1=(1-x1)(1-x2)(1-x3)m
本申请实施例提供的持续集成测试方法的通过率:
不存在扰动时,整体持续集成通过率为100%。
因为拜占庭容错时,各测试节点相对独立,在通过概率计算上满足二项式分布,且由拜占庭容错算法中,p>3d+1,可推出以下公式:
当存在扰动时,编译操作通过率r′1的计算公式(6):
当存在扰动时,部署操作通过率r′2的计算公式(7):
当存在扰动时,m个测试用例(相对独立),全部通过率r′3的计算公式(8):
所以持续集成自动化测试在扰动情况下通过率y1为:
y2=r′1r′2r′3 (9)
即:/>
假设x1值为0.003,x2值为0.004,x3值为0.002,m值为40,p值为4,d值为1。
由以上公式可得:
y1=91.66%
y2=99.89%
可见y2结果明显优于y1,且随着用例集合中测试用例m的增加,以及测试节点p的增加,本申请实施例的持续集成测试方法在消除外部扰动方面,其效果更明显。
图7为本申请实施例提供的持续集成测试装置的一种结构示意图。该测试装置可以是电子设备,也可以是电子设备的部件(例如,集成电路,芯片等等),该电子设备可以为图1所示的安装有客户端的终端设备。如图7所示,该持续集成持续集成测试装置100可以包括:发送单元110、获取单元120和处理单元130。
发送单元110,用于在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,所述第一测试请求用于请求所述至少两个测试节点执行第一操作,所述第一操作为持续集成过程中的任意一个操作;
获取单元120,用于获得每个测试节点的第一共识结果,所述第一共识结果是基于每个所述测试节点的第一执行结果确定的,第一执行结果为测试节点执行第一操作时得到的执行结果;
处理单元130,用于根据每个所述测试节点的第一共识结果,确定所述第一测试请求的测试结果。
在一种可能的实现方式中,所述发送单元110,还用于在所述第一操作为所述编译操作或所述部署操作,且每个所述测试节点的第一共识结果为通过时,向所述至少两个测试节点发送第二测试请求,所述第二测试请求用于请求所述至少两个测试节点执行第二操作,所述第二操作为所述持续集成过程中所述第一操作的下一步操作;
所述获取单元120,还用于获得每个所述测试节点的第二共识结果;
所述处理单元130,具体用于根据每个所述测试节点的第二共识结果,确定所述第一测试请求的测试结果。
在一种可能的实现方式中,所述处理单元130,还用于从所述至少两个测试节点中确定主测试节点;
所述获取单元120,具体用于接收来自所述主测试节点的反馈信息,所述反馈信息包括每个测试节点的第一共识结果;从所述反馈信息中获得每个所述测试节点的第一共识结果。
在一种可能的实现方式中,所述发送单元110,具体用于向所述主测试节点发送所述第一测试请求,使得所述主测试节点将所述第一测试请求发送给每个所述测试节点;
和/或,
所述发送单元110,具体用于向所述主测试节点发送所述第二测试请求,使得主测试节点将所述第二测试请求发送给每个所述测试节点。
在一种可能的实现方式中,所述处理单元130,还用于在所述第一操作为所述编译操作或所述部署操作,每个所述测试节点的第一共识结果为通过,且所述至少两个测试节点中第一测试节点的第一执行结果为失败时,重启所述第一测试节点;
所述发送单元110,具体用于在所述第一测试节点重启后,向所述至少两个测试节点发送第二测试请求。
在一种可能的实现方式中,所述处理单元130,还用于在所述主测试节点为所述第一测试节点时,从所述至少两个测试节点中重新确定所述主测试节点。
本申请实施例的持续集成测试装置,可以用于执行上述各方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图8为本申请实施例提供的持续集成测试装置的一种结构示意图。该持续集成测试装置可以是电子设备,也可以是电子设备的部件(例如,集成电路,芯片等等),该电子设备可以为图1所示的测试节点。如图8所示,该持续集成测试装置100可以包括:收发单元210和处理单元220。
收发单元210,用于接收来自客户端的第一测试请求,所述第一测试请求用于请求至少两个测试节点执行所述第一操作,所述第一操作为持续集成过程中的任意一个操作;
处理单元220,用于响应于所述第一测试请求,执行第一操作,获得第一执行结果;
所述收发单元210,还用于将自身的第一执行结果发送给所述至少两个测试节点中的其他测试节点,以及接收来自于所述其他测试节点的第一执行结果;
所述处理单元220,还用于根据每个测试节点的第一执行结果,确定第一共识结果;
所述收发单元210,还用于将所述第一共识结果发送给所述客户端。
在一种可能的实现方式中,所述收发单元210,还用于接收来自所述客户端的第二测试请求,所述第二操作为所述持续集成过程中所述第一操作的下一步操;
所述处理单元220,还用于响应于所述第二测试请求,执行第二操作,获得第二执行结果作;
所述收发单元210,还用于将自身的第二执行结果发送给所述其他测试节点,以及接收来自于所述其他测试节点的第二执行结果;
所述处理单元220,还用于根据每个测试节点的第二执行结果,确定第二共识结果;
所述收发单元210,还用于将所述第二共识结果发送给所述客户端。
在一种可能的实现方式中,所述收发单元210,具体用于从主测试节点处接收来自所述客户端的第一测试请求,所述主测试节点为所述至少两个测试节点中的一个测试节点;
和/或,
所述收发单元210,具体用于从所述主测试节点处接收来自所述客户端的第二测试请求。
在一种可能的实现方式中,所述收发单元210,具体用于将所述第一共识结果发送给所述主测试节点,使得所述主测试节点将所述第一共识结果发送给所述客户端;
和/或,
所述收发单元210,具体用于将所述第二共识结果发送给所述主测试节点,使得所述主测试节点将所述第二共识结果发送给所述客户端。
在一种可能的实现方式中,所述处理单元220,具体用于根据每个所述测试节点的第一执行结果,使用拜占庭容错共识装置,确定所述第一共识结果;
和/或,
所述处理单元220,具体用于根据每个所述测试节点的第二执行结果,使用拜占庭容错共识装置,确定所述第二共识结果。
本申请实施例的持续集成测试装置,可以用于执行上述各方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图9为本申请实施例提供的一种终端设备的结构示意图。该终端设备600上安装有上述方法实施例中客户端,可以实现上述方法实施例中客户端所执行的功能,功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块或单元。
在一种可能的设计中,该终端设备600的结构中包括处理器601、收发器602和存储器603,该处理器601被配置为支持该终端设备600执行上述方法中相应的功能。该收发器602用于支持该终端设备600与其他终端设备或网络设备之间的通信。该终端设备600还可以包括存储器603,该存储器603用于与处理器601耦合,其保存该终端设备600必要的程序指令和数据。
当终端设备600开机后,处理器601可以读取存储器603中的程序指令和数据,解释并执行程序指令,处理程序指令的数据。当发送数据时,处理器601对待发送的数据进行基带处理后,输出基带信号至收发器602,收发器602将基带信号进行射频处理后将射频信号通过天线以电磁波的形式向外发送。当有数据发送到终端设备时,收发器602通过天线接收到射频信号,将射频信号转换为基带信号,并将基带信号输出至处理器601,处理器601将基带信号转换为数据并对该数据进行处理。
本领域技术人员可以理解,为了便于说明,图9仅示出了一个存储器603和一个处理器601。在实际的终端设备600中,可以存在多个处理器601和多个存储器603。存储器603也可以称为存储介质或者存储设备等,本申请实施例对此不做限制。
本申请实施例的终端设备,可以用于执行上述各方法实施例中客户端的技术方案,其实现原理和技术效果类似,此处不再赘述。
图10为本申请实施例提供的一种持续集成测试装置的结构示意图。该装置700以芯片的产品形态存在,该装置的结构中包括处理器701和存储器702,该存储器702用于与处理器701耦合,该存储器702上保存该装置必要的程序指令和数据,该处理器701用于执行存储器702中存储的程序指令,使得该装置执行上述方法实施例中客户端的功能。
本申请实施例的持续集成测试装置,可以用于执行上述各方法实施例中客户端的技术方案,其实现原理和技术效果类似,此处不再赘述。
图11为本申请实施例涉及的电子设备的框图,该设备可以是图1所示的测试节点,用于执行上述实施例所述的持续集成测试方法,具体参见上述方法实施例中的说明。
参照图11,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述持续集成测试方法实施例。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作***,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1932,上述指令可由电子设备1900的处理组件1922执行以完成上述持续集成测试方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图12为本申请实施例提供的一种持续集成测试装置的结构示意图。该装置800以芯片的产品形态存在,该装置的结构中包括处理器801和存储器802,该存储器802用于与处理器801耦合,该存储器802上保存该装置必要的程序指令和数据,该处理器801用于执行存储器802中存储的程序指令,使得该装置执行上述方法实施例中测试节点的功能。
本申请实施例的持续集成测试装置,可以用于执行上述各方法实施例中测试节点的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

Claims (13)

1.一种持续集成测试方法,其特征在于,包括:
在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,所述第一测试请求用于请求所述至少两个测试节点执行第一操作,所述第一操作为持续集成过程中的任意一个操作;
获得每个测试节点的第一共识结果,所述第一共识结果是基于每个所述测试节点的第一执行结果确定的,所述第一执行结果为所述测试节点执行所述第一操作时得到的执行结果;
在所述第一操作为编译操作或部署操作,且每个所述测试节点的第一共识结果为通过时,向所述至少两个测试节点发送第二测试请求,所述第二测试请求用于请求所述至少两个测试节点执行第二操作,所述第二操作为所述持续集成过程中所述第一操作的下一步操作;
获得每个所述测试节点的第二共识结果,所述第二共识结果是基于每个所述测试节点的第二执行结果确定的,所述第二执行结果为所述测试节点执行所述第二操作时得到的执行结果;
根据每个所述测试节点的第二共识结果,确定所述第一测试请求的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述至少两个测试节点中确定主测试节点;
所述获得每个测试节点的第一共识结果,包括:
接收来自所述主测试节点的反馈信息,所述反馈信息包括每个测试节点的第一共识结果;
从所述反馈信息中获得每个所述测试节点的第一共识结果。
3.根据权利要求2所述的方法,其特征在于,所述向至少两个测试节点发送第一测试请求,包括:向所述主测试节点发送所述第一测试请求,使得所述主测试节点将所述第一测试请求发送给每个所述测试节点;
和/或,
所述向所述至少两个测试节点发送第二测试请求包括:向所述主测试节点发送所述第二测试请求,使得主测试节点将所述第二测试请求发送给每个所述测试节点。
4.根据权利要求2或3所述的方法,其特征在于,在所述第一操作为所述编译操作或所述部署操作,且每个所述测试节点的第一共识结果为通过时,向所述至少两个测试节点发送第二测试请求,包括:
在所述第一操作为所述编译操作或所述部署操作,每个所述测试节点的第一共识结果为通过,且所述至少两个测试节点中第一测试节点的第一执行结果为失败时,重启所述第一测试节点;
在所述第一测试节点重启后,向所述至少两个测试节点发送第二测试请求。
5.根据权利要求4所述的方法,其特征在于,所述主测试节点为所述第一测试节点时,所述方法还包括:
从所述至少两个测试节点中重新确定所述主测试节点。
6.一种持续集成测试方法,其特征在于,包括:
接收来自客户端的第一测试请求,响应于所述第一测试请求,执行第一操作,获得第一执行结果,所述第一测试请求用于请求至少两个测试节点执行所述第一操作,所述第一操作为持续集成过程中的任意一个操作;
将自身的所述第一执行结果发送给所述至少两个测试节点中的其他测试节点,以及接收来自于所述其他测试节点的第一执行结果;
根据每个测试节点的第一执行结果,确定第一共识结果,并将所述第一共识结果发送给所述客户端;
接收来自所述客户端的第二测试请求,响应于所述第二测试请求,执行第二操作,获得第二执行结果,所述第二操作为所述持续集成过程中所述第一操作的下一步操作;
将自身的所述第二执行结果发送给所述其他测试节点,以及接收来自于所述其他测试节点的第二执行结果;
根据每个测试节点的第二执行结果,确定第二共识结果,并将所述第二共识结果发送给所述客户端。
7.根据权利要求6所述的方法,其特征在于,
所述接收来自客户端的第一测试请求,包括:从主测试节点处接收来自所述客户端的第一测试请求,所述主测试节点为所述至少两个测试节点中的一个测试节点;
和/或,
所述接收来自所述客户端的第二测试请求,包括:从所述主测试节点处接收来自所述客户端的第二测试请求。
8.根据权利要求7所述的方法,其特征在于,
所述将所述第一共识结果发送给所述客户端,包括:将所述第一共识结果发送给所述主测试节点,使得所述主测试节点将所述第一共识结果发送给所述客户端;
和/或,
所述将所述第二共识结果发送给所述客户端,包括:将所述第二共识结果发送给所述主测试节点,使得所述主测试节点将所述第二共识结果发送给所述客户端。
9.根据权利要求6-8任一项所述的方法,其特征在于,
所述根据每个测试节点的第一执行结果,确定第一共识结果,包括:根据每个所述测试节点的第一执行结果,使用拜占庭容错共识方法,确定所述第一共识结果;
和/或,
所述根据每个测试节点的第二执行结果,确定第二共识结果,包括:根据每个所述测试节点的第二执行结果,使用拜占庭容错共识方法,确定所述第二共识结果。
10.一种持续集成测试装置,其特征在于,包括:
发送单元,用于在检测到代码管理仓库有代码改动时,向至少两个测试节点发送第一测试请求,所述第一测试请求用于请求所述至少两个测试节点执行第一操作,所述第一操作为持续集成过程中的任意一个操作;
获取单元,用于获得每个测试节点的第一共识结果,所述第一共识结果是基于每个所述测试节点的第一执行结果确定的,所述第一执行结果为所述测试节点执行所述第一操作时得到的执行结果;
处理单元,用于根据每个所述测试节点的第一共识结果,确定所述第一测试请求的测试结果;
发送单元,具体用于在所述第一操作为编译操作或部署操作,且每个所述测试节点的第一共识结果为通过时,向所述至少两个测试节点发送第二测试请求,所述第二测试请求用于请求所述至少两个测试节点执行第二操作,所述第二操作为所述持续集成过程中所述第一操作的下一步操作;
获得每个所述测试节点的第二共识结果,所述第二共识结果是基于每个所述测试节点的第二执行结果确定的,所述第二执行结果为所述测试节点执行所述第二操作时得到的执行结果;
根据每个所述测试节点的第二共识结果,确定所述第一测试请求的测试结果。
11.一种持续集成测试装置,其特征在于,包括:
收发单元,用于接收来自客户端的第一测试请求,所述第一测试请求用于请求至少两个测试节点执行第一操作,所述第一操作为持续集成过程中的任意一个操作;
处理单元,用于响应于所述第一测试请求,执行第一操作,获得第一执行结果;
所述收发单元,还用于将自身的所述第一执行结果发送给所述至少两个测试节点中的其他测试节点,以及接收来自于所述其他测试节点的第一执行结果;
所述处理单元,还用于根据每个测试节点的第一执行结果,确定第一共识结果;
所述收发单元,还用于将所述第一共识结果发送给所述客户端;
所述收发单元,还用于接收来自所述客户端的第二测试请求,响应于所述第二测试请求,执行第二操作,获得第二执行结果,所述第二操作为所述持续集成过程中所述第一操作的下一步操作;
将自身的所述第二执行结果发送给所述其他测试节点,以及接收来自于所述其他测试节点的第二执行结果;
根据每个测试节点的第二执行结果,确定第二共识结果,并将所述第二共识结果发送给所述客户端。
12.一种电子设备,其特征在于,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:执行所述指令,以实现上述权利要求1至9任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至9任一项所述的方法。
CN202010522913.5A 2020-06-10 2020-06-10 持续集成测试方法、装置及存储介质 Active CN113760691B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010522913.5A CN113760691B (zh) 2020-06-10 2020-06-10 持续集成测试方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010522913.5A CN113760691B (zh) 2020-06-10 2020-06-10 持续集成测试方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN113760691A CN113760691A (zh) 2021-12-07
CN113760691B true CN113760691B (zh) 2024-06-18

Family

ID=78785345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010522913.5A Active CN113760691B (zh) 2020-06-10 2020-06-10 持续集成测试方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN113760691B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701010A (zh) * 2015-12-31 2016-06-22 北京元心科技有限公司 一种加速软件测试的方法和装置
CN108628735A (zh) * 2017-03-22 2018-10-09 腾讯科技(深圳)有限公司 应用的自动化测试方法和***

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150029184A (ko) * 2013-09-09 2015-03-18 삼성에스디에스 주식회사 애플리케이션을 테스트하는 기법
CN109101680B (zh) * 2018-06-26 2022-11-25 飞腾信息技术有限公司 基于GitLab-CI的FPGA原型自动验证方法及***
CN109508295B (zh) * 2018-11-14 2021-11-09 联动优势科技有限公司 区块链共识算法测试方法、装置、计算装置和存储介质
CN109766269A (zh) * 2018-12-18 2019-05-17 微梦创科网络科技(中国)有限公司 持续集成自动化测试方法、装置、设备和介质
CN110868337B (zh) * 2019-11-15 2021-05-07 腾讯科技(深圳)有限公司 容错共识机制测试方法、装置、存储介质和计算机设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701010A (zh) * 2015-12-31 2016-06-22 北京元心科技有限公司 一种加速软件测试的方法和装置
CN108628735A (zh) * 2017-03-22 2018-10-09 腾讯科技(深圳)有限公司 应用的自动化测试方法和***

Also Published As

Publication number Publication date
CN113760691A (zh) 2021-12-07

Similar Documents

Publication Publication Date Title
US7814479B2 (en) Simultaneous download to multiple targets
CN102355682A (zh) 传感器适配方法、装置及物联网***
CN108984349B (zh) 主节点选举方法及装置、介质和计算设备
CN111493749B (zh) 基于扫地机器人的打扫方法、装置、电子设备及存储介质
US11419181B2 (en) Device control method and apparatus, storage medium, processor, and terminal
US20150242201A1 (en) Method for updating firmware and electronic device thereof
US9658861B2 (en) Boot strap processor assignment for a multi-core processing unit
US20160198285A1 (en) Method And Internet Of Things System For Controlling An Electronic Device
CN110990339A (zh) 分布式存储的文件读写方法、装置、平台及可读存储介质
CN113760691B (zh) 持续集成测试方法、装置及存储介质
CN111493746B (zh) 基于清洁机器人的清洁方法、装置、电子设备及存储介质
US20170188328A1 (en) Mobile terminal positioning method, base station, and node
CN112181724B (zh) 大数据容灾方法、装置和电子设备
CN112925525A (zh) 编译方法、映射方法、服务器、芯片、装置、介质
CN106843928B (zh) 应用程序的远程修复方法及设备
CN111708545A (zh) 业务流程的部署方法、装置、电子设备及存储介质
CN112506664A (zh) 软件定义卫星的电子电气架构、计算资源调度方法、电子设备
CN111885151A (zh) 一种基于zigbee协议的智能设备通信方法和主智能设备
CN107612719B (zh) 物联网接入点的数据备份方法及装置
CN110688130A (zh) 物理机部署方法、装置、可读存储介质及电子设备
CN109756948B (zh) 通过用户设备中的应用连接无线接入点的方法与设备
CN115454333A (zh) 云计算平台与存储***的对接方法及装置
US7788379B2 (en) Network system and information processing method
CN115296982B (zh) 基于数据库的节点切换方法、装置、电子设备及存储介质
CN117312042A (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