CN108459966A - 测试组件的调度方法、装置、设备和计算机可读存储介质 - Google Patents
测试组件的调度方法、装置、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN108459966A CN108459966A CN201810235129.9A CN201810235129A CN108459966A CN 108459966 A CN108459966 A CN 108459966A CN 201810235129 A CN201810235129 A CN 201810235129A CN 108459966 A CN108459966 A CN 108459966A
- Authority
- CN
- China
- Prior art keywords
- test suite
- test
- suite
- thread
- suites
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3688—Test 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)
- Tests Of Electronic Circuits (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种测试组件的调度方法、装置、设备和计算机可读存储介质,其中该方法包括:获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。通过将获取到的各个测试组件,调度到并行的线程中,从而可以解决现有技术中串行调度方案会使得测试的运行时间长的问题,进而可以合理的分配线程资源,测试组件以并行方式进行运行去对程序进行测试,降低了等待测试结果的时间,提高了测试效率。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种测试组件的调度方法、装置、设备和计算机可读存储介质。
背景技术
在将开发的程序应用到设备中的时候,需要对程序进行测试。例如,在车对外界(Vehicle to Everything,简称V2X)的信息交换系统中,提供了V2X通信协议标准,所有硬件以及软件的厂商所提供的程序,需要符合V2X通信协议标准的规定,从而在将程序应用到车辆中的时候,首先需要对程序是否符合V2X通信协议标准进行测试。
现有技术中,在对程序进行测试的时候,提供了多个测试组件,每一个测试组件代表了一个测试用例,然后采用多个测试组件依次对程序进行测试,等待测试结果的时间较长,测试效率较低。
发明内容
本申请提供一种测试组件的调度方法、装置、设备和计算机可读存储介质,用以解决等待测试结果的时间较长,测试效率较低的问题。
第一方面,本申请提供一种测试组件的调度方法,包括:
获取符合同一协议标准的至少两个测试组件,其中,所述至少两个测试组件中的每一个测试组件表征了一个测试用例;
将所述至少两个测试组件,调度到并行的线程中,以使所述至少两个测试组件以并行方式进行运行。
进一步地,所述至少两个测试组件包括至少两个第一测试组件,或者所述至少两个测试组件包括至少两个第二测试组件,或者所述至少两个测试组件包括至少一个第一测试组件和至少两个第二测试组件;所述至少两个测试组件中的所述第一测试组件为与其他测试组件之间没有执行次序关系的测试组件,所述第二测试组件为与至少一个其他第二测试组件之间具有执行次序关系的测试组件;
相应的,将所述至少两个测试组件,调度到并行的线程中,包括:
若所述至少两个测试组件中存在第一测试组件,则将所有第一测试组件,调度到至少一个第一线程中,各所述第一线程之间为并行的;
若所述至少两个测试组件中存在第二测试组件,则将所有第二测试组件,调度到至少一个第二线程中,各所述第二线程之间为并行的,其中,每一个所述第一线程与每一个所述第二线程之间为并行的。
进一步地,将所有第一测试组件,调度到至少一个第一线程中,包括:
根据所有第一测试组件中的每一个第一测试组件的执行时间的降序或升序,将所有第一测试组件依次分配给最先空闲下来的第一线程,得到多个并行的第一线程。
进一步地,将所有第二测试组件,调度到至少一个第二线程中,包括:
根据所有第二测试组件、以及各第二测试组件之间的执行次序关系,生成第二测试组件的AOE网络,其中,所述AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径,每一条所述路径位于所述开始节点与所述结束节点之间,每一条所述路径上包括m个具有执行次序关系的第二测试组件,所述AOE网络中的每一个第二测试组件具有执行时间,m为正整数;
根据所述AOE网络中的所有第二测试组件的执行时间,计算所述AOE网络中的每一个第二测试组件的最早开始时间、以及最晚开始时间;
确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点;
根据所述关键节点之间的执行次序关系,将所述关键节点调度到一个第二线程中,并将所述非关键节点分配给最先空闲下来的其他第二线程中,其中,不同的第二线程上的非关键节点之间没有执行次序关系,对于彼此之间具有执行次序关系的所述非关键节点,按照其执行次序关系进行调度,且对于与所述关键节点之间具有执行次序关系的所述非关键节点,在所述非关键节点所依赖的关键节点被调度完毕之后进行调度。
进一步地,根据所述AOE网络中的所有第二测试组件的执行时间,计算所述AOE网络中的每一个第二测试组件的最早开始时间,包括:
确定从所述开始节点到每一个第二测试组件的所有的第一路径,并确定该第二测试组件的所有的第一路径中的最长第一路径,其中,所述最长第一路径为路径上所有的第二测试组件的执行时间之和最大的第一路径;
确定所述最长第一路径上所有的第二测试组件的执行时间、与所述开始节点的执行时间之和,为该第二测试组件的最早开始时间。
进一步地,根据所述AOE网络中的所有第二测试组件的执行时间,计算所述AOE网络中的每一个第二测试组件的最晚开始时间,包括:
确定将从所述开始节点到所述结束节点之间具有最大路径长度的路径为最大路径,其中,最大路径长度的路径为路径上各第二测试组件的执行时间之和最大的路径,并计算所述最大路径的执行时间,所述最大路径的执行时间为所述开始节点的执行时间、与所述最大路径上所有的第二测试组件的执行时间的总和;
确定从每一个第二测试组件到所述结束节点的所有的第二路径,并确定该第二测试组件的所有的第二路径中的最长第二路径,其中,所述最长第二路径为路径上所有的第二测试组件的执行时间之和最大的第二路径;
将所述最大路径的执行时间减去所述最长第二路径上所有的第二测试组件的执行之间之和,得到该第二测试组件的最晚开始时间。
进一步地,所述每一个测试组件中包括至少一个原子操作,每一个所述原子操作表征了一个测试用例中的一个执行步骤,所述每一个测试组件中的各原子操作之间具有次序关系。
进一步地,所述获取符合同一协议标准的至少两个测试组件,包括:
获取原子操作集,其中,所述原子操作集中包括至少两个原子操作;
根据预设的执行需求信息,从原子操作集中获取至少两个原子操作,其中,所述执行需求信息表征待生成的测试组件的执行步骤的需求信息;
根据获取到的至少两个原子操作、以及各原子操作之间具有次序关系,生成所述至少两个测试组件。
进一步地,所述获取原子操作集,包括:
获取至少一个待处理的测试组件,其中,所述至少一个待处理的测试组件中的每一个所述待处理的测试组件包括了至少一个执行步骤;
根据每一个所述待处理的测试组件中的各执行步骤,对所述至少一个待处理的测试组件进行拆分处理,得到所述原子操作集。
进一步地,每一个所述原子操作中包括了入参信息、原子操作的执行时间、以及输出值,其中,所述输出值表征了原子操作是否执行成功。
进一步地,每一个所述测试组件的执行时间为该测试组件中的所有原子操作的执行时间之和。
第二方面,本申请提供一种测试组件的调度装置,包括:
获取单元,用于获取符合同一协议标准的至少两个测试组件,其中,所述至少两个测试组件中的每一个测试组件表征了一个测试用例;
调度单元,用于将所述至少两个测试组件,调度到并行的线程中,以使所述至少两个测试组件以并行方式进行运行。
进一步地,所述至少两个测试组件包括至少两个第一测试组件,或者所述至少两个测试组件包括至少两个第二测试组件,或者所述至少两个测试组件包括至少一个第一测试组件和至少两个第二测试组件;所述至少两个测试组件中的所述第一测试组件为与其他测试组件之间没有执行次序关系的测试组件,所述第二测试组件为与至少一个其他第二测试组件之间具有执行次序关系的测试组件;
相应的,所述调度单元,包括:
第一调度模块,用于若所述至少两个测试组件中存在第一测试组件,则将所有第一测试组件,调度到至少一个第一线程中,各所述第一线程之间为并行的;
第二调度模块,用于若所述至少两个测试组件中存在第二测试组件,则将所有第二测试组件,调度到至少一个第二线程中,各所述第二线程之间为并行的,其中,每一个所述第一线程与每一个所述第二线程之间为并行的。
进一步地,所述第一调度模块,具体用于:
根据所有第一测试组件中的每一个第一测试组件的执行时间的降序或升序,将所有第一测试组件依次分配给最先空闲下来的第一线程,得到多个并行的第一线程。
进一步地,所述第二调度模块,包括:
生成子模块,用于根据所有第二测试组件、以及各第二测试组件之间的执行次序关系,生成第二测试组件的AOE网络,其中,所述AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径,每一条所述路径位于所述开始节点与所述结束节点之间,每一条所述路径上包括m个具有执行次序关系的第二测试组件,所述AOE网络中的每一个第二测试组件具有执行时间,m为正整数;
计算子模块,用于根据所述AOE网络中的所有第二测试组件的执行时间,计算所述AOE网络中的每一个第二测试组件的最早开始时间、以及最晚开始时间;
确定子模块,用于确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点;
调度子模块,用于根据所述关键节点之间的执行次序关系,将所述关键节点调度到一个第二线程中,并将所述非关键节点分配给最先空闲下来的其他第二线程中,其中,不同的第二线程上的非关键节点之间没有执行次序关系,对于彼此之间具有执行次序关系的所述非关键节点,按照其执行次序关系进行调度,且对于与所述关键节点之间具有执行次序关系的所述非关键节点,在所述非关键节点所依赖的关键节点被调度完毕之后进行调度。
进一步地,所述计算子模块,具体用于:
确定从所述开始节点到每一个第二测试组件的所有的第一路径,并确定该第二测试组件的所有的第一路径中的最长第一路径,其中,所述最长第一路径为路径上所有的第二测试组件的执行时间之和最大的第一路径;
确定所述最长第一路径上所有的第二测试组件的执行时间、与所述开始节点的执行时间之和,为该第二测试组件的最早开始时间。
进一步地,所述计算子模块,具体用于:
确定将从所述开始节点到所述结束节点之间具有最大路径长度的路径为最大路径,其中,最大路径长度的路径为路径上各第二测试组件的执行时间之和最大的路径,并计算所述最大路径的执行时间,所述最大路径的执行时间为所述开始节点的执行时间、与所述最大路径上所有的第二测试组件的执行时间的总和;
确定从每一个第二测试组件到所述结束节点的所有的第二路径,并确定该第二测试组件的所有的第二路径中的最长第二路径,其中,所述最长第二路径为路径上所有的第二测试组件的执行时间之和最大的第二路径;
将所述最大路径的执行时间减去所述最长第二路径上所有的第二测试组件的执行之间之和,得到该第二测试组件的最晚开始时间。
进一步地,所述每一个测试组件中包括至少一个原子操作,每一个所述原子操作表征了一个测试用例中的一个执行步骤,所述每一个测试组件中的各原子操作之间具有次序关系。
进一步地,所述获取单元,包括:
第一获取模块,用于获取原子操作集,其中,所述原子操作集中包括至少两个原子操作;
第二获取模块,用于根据预设的执行需求信息,从原子操作集中获取至少两个原子操作,其中,所述执行需求信息表征待生成的测试组件的执行步骤的需求信息;
生成模块,用于根据获取到的至少两个原子操作、以及各原子操作之间具有次序关系,生成所述至少两个测试组件。
进一步地,所述第一获取模块,包括:
第三获取子模块,用于获取至少一个待处理的测试组件,其中,所述至少一个待处理的测试组件中的每一个所述待处理的测试组件包括了至少一个执行步骤;
拆分子模块,用于根据每一个所述待处理的测试组件中的各执行步骤,对所述至少一个待处理的测试组件进行拆分处理,得到所述原子操作集。
进一步地,每一个所述原子操作中包括了入参信息、原子操作的执行时间、以及输出值,其中,所述输出值表征了原子操作是否执行成功。
进一步地,每一个所述测试组件的执行时间为该测试组件中的所有原子操作的执行时间之和。
第三方面,提供了一种测试组件的调度设备,包括用于执行以上第一方面的任一方法各个步骤的单元或者手段(means)。
第四方面,提供了一种测试组件的调度设备,包括处理器、存储器以及计算机程序,其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现第一方面的任一方法。
第五方面,提供了一种测试组件的调度设备,包括用于执行以上第一方面的任一方法的至少一个处理元件或芯片。
第六方面,提供了一种计算机程序,该计算程序在被处理器执行时用于执行以上第一方面的任一方法。
第七方面,提供了一种计算机可读存储介质,其上存储有第六方面的计算机程序。
本申请提供的测试组件的调度方法、装置、设备和计算机可读存储介质,通过获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。通过将获取到的各个测试组件,调度到并行的线程中,从而可以解决现有技术中串行调度方案会使得测试的运行时间长的问题,进而可以合理的分配线程资源,测试组件以并行方式进行运行去对程序进行测试,降低了等待测试结果的时间,提高了测试效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种测试组件的调度方法的流程示意图;
图2为本申请实施例提供的另一种测试组件的调度方法的流程示意图;
图3为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图一;
图4为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图二;
图5为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图三;
图6为本申请实施例提供的另一种测试组件的调度方法中的第二测试组件之间的执行次序图;
图7为本申请实施例提供的另一种测试组件的调度方法中的第二测试组件的AOE网络的示意图;
图8为本申请实施例提供的另一种测试组件的调度方法中的关键路径的示意图;
图9为本申请实施例提供的另一种测试组件的调度方法中的子集的示意图;
图10为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图四;
图11为本申请实施例提供的又一种测试组件的调度方法的流程示意图;
图12为本申请实施例提供的又一种测试组件的调度方法中的原子操作的执行时序图;
图13为本申请实施例提供的一种测试组件的调度装置的结构示意图;
图14为本申请实施例提供的另一种测试组件的调度装置的结构示意图;
图15为本申请实施例提供的又一种测试组件的调度装置的结构示意图;
图16为本申请实施例提供的一种测试组件的调度设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
测试组件:表征了一个测试用例,一个测试组件具有输入参数以及输出结果。
测试用例(Test Case):是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
线程:有时被称为轻量级进程(Light weight Process,简称LWP),线程是程序执行流的最小单元,线程是程序中一个单一的顺序控制流程。
本申请具体的应用场景为:在对程序进行测试的时候,需要确定程序是否符合某一个特定的协议标准,此时,需要采用多个测试组件依次对程序进行测试。例如,V2X通信协议标准可以实现车与车之间的协同、车与终端设备之间的协同等,这种协同将能够大幅度的减少交通事故,并使得交通变得更加和谐有序,因此V2X通信协议标准的应用逐步得到广泛关注和应用;各个生产厂商提供了多种应用到V2X通信协议标准中的程序,为了确定生产厂商提供的程序是符合V2X通信协议标准的,需要对生产厂商提供的程序进行协议一致性、性能指标等相关测试。再例如,在物联网中,很多的生产厂商也提供了应用到物联网中的程序,为了确定生产厂商提供的程序是符合物联网中的协议标准的,需要对生产厂商提供的程序进行协议一致性、性能指标等相关测试。又例如,在以太网中,很多的生产厂商也提供了应用到以太网中的程序,为了确定生产厂商提供的程序是符合以太网中的协议标准的,需要对生产厂商提供的程序进行协议一致性、性能指标等相关测试。现有技术中对程序进行测试的时候,是采用多个测试组件依次对程序进行测试,等待测试结果的时间较长,测试效率较低。例如,针对符合V2X通信协议标准的测试组件,每一个测试组件没有到期时间以及交付期,每一个测试组件之间也没有先后产生的时间顺序,待测设的程序需要通过全部测试组件的测试才算是符合协议一致性的要求,即需要逐一运行完所有的测试组件,才能得到测试结果。
本申请提供的测试组件的调度方法、装置、设备和计算机可读存储介质,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种测试组件的调度方法的流程示意图。如图1所示,该方法包括:
步骤101、获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例。
在本实施例中,具体的,执行主体可以是测试组件的调度设备、或者测试组件的调度装置、或者服务器、或者其他可以执行本实施例的设备。本实施例以执行主体为测试组件的调度设备进行介绍。
首先,测试组件的调度设备需要获取到多个测试组件,这些测试组件是用于对待测试的程序进行测试的。其中,测试组件的调度设备获取的所有的测试组件是符合同一种协议标准的,并且每一个测试组件表征了一个测试用例,一个测试用例中具有多个步骤。
举例来说,测试组件的调度设备获取了N个符合V2X通信协议标准的测试组件;或者,测试组件的调度设备获取了N个符合物联网中的协议标准的测试组件;或者,测试组件的调度设备获取了N个符合以太网中的协议标准的测试组件;其中,N为大于等于2的正整数。
可选的,测试组件的调度设备获取到的测试组件之间是具有执行次序关系的。例如,测试组件的调度设备获取到测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6,其中,需要依次执行测试组件1、测试组件2、测试组件5、测试组件6、测试组件4。或者,再例如,测试组件的调度设备获取测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6,其中,需要依次执行测试组件1、测试组件2、测试组件5、测试组件6,但是测试组件4与其他测试组件之间没有执行次序关系。
步骤102、将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。
在本实施例中,具体的,测试组件的调度设备根据各个测试组件的执行次序关系,对各个测试组件进行调度,进而测试组件的调度设备将各个测试组件调度到多个并行的线程中。在测试组件的调度设备对各个测试组件进行调度的过程中,各个测试组件在线程中以并行的方式运行。
具体来说,测试组件的调度设备若获取到一个测试组件,从而测试组件的调度设备就将这一个测试组件调度到一个线程中,使得测试组件运行。测试组件的调度设备若获取到至少两个测试组件,测试组件的调度设备就根据测试组件之间的执行次序关系将测试组件调度到多个线程中,这些线程之间是并行的。
举例来说,测试组件的调度设备获取到测试组件1和测试组件2,测试组件的调度设备可以将测试组件1调度到线程1中,并且将测试组件2调度到线程2中,线程1和线程2之间是并行的。
再举例来说,测试组件的调度设备获取测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6,其中,需要依次执行测试组件1、测试组件2、测试组件4,然后测试组件的调度设备可以将测试组件1、测试组件2、以及测试组件4依次调度到线程1上,将测试组件3调度到线程2上,将测试组件5调度到线程3上,将测试组件6调度到线程4上,其中,线程1、线程2、线程3以及线程4之间为并行的线程。
本实施例通过获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。通过将获取到的各个测试组件,调度到并行的线程中,从而可以解决现有技术中串行调度方案会使得测试的运行时间长的问题,进而可以合理的分配线程资源,测试组件以并行方式进行运行去对程序进行测试,降低了等待测试结果的时间,提高了测试效率。
图2为本申请实施例提供的另一种测试组件的调度方法的流程示意图。如图2所示,该方法包括:
步骤201、获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例。
并且,至少两个测试组件包括至少两个第一测试组件,或者至少两个测试组件包括至少两个第二测试组件,或者至少两个测试组件包括至少一个第一测试组件和至少两个第二测试组件;至少两个测试组件中的第一测试组件为与其他测试组件之间没有执行次序关系的测试组件,第二测试组件为与至少一个其他第二测试组件之间具有执行次序关系的测试组件。
在本实施例中,具体的,执行主体可以是测试组件的调度设备、或者测试组件的调度装置、或者其他可以执行本实施例的设备。本实施例以执行主体为测试组件的调度设备进行介绍。
测试组件的调度设备获取到的至少两个测试组件中包括了至少两个第一测试组件,其中,每一个第一测试组件与其他的第一测试组件之间是没有执行次序关系的。或者,测试组件的调度设备获取到的至少两个测试组件中包括了至少两个第二测试组件,其中,每一个第二测试组件与至少一个其他的第二测试组件之间具有执行次序关系。或者,测试组件的调度设备获取到的至少两个测试组件中包括了至少一个第一测试组件以及至少两个第二测试组件,此时,测试组件的调度设备获取到的至少两个测试组件的个数为至少三个,其中,每一个第一测试组件与其他的第一测试组件之间是没有执行次序关系的,并且,每一个第一测试组件与任意一个第二测试组件之间是没有执行次序关系的,每一个第二测试组件与至少一个其他的第二测试组件之间具有执行次序关系。
可知,第一测试组件是独立的测试组件,第二测试组件是彼此间存在时序关系的测试组件。
举例来说,测试组件的调度设备获取到测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6,其中,测试组件1、测试组件2、测试组件3、测试组件4、测试组件5以及测试组件6都是第一测试组件,测试组件1、测试组件2、测试组件3、测试组件4、测试组件5以及测试组件6相互之间是独立的,是没有执行次序关系的。
再举例来说,测试组件的调度设备获取到测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6,其中,需要依次执行测试组件1、测试组件2、测试组件4,并且需要依次执行测试组件3、测试组件5、测试组件6,从而测试组件1、测试组件2、测试组件3、测试组件4、测试组件5以及测试组件6都是第二测试组件。
又举例来说,测试组件的调度设备获取到测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6、测试组件7,其中,需要依次执行测试组件1、测试组件2、测试组件4,并且需要依次执行测试组件3、测试组件5,但是测试组件6以及测试组件7之间没有执行次序关系,并且,测试组件6分别与测试组件1、测试组件2、测试组件3、测试组件4、测试组件5之间没有执行次序关系,测试组件7分别与测试组件1、测试组件2、测试组件3、测试组件4、测试组件5之间没有执行次序关系,从而第二测试组件包括了测试组件6、和测试组件7,第一测试组件包括了测试组件1、测试组件2、测试组件3、测试组件4、以及测试组件5,其中,需要依次执行测试组件1、测试组件2、测试组件4,需要依次执行测试组件3、测试组件5。
步骤202、若至少两个测试组件中存在第一测试组件,则将所有第一测试组件,调度到至少一个第一线程中,各第一线程之间为并行的。
在可选的一种实施方式中,步骤202具体包括:根据所有第一测试组件中的每一个第一测试组件的执行时间的降序或升序,将所有第一测试组件依次分配给最先空闲下来的第一线程,得到多个并行的第一线程。
在本实施例中,具体的,对于所有的第一测试组件,测试组件的调度设备将所有的第一测试组件,调度到至少一个并行的第一线程中。
例如,第一测试组件的个数为至少两个,则测试组件的调度设备将所有的第一测试组件调度到至少两个并行的第一线程中。
具体来说,本实施例中对于第一测试组件的调度方法,提供了两种调度方式。
一种调度方式是基于最长处理时间(Longest Processing Time,简称LPT)规则,每一个第一测试组件是具有执行时间的,测试组件的调度设备根据每一个第一测试组件的执行时间的降序,将各个第一测试组件依次分配给最先空闲下来的第一线程,从而得到多个并行的第一线程。即优先调度执行时间最长的第一测试组件。
举例来说,表1为获取到的第一测试组件的示例一,如表1所示,测试组件的调度设备获取到了测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6、测试组件7、测试组件8、测试组件9,每一个测试组件之间是没有执行次序关系的,即是相互独立的,从而可以将以上9个测试组件归类到第一测试组件;每一个测试组件是具有执行时间的,测试组件1的执行时间为7毫秒(ms),测试组件2的执行时间为7ms,测试组件3的执行时间为6ms,测试组件4的执行时间为6ms,测试组件5的执行时间为5ms,测试组件6的执行时间为5ms,测试组件7的执行时间为4ms,测试组件8的执行时间为4ms,测试组件9的执行时间为4ms。
表1获取到的第一测试组件的示例一
可以采用基于LPT规则的调度方法对以上9个测试组件进行并行的调度,具体来说,测试组件的调度设备可以获知每一个测试组件的执行时间,然后可以根据执行时间的降序,对以上9个测试组件进行排序,从而得到表1所示的各测试组件的顺序;图3为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图一,如图3所示,图3中的横轴代表测试组件的执行时间,P0、P1、P2、P3代表线程,测试组件的调度设备将测试组件1调度给第一线程P3,将测试组件2调度给第一线程P2,将测试组件3调度给第一线程P1,将测试组件4调度给第一线程P0,从而使得测试组件1、测试组件2、测试组件3、测试组件4以并行的方式同时进行运行;然后,测试组件3和测试组件4首先执行完毕,从而第一线程P1和第一线程P0首先空闲下来;然后测试组件的调度设备就将测试组件5调度给第一线程P0,将测试组件6调度给第一线程P1,从而测试组件5和测试组件6以并行的方式同时进行运行;然后,在测试组件5和测试组件6运行的过程中,测试组件1和测试组件2执行完毕,从而第一线程P3和第一线程P2空闲下来;然后测试组件的调度设备将测试组件7调度给第一线程P2,并且将测试组件8调度给第一线程P3,从而测试组件7和测试组件8以并行的方式同时进行运行;然后,测试组件5、测试组件6、测试组件7以及测试组件8同时执行完毕,从而第一线程P3、第一线程P2、第一线程P1和第一线程P0都空闲下来;然后,测试组件的调度设备可以将测试组件9调度给第一线程P3、或第一线程P2、或第一线程P1、或第一线程P0,例如,将测试组件9调度给第一线程P3。从而可知,对于以上9个相互之间独立的第一测试组件,基于LPT规则下进行调度的时候,处理时间为测试组件1的执行时间、测试组件8的执行时间、以及测试组件9的执行时间之和,得到处理时间为C_max=15ms。
再举例来说,表2为获取到的第一测试组件的示例二,如表2所示,测试组件的调度设备获取到了测试组件1、测试组件2、测试组件3、测试组件4、测试组件5,每一个测试组件之间是没有执行次序关系的,即是相互独立的,从而可以将以上5个测试组件归类到第一测试组件;每一个测试组件是具有执行时间的,测试组件1的执行时间为10ms,测试组件2的执行时间为10ms,测试组件3的执行时间为9ms,测试组件4的执行时间为6ms,测试组件5的执行时间为5ms。
表2获取到的第一测试组件的示例二
可以采用基于LPT规则的调度方法对以上5个测试组件进行并行的调度,具体来说,测试组件的调度设备可以获知每一个测试组件的执行时间,然后可以根据执行时间的降序,对以上5个测试组件进行排序,从而得到表2所示的各测试组件的顺序;图4为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图二,如图4所示,图4中的横轴代表测试组件的执行时间,P1、P2代表线程,测试组件的调度设备将测试组件1调度给第一线程P1,将测试组件2调度给第一线程P2,从而使得测试组件1和测试组件2以并行的方式同时进行运行;然后,测试组件1和测试组件2同时执行完毕,从而第一线程P1和第一线程P2都空闲下来;然后测试组件的调度设备就将测试组件3调度给第一线程P1,将测试组件4调度给第一线程P2,从而测试组件3和测试组件4以并行的方式同时进行运行;然后,测试组件4首先执行完毕,从而第一线程P2空闲下来;然后测试组件的调度设备将测试组件5调度给第一线程P2。从而可知,对于以上5个相互之间独立的第一测试组件,基于LPT规则下进行调度的时候,处理时间为测试组件2的执行时间、测试组件4的执行时间、以及测试组件5的执行时间之和,得到处理时间为C_max=21ms。
另一种调度方式是基于最短处理时间(Shortest Processing Time,简称SPT)规则的,每一个第一测试组件是具有执行时间的,测试组件的调度设备根据每一个第一测试组件的执行时间的升序,将各个第一测试组件依次分配给最先空闲下来的第一线程,从而得到多个并行的第一线程。即优先调度执行时间最短的第一测试组件。
举例来说,表3为获取到的第一测试组件的示例三,如表3所示,测试组件的调度设备获取到了测试组件1、测试组件2、测试组件3、测试组件4、测试组件5,每一个测试组件之间是没有执行次序关系的,即是相互独立的,从而可以将以上5个测试组件归类到第一测试组件;每一个测试组件是具有执行时间的,测试组件1的执行时间为5ms,测试组件2的执行时间为6ms,测试组件3的执行时间为9ms,测试组件4的执行时间为10ms,测试组件5的执行时间为10ms。
表3获取到的第一测试组件的示例三
可以采用基于SPT规则的调度方法对以上5个测试组件进行并行的调度,具体来说,测试组件的调度设备可以获知每一个测试组件的执行时间,然后可以根据执行时间的升序,对以上5个测试组件进行排序,从而得到表3所示的各测试组件的顺序;图5为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图三,如图5所示,图5中的横轴代表测试组件的执行时间,P1、P2代表线程,测试组件的调度设备将测试组件1调度给第一线程P1,将测试组件2调度给第一线程P2,从而使得测试组件1和测试组件2以并行的方式同时进行运行;然后,测试组件1首先执行完毕,从而第一线程P1首先空闲下来;然后测试组件的调度设备就将测试组件3调度给第一线程P1;然后,再测试组件3的执行过程中,测试组件2执行完毕,从而第一线程P2空闲下来;然后测试组件的调度设备将测试组件4调度给第一线程P2;然后在测试组件4的执行过程中,测试组件3执行完毕,第一线程P1空闲下来,然后测试组件的调度设备将测试组件5调度给第一线程P1。从而可知,对于以上5个相互之间独立的第一测试组件,基于SPT规则下进行调度的时候,处理时间为测试组件1的执行时间、测试组件3的执行时间、以及测试组件5的执行时间之和,得到处理时间为C_max=24ms。
从而对于N个相互独立的第一测试组件,可以用M个线程来对这些第一测试组件进行并行调度,这种情况下,可以将调度问题转化成N件测试组件并行在M个线程上,并且执行时得到最优处理时间。
步骤203、若至少两个测试组件中存在第二测试组件,则将所有第二测试组件,调度到至少一个第二线程中,各第二线程之间为并行的,其中,每一个第一线程与每一个第二线程之间为并行的。
在可选的一种实施方式中,步骤203具体包括以下步骤:
步骤2031、根据所有第二测试组件、以及各第二测试组件之间的执行次序关系,生成第二测试组件的AOE(Activity On Edge)网络,其中,AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径,每一条路径位于开始节点与结束节点之间,每一条路径上包括m个具有执行次序关系的第二测试组件,AOE网络中的每一个第二测试组件具有执行时间,m为正整数。
步骤2032、根据AOE网络中的所有第二测试组件的执行时间,计算AOE网络中的每一个第二测试组件的最早开始时间、以及最晚开始时间。
在可选的一种实施方式中,在步骤2032中,在计算AOE网络中的每一个第二测试组件的最早开始时间时,包括以下步骤:
步骤20321、确定从开始节点到每一个第二测试组件的所有的第一路径,并确定该第二测试组件的所有的第一路径中的最长第一路径,其中,最长第一路径为路径上所有的第二测试组件的执行时间之和最大的第一路径。
步骤20322、确定最长第一路径上所有的第二测试组件的执行时间、与开始节点的执行时间之和,为该第二测试组件的最早开始时间。
在可选的一种实施方式中,在步骤2032中,在计算AOE网络中的每一个第二测试组件的最晚开始时间时,包括以下步骤:
步骤20323、确定将从开始节点到结束节点之间具有最大路径长度的路径为最大路径,其中,最大路径长度的路径为路径上各第二测试组件的执行时间之和最大的路径,并计算最大路径的执行时间,最大路径的执行时间为开始节点的执行时间、与最大路径上所有的第二测试组件的执行时间的总和。
步骤20324、确定从每一个第二测试组件到结束节点的所有的第二路径,并确定该第二测试组件的所有的第二路径中的最长第二路径,其中,最长第二路径为路径上所有的第二测试组件的执行时间之和最大的第二路径。
步骤20325、将最大路径的执行时间减去最长第二路径上所有的第二测试组件的执行之间之和,得到该第二测试组件的最晚开始时间。
步骤2033、确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点。
步骤2034、根据关键节点之间的执行次序关系,将关键节点调度到一个第二线程中,并将非关键节点分配给最先空闲下来的其他第二线程中,其中,不同的第二线程上的非关键节点之间没有执行次序关系,对于彼此之间具有执行次序关系的非关键节点,按照其执行次序关系进行调度,且对于与关键节点之间具有执行次序关系的非关键节点,在非关键节点所依赖的关键节点被调度完毕之后进行调度。
在本实施例中,具体的,对于所有的第二测试组件,测试组件的调度设备将所有的第二测试组件,调度到至少一个并行的第二线程中。并且,每一个第一线程与每一个第二线程之间为并行的。并且,每一个第二测试组件是与至少一个其他的第二测试组件之间具有执行次序关系的,即每一个第二测试组件是与至少一个其他的第二测试组组件之间是具有依赖关系的。
具体来说,本实施例中提供一种基于AOE网络的调度方法,对第二测试组件进行并行的调度。
首先,第一步:测试组件的调度设备需要构建一个AOE网络。测试组件的调度设备在获取到所有的第二测试组件之后,由于第二测试组件之间是具有执行次序关系的,从而测试组件的调度设备可以根据各个第二测试组件之间的执行次序关系,生成一个关于第二测试组件的AOE网络。
其中,在该AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径;并且每一条路径位于开始节点与结束节点之间,每一条路径上包括m个具有执行次序关系的第二测试组件,即每一条路径上的首先执行第二测试组件与开始节点连接,并且每一条路径上的最后执行第二测试组件与结束节点连接;并且,AOE网络中的每一个第二测试组件是具有执行时间的。
举例来说,表4为获取到的第二测试组件,如表4所示,测试组件的调度设备获取到了测试组件1、测试组件2、测试组件3、测试组件4、测试组件5、测试组件6、测试组件7、测试组件8、测试组件9、测试组件10以及测试组件11,每一个测试组件是具有执行时间的,测试组件1的执行时间为4ms,测试组件2的执行时间为9ms,测试组件3的执行时间为3ms,测试组件4的执行时间为3ms,测试组件5的执行时间为6ms,测试组件6的执行时间为8ms,测试组件7的执行时间为8ms,测试组件8的执行时间为12ms,测试组件9的执行时间为6ms,测试组件10的执行时间为12ms,测试组件11的执行时间为2ms。
表4获取到的第二测试组件
第二测试组件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
执行时间(单位:毫秒) | 4 | 9 | 3 | 3 | 6 | 8 | 8 | 12 | 6 | 12 | 2 |
并且,图6为本申请实施例提供的另一种测试组件的调度方法中的第二测试组件之间的执行次序图,如图6所示,图6表征除了各第二测试组件的时序,以上11个第二测试组件之间的执行次序关系为:依次执行测试组件1、测试组件2、测试组件6、测试组件7,依次执行测试组件3、测试组件4、测试组件5、测试组件8、测试组件9,依次执行测试组件10、测试组件11,并且,测试组件6需要在测试组件5之后执行,测试组件7需要在测试组件8之后执行。
然后,图7为本申请实施例提供的另一种测试组件的调度方法中的第二测试组件的AOE网络的示意图,如图7所示,测试组件的调度设备基于图6中的各第二测试组件之间的执行次序关系、以及表4中各第二测试组件的执行时间,生成了一个AOE网络;在AOE网中具有存在一个入度为0的开始节点,以及一个出度为0的结束节点,该开始节点也可以称为源点,该结束节点也可以称为汇点,可知,开始节点表征了测试组件的调度开始,结束节点表征了测试组件的调度结束;在该AOE网络中每一个节点采用一个第二测试组件进行表示,AOE网络的每一边上标注出了第二测试组件的执行时间;其中,对于AOE网络中的开始节点的执行时间指的是测试组件的调度设备的准备工作所需要的时间,例如,开始节点的执行时间为1ms。
然后,第二步:测试组件的调度设备确定出AOE网络中的关键节点和非关键节点。测试组件的调度设备在确定AOE网络中的关键节点和非关键节点的时候,可以采用以下两种方式中的任意一种。
第一种确定AOE网络中的关键节点和非关键节点的方式为:针对构建出的AOE网络,测试组件的调度设备确定将从开始节点到结束节点之间具有最大路径长度的路径作为关键路径,其中,最大路径长度的路径指的是路径上开始节点的执行时间、与各第二测试组件的执行时间的总和最大的路径;测试组件的调度设备确定关键路径上的所有第二测试组件作为关键节点,确定其他路径上的所有第二测试组件作为非关键节点。
第二种确定AOE网络中的关键节点和非关键节点的方式为:测试组件的调度设备根据AOE网络中标注出的各第二测试组件的执行时间,计算AOE网络中的每一个第二测试组件的最早开始时间、以及每一个第二测试组件的最晚开始时间;然后,测试组件的调度设备确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点。
本实施例给出了一种计算最早开始时间和最晚开始时间的方法,该方法如下介绍。
在计算每一个第二测试组件的最早开始时间的时候,首先,以开始节点作为开始,以每一个第二测试组件作为结束,测试组件的调度设备计算出开始节点到每一个第二测试组件的所有的第一路径,并且,每一个第一路径不包括当前第一路径上的最后一个第二测试组件;然后测试组件的调度设备计算出每一个第二测试组件的每一个第一路径上所有节点的执行时间之和,这里计算的是每一个第一路径上所有第二测试执行时间、与开始节点的执行时间的总和;然后测试组件的调度设备确定出每一个第二测试组件的所有的第一路径中的最长第一路径,其中,最长第一路径指的是路径上所有的第二测试组件的执行时间、与开始节点的执行时间的总和最大的第一路径;然后针对每一个第二测试组件j来说,测试组件的调度设备就可以将该第二测试组件j的最长第一路径上所有的第二测试组件的执行时间、与开始节点的执行时间的总和,作为该第二测试组件j的最早开始时间Ve[j],其中,该第二测试组件j的最早开始时间Ve[j]表征了第二测试组件j的最早开始时间,即代表了第二测试组件j的最早开始时间不能早于Ve[j],否则前面的测试组件还没处理完。
计算每一个第二测试组件的最晚开始时间的时候,首先,测试组件的调度设备确定出从开始节点到结束节点之间所有的路径,然后,测试组件的调度设备计算出这些所有的路径上的各第二测试组件的执行时间之和,然后测试组件的调度设备确定路径上各第二测试组件的执行时间之和最大的路径,作为具有最大路径长度的路径,进而该具有最大路径长度的路径是一条最大路径;然后测试组件的调度设备需要计算该最大路径上所有的第二测试组件的执行时间、与开始节点的执行时间的总和,将这个总和作为该最大路径的执行时间。在这一过程中,计算出的最大路径也是从开始节点到结束节点之间具有最大路径长度的路径。然后,以每一个第二测试组件作为开始点,将结束节点作为结束点,测试组件的调度设备需要确定出从每一个第二测试组件到结束节点的所有的第二路径;然后针对每一个第二测试组件的所有的第二路径,测试组件的调度设备确定出每一个第二测试组件的所有的第二路径中的最长第二路径,其中,最长第二路径为路径上所有的第二测试组件的执行时间之和最大的第二路径。然后针对每一个第二测试组件,测试组件的调度设备将该第二测试组件的最大路径的执行时间,减去该第二测试组件的最长第二路径上所有的第二测试组件的执行之间之和,就可以得到该第二测试组件的最晚开始时间。其中,对于第二测试组件j来说,可以采用Vl[j]表示第二测试组件j的最晚开始时间,Vl[j]表征了第二测试组件j的最晚开始时间不能晚于Vl[j],否则将影响其后续测试组件的处理。
举例来说,对于图7所示出的AOE网络,可以对图7中的AOE网络中所有路径上的节点的执行时间之和进行计算,得到路径“开始节点--->第二测试组件1--->第二测试组件2--->第二测试组件6--->第二测试组件7--->结束节点”的执行时间之和为30ms,得到路径“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件6---->第二测试组件7-->结束节点”的执行时间之和为29ms,得到路径“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件8---->第二测试组件7-->结束节点”的执行时间之和为33ms,得到路径“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件8---->第二测试组件9-->结束节点”的执行时间之和为31ms,得到路径“开始节点--->第二测试组件10--->第二测试组件11-->结束节点”的执行时间之和为15ms,从而可以确定最大的执行时间为33ms,进而确定最大路径为“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件8---->第二测试组件7-->结束节点”,即得到最大路径的执行时间为33ms。
对于图7所示出的AOE网络,对于第二测试组件1来说,可以计算出从开始节点到第二测试组件1的第一路径只有“开始节点--->第二测试组件1”,从而可以确定第二测试组件1的最长第一路径就是路径“开始节点--->第二测试组件1”,并且,在执行“开始节点--->第二测试组件1”的时候,并不执行第二测试组件1,从而该路径在执行过程中不包括最后一个第二测试组件1;可以计算出路径“开始节点--->第二测试组件1”上的执行时间为开始节点的执行时间1ms,从而可以确定第一测试组件1的最早开始时间为1ms。对于第二测试组件1来说,可以计算出从第二测试组件1到结束节点的第二路径只有路径“第二测试组件1--->第二测试组件2--->第二测试组件6--->第二测试组件7--->结束节点”,从而可以确定第二测试组件1的最长第二路径为该路径,得到第二测试组件1的最长第二路径的执行时间为第二测试组件1、第二测试组件2、第二测试组件6以及第二测试组件7的执行时间之和29ms;然后,将最大路径的执行时间33ms减去29ms,得到第二测试组件1的最晚开始时间4ms。
对于图7所示出的AOE网络,对于第二测试组件6来说,可以计算出从开始节点到第二测试组件6的第一路径包括了路径“开始节点--->第二测试组件1--->第二测试组件2--->第二测试组件6”、路径“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件6”,并且,在执行以上两条第一路径的时候,并不执行第二测试组件6,从而以上两条第一路径在执行过程中不包括最后一个第二测试组件6;可以计算出路径“开始节点--->第二测试组件1--->第二测试组件2--->第二测试组件6”的执行时间为开始节点、第二测试组件1、第二测试组件2、以及第二测试组件6的执行时间之和14ms,路径“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件6”的执行时间为开始节点、第二测试组件3、第二测试组件4、第二测试组件5、以及第二测试组件6的执行时间之和13ms,从而可以确定第二测试组件6的最长第一路径为“开始节点--->第二测试组件1--->第二测试组件2--->第二测试组件6”;然后就可以确定出确定第二测试组件6的最长第一路径的执行时间为14ms,进而确定出第二测试组件6的最早开始时间为14ms。对于第二测试组件6来说,可以计算出从第二测试组件6到结束节点的第二路径只有“第二测试组件6--->第二测试组件7--->结束节点”,从而可以确定第二测试组件6的最长第二路径为该路径,得到第二测试组件6的最长第二路径的执行时间之和为第二测试组件6以及第二测试组件7的执行时间之和16ms;然后,将最大路径的执行时间33ms减去16ms,得到第二测试组件1的最晚开始时间17ms。
对于图7所示出的AOE网络,对于第二测试组件8来说,可以计算出从开始节点到第二测试组件8的第一路径只有“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件8”,从而可以确定第二测试组件8的最长第一路径就是该路径,并且,在执行该路径的时候,并不执行第二测试组件8,从而该路径在执行过程中不包括最后一个第二测试组件8;可以计算出路径“开始节点--->第二测试组件3--->第二测试组件4--->第二测试组件5--->第二测试组件8的执行时间为开始节点、第二测试组件3、第二测试组件4、第二测试组件5、以及第二测试组件8的执行时间之和13ms,从而可以确定第一测试组件8的最早开始时间为13ms。对于第二测试组件8来说,可以计算出从第二测试组件8到结束节点的第二路径包括了路径“第二测试组件8--->第二测试组件7--->结束节点”、路径“第二测试组件8--->第二测试组件9--->结束节点”,路径“第二测试组件8--->第二测试组件7--->结束节点”的执行时间为20ms,路径“第二测试组件8--->第二测试组件9--->结束节点”的执行时间为18ms,,从而可以确定第二测试组件8的最长第二路径为路径“第二测试组件8--->第二测试组件7--->结束节点”,得到第二测试组件8的最长第二路径的执行时间为第二测试组件8和第二测试组件7的执行时间之和20ms;然后,将最大路径的执行时间33ms减去20ms,得到第二测试组件8的最晚开始时间13ms。
对于图7所示出的AOE网络中的其他第二测试组件,参照上述计算过程,就可以得到每一个第二测试组建的最早开始时间和最晚开始时间,如表5所示。
表5AOE网络中第二测试组建的最早开始时间和最晚开始时间
然后测试组件的调度设备就可以确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点,将开始节点、关键节点以及结束节点组成的路径称为关键路径。举例来说,针对图7所示出的AOE网络,图8为本申请实施例提供的另一种测试组件的调度方法中的关键路径的示意图,如图8所示,得到关键节点分别为第二测试组件3、第二测试组件4、第二测试组件5、第二测试组件8、第二测试组件7,从而得到一条关键路径,在该关键路径上标注出了每一个节点的执行时间,例如,开始节点的执行时间为1ms,第二测试组件3的执行时间为3ms,第二测试组件4的执行时间为3ms,第二测试组件5的执行时间为6ms,第二测试组件8的执行时间为12ms,第二测试组件7的执行时间为8ms。
从而,就可以进行AOE网络中的各节点的子集的划分,将所有的关键节点组成子集A,非关键节点组成子集B,并且,可以两个子集中的测试组件按照测试组件的最早开始时间的升序进行排序,其中,以上两个子集中只包含了测试组件,不包括“开始节点”和“结束节点”。例如,图9为本申请实施例提供的另一种测试组件的调度方法中的子集的示意图,如图9所示,对于图7所示的网络,得到子集A和子集B,子集A中包括了第二测试组件3、第二测试组件4、第二测试组件5、第二测试组件8、第二测试组件7,子集B中包括了第二测试组件1、第二测试组件10、第二测试组件2、第二测试组件11、第二测试组件6、第二测试组件9,每一个子集中按照测试组件的最早开始时间的升序进行排序。
最后,测试组件的调度设备对各第二测试组件进行调度。测试组件的调度设备根据各关键节点之间的执行次序关系,将关键节点调度到一个第二线程中;测试组件的调度设备需要根据对于彼此之间具有执行次序关系的非关键节点按照其执行次序关系进行调度,并且,将非关键节点分配给最先空闲下来的其他第二线程;需要注意的是,在调度非关键节点的时候,需要考虑非关键节点与关键节点之间的依赖关系,这里的依赖关系指的就是AOE网络中非关键节点与关键节点之间的执行次序,要确定需要非关键节点执行之前进行执行的关键节点被调度且执行完毕之后,才可以调度该非关键节点。并且,不同的第二线程上的非关键节点之间没有执行次序关系。
举例来说,图10为本申请实施例提供的另一种测试组件的调度方法中的调度顺序图四,如图10所示,对于图7所示的AOE网络,得到图9所示的子集A和子集B之后,对于子集A中的关键节点,必须严格按照各关键节点的时序进行调度,因此子集A中的元素按照排序顺序执行即可,从而根据第二测试组件3、第二测试组件4、第二测试组件5、第二测试组件8、第二测试组件7的执行次序,依次将第二测试组件3、第二测试组件4、第二测试组件5、第二测试组件8、第二测试组件7调度到一个第二线程P0中。如图10所示,对于子集B中的非关键节点,当存在非关键节点的最早开始时间相同的节点时,说明这些非关键节点可以并行执行,可以同时进行调度,例如第二测试组件1和第二测试组件10最早开始时间相同,则可以同时执行第二测试组件1和第二测试组件10,从而将第二测试组件1调度到第二线程P1中,将第二测试组件10调度到第二线程P2中。并且对于子集B中的非关键节点,在调度过程中要检测将要调度的非关键节点是否依赖关键节点,即需要检测非关键节点是否需要在关键节点执行之后进行执行,若确定存在依赖关系,检测非关键节点所依赖关键节点是否执行完毕,若非关键节点所依赖关键节点执行完毕之后再调度该非关键节点。例如第二测试组件6依赖子集A中的第二测试组件5,在运行第二测试组件6时检测第二测试组件5是否执行完毕。从而参照上述过程,第二测试组件2与第一测试组件1存在执行次序的关系,可以将第二测试组件2调度到第二线程P1上;第二测试组件11与第一测试组件10存在执行次序的关系,将第二测试组件11调度到第二线程P2上;第二测试组件6依赖子集A中的第二测试组件5,从而第二测试组件6需要在第二测试组件5执行完毕之后进行调度,在第二测试组件5执行完毕的时候第二线程P0花费了12ms,此时第二线程P1因为执行第二测试组件1与第一测试组件2,第二线程P1需要花费13ms,第二线程P2因为需要执行完第二测试组件11,所以第二线程P2需要花费14ms,可知此时,第二线程P1首先空闲下来,从而可以将第二测试组件6调度到第二线程P1上;第二测试组件9依赖子集A中的第二测试组件8,从而第二测试组件9需要在第二测试组件8执行完毕之后进行调度,在第二测试组件8执行完毕的时候第二线程P0花费了24ms,第二线程P1在执行完第二测试组件6的时候,第二线程P1需要总共花费21ms,第二线程P2在执行完第二测试组件11的时候需要花费14ms,可知在调度第二测试组件9的时候,第二线程P1和第二线程P2都空闲下来了,可以将第二测试组件9调度到第二线程P1或第二线程P2上,例如,将第二测试组件9调度到第二线程P2上。
从而,可以调度图7所示的AOE网络中的各测试组件的时候,需要花费的时间为关键路径上所有第二测试组件的执行时间之和,得到总的处理时间为C_max=3+3+6+8+12=32。
本实施例中,步骤202和步骤203的执行次序不做限定;可以先执行步骤202,然后执行步骤203;也可以先执行步骤203,然后执行步骤202;也可以同时执行步骤202和步骤203。并且对于同时存在第一测试组件和第二测试组件的时候,对于第一测试组件采用步骤202的方法进行调度,对于第二测试组件采用步骤203的方法进行调度。
本实施例通过获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。通过将获取到的各个测试组件,调度到并行的线程中,从而可以解决现有技术中串行调度方案会使得测试的运行时间长的问题,进而可以合理的分配线程资源,测试组件以并行方式进行运行去对程序进行测试,降低了等待测试结果的时间,提高了测试效率。具体的,在调度测试组件的时候,因为独立的测试组件不会影响其他任何的测试组件的调度,而具有依赖关系的测试组件会影响该测试组件所关联的测试组件的调度,从而可以将测试组件区分为独立的测试组件、以及具有依赖关系的测试组件,从而便于管理测试组件、以及便于并行调度测试组件;对于相互之间独立存在的测试组件,将调度问题转化成N件测试组件并行在M个线程上的问题,对于相互之间存在依赖关系的测试组件,将测试组件构建为一个AOE网络,提取出AOE网络中的关键节点和非关键节点,对关键节点和非关键节点分别采用不同的并行调度策略;进而提供了一种并行调取测试组件的方式,其中,对于具有依赖关系的测试组件转化到一个AOE网络,因为AOE网络可以直观的表达出测试组件之间的依赖关系、执行次序关系、以及具有依赖关系的测试组件的总的执行时间,进而便于确定关键的测试组件,即确定出AOE网络中的关键节点,关键节点可以组成关键路径,由于关键路径的执行时间为并行调度的最大时间,从而关键路径的执行时间就是并行调度所需要的时间,进而如果需要降低并行调度所需要的时间,就可以去降低关键路径的执行时间,即降低关键节点的执行时间,从而便于通过降低关键路径上的关键节点的执行时间,去降低并行调度所需要的时间,进一步去提高并行调度的效率。
图11为本申请实施例提供的又一种测试组件的调度方法的流程示意图。如图11所示,该方法包括:
步骤301、获取原子操作集,其中,原子操作集中包括至少两个原子操作。
在可选的一种实施方式中,步骤301具体包括:获取至少一个待处理的测试组件,其中,至少一个待处理的测试组件中的每一个待处理的测试组件包括了至少一个执行步骤;根据每一个待处理的测试组件中的各执行步骤,对至少一个待处理的测试组件进行拆分处理,得到原子操作集。
在可选的一种实施方式中,每一个原子操作中包括了入参信息、原子操作的执行时间、以及输出值,其中,输出值表征了原子操作是否执行成功。
在本实施例中,具体的,执行主体可以是测试组件的调度设备、或者测试组件的调度装置、或者服务器、或者其他可以执行本实施例的设备。本实施例以执行主体为测试组件的调度设备进行介绍。
测试组件的调度设备需要首先获取原子操作集,原子操作集中包括至少两个原子操作,每一个原子操作表征了一个测试用例中的一个执行步骤。
具体来说,测试组件的调度设备首先获取到多个待处理的测试组件,每一个待处理的测试组件表征了一个测试用例,每一个待处理的测试组件中包括了多个执行步骤;然后测试组件的调度设备对上述待处理的测试组件进行拆分,从而将每一个待处理的测试组件拆分为了多个执行步骤;然后测试组件的调度设备针对将拆分得到的执行步骤,将每一个执行步骤作为一个原子操作,进而得到一个原子操作集。
举例来说,获取到了待处理的测试组件TC1、TC2和TC3,TC1{action_1,action_2,actio〗_3,action_4},TC2{action_2,action_3,action_5,action_6},TC3{action_1,action_3,action_4,action_5,action_7};每一个待处理的测试组件实际是n个动作按照一定的时序组成的执行序列,每一个动作为一个执行步骤,每一个执行步骤可以称为一个原子操作;对以上测试组件TC1、TC2和TC3进行拆分,可以得到原子操作action_1、action_2、action_3、action_4、action_5、action_6、action_7,从而可以将上述原子操作放到原子操作集中。
并且,每一个原子操作中包括了入参信息、原子操作的执行时间、输出值、以及输出结果,其中,原子操作的输出值表征了该原子操作是否执行成功。例如,原子操作的输出值为0或1,0表示原子操作执行成功,1表示原子操作执行失败。
在得到了新的原子操作的时候,需要将新的原子操作放到原子操作集中;从而对原子操作集中每一个原子操作的入参信息、原子操作的执行时间、输出值、以及输出结果等进行维护。
举例来说,得到表6的原子操作集。
表6原子操作集
步骤302、根据预设的执行需求信息,从原子操作集中获取至少两个原子操作,其中,执行需求信息表征待生成的测试组件的执行步骤的需求信息。
在本实施例中,具体的,测试组件的调度设备根据需要构建的测试组件的执行步骤的需要,从构建出的原子操作集中,获取原子操作。
例如,需要构建的测试组件需要执行步骤1、3、5,即需要构建的测试组件需要原子操作1、原子操作3和原子操作5。
步骤303、根据获取到的至少两个原子操作、以及各原子操作之间具有次序关系,生成符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例。
其中,每一个测试组件中包括至少一个原子操作,每一个原子操作表征了一个测试用例中的一个执行步骤,每一个测试组件中的各原子操作之间具有次序关系。
在可选的一种实施方式中,每一个测试组件的执行时间为该测试组件中的所有原子操作的执行时间之和。
在本实施例中,具体的,测试组件的调度设备获取了N个符合V2X通信协议标准的测试组件;或者,测试组件的调度设备获取了N个符合物联网中的协议标准的测试组件;或者,测试组件的调度设备获取了N个符合以太网中的协议标准的测试组件;其中,N为正整数。
测试组件的调度设备需要根据获取到的各原子操作之间具有次序关系,生成符合同一协议标准的至少两个测试组件,可以每一个测试组件表征了一个测试用例。可知,每一个测试组件中包括至少一个原子操作,每一个测试组件中的各原子操作之间具有次序关系,并且,每一个测试组件的执行时间为该测试组件中的所有原子操作的执行时间的总和。可知,测试组件的调度设备不断更新维护原子操作集,通过原子操作集的积累,再需要添加新的测试组件时,实际就是从原子操作集中提取相关的原子操作按照相应时序实现即可。从而生成到的每一个测试组件是一个多个原子操作的有时序的可执行队列,从而在生成测试组件的时候,只需要测试组件的执行需求从原子操作集中进行调取就可以了。
需要注意的是,一个原子操作是否继续执行是具有前置条件的,前置条件为当前原子操作的前一个原子操作的输出值,图12为本申请实施例提供的又一种测试组件的调度方法中的原子操作的执行时序图,如图12所示,需要生成的测试组件中需要得到原子操作action_1、action_2、action_3和action_4,在执行每一个原子操作的时候,需要确定前一个原子操作的输出值为0,即确定前一个原子操作的执行成功。
基于以上示例,可以得到表7所示的测试组件的原子操作调度表,原子标识是组成测试组件所涉及的原子操作的标识;入参信息是原子操作执行时所需要的参数输入;期望的输出值则表示该在测试组件的执行过程中期望此原子操作执行成功时所输出的值,当前原子操作的期望的输出值作为后续原子操作是否能够执行的前置条件。从而可以基于表7从原子操作集,调度原子操作。
表7测试组件的原子操作调度表
原子标识 | 入参信息 | 期望的输出值 |
1 | (a,b,c) | 0 |
2 | (a,b,c) | 0 |
3 | (a,b,c) | 0 |
4 | (a,b,c) | 0 |
步骤304、将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。
在本实施例中,具体的,本步骤可以参见图1的步骤101,或者参见图2的步骤201,不再赘述。
本实施例通过获取原子操作集,其中,原子操作集中包括至少两个原子操作;根据预设的执行需求信息,从原子操作集中获取至少两个原子操作,其中,执行需求信息表征待生成的测试组件的执行步骤的需求信息;;根据获取到的至少两个原子操作、以及各原子操作之间具有次序关系,生成符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。从而可以将测试组件抽象出多个独立存在的原子操作,不断更新和维护这些原子操作,根据这些原子操作生成测试组件,每一个测试组件是由一个或多个原子操作按照时序组成的操作集合;在针对某一个协议标准的程序进行测试的时候,只需要从原子操作集中获取原子操作,并按照一定时序进行组合即可得到测试组件,从而可以快速的获取到测试组件,不需要生产商针对自己的程序自己编写测试用例;进而提供了一种符合协议标准需要的生成测试组件的方法,有利于测试组件更准确的测试出程序是否符合协议标准。
图13为本申请实施例提供的一种测试组件的调度装置的结构示意图,如图13所示,本实施例的装置可以包括:
获取单元41,用于获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;
调度单元42,用于将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。
本实施例的测试组件的调度装置可执行本申请实施例提供的一种测试组件的调度方法,其实现原理相类似,此处不再赘述。
本实施例通过获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。通过将获取到的各个测试组件,调度到并行的线程中,从而可以解决现有技术中串行调度方案会使得测试的运行时间长的问题,进而可以合理的分配线程资源,测试组件以并行方式进行运行去对程序进行测试,降低了等待测试结果的时间,提高了测试效率。
图14为本申请实施例提供的另一种测试组件的调度装置的结构示意图,在图13所示实施例的基础上,如图14所示,本实施例的装置中,至少两个测试组件包括至少两个第一测试组件,或者至少两个测试组件包括至少两个第二测试组件,或者至少两个测试组件包括至少一个第一测试组件和至少两个第二测试组件;至少两个测试组件中的第一测试组件为与其他测试组件之间没有执行次序关系的测试组件,第二测试组件为与至少一个其他第二测试组件之间具有执行次序关系的测试组件。
相应的,调度单元42,包括:
第一调度模块421,用于若至少两个测试组件中存在第一测试组件,则将所有第一测试组件,调度到至少一个第一线程中,各第一线程之间为并行的;
第二调度模块422,用于若至少两个测试组件中存在第二测试组件,则将所有第二测试组件,调度到至少一个第二线程中,各第二线程之间为并行的,其中,每一个第一线程与每一个第二线程之间为并行的。
第一调度模块421,具体用于:
根据所有第一测试组件中的每一个第一测试组件的执行时间的降序或升序,将所有第一测试组件依次分配给最先空闲下来的第一线程,得到多个并行的第一线程。
第二调度模块422,包括:
生成子模块4221,用于根据所有第二测试组件、以及各第二测试组件之间的执行次序关系,生成第二测试组件的AOE网络,其中,AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径,每一条路径位于开始节点与结束节点之间,每一条路径上包括m个具有执行次序关系的第二测试组件,AOE网络中的每一个第二测试组件具有执行时间,m为正整数。
计算子模块4222,用于根据AOE网络中的所有第二测试组件的执行时间,计算AOE网络中的每一个第二测试组件的最早开始时间、以及最晚开始时间。
确定子模块4223,用于确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点;
调度子模块4224,用于根据关键节点之间的执行次序关系,将关键节点调度到一个第二线程中,并将非关键节点分配给最先空闲下来的其他第二线程中,其中,不同的第二线程上的非关键节点之间没有执行次序关系,对于彼此之间具有执行次序关系的非关键节点,按照其执行次序关系进行调度,且对于与关键节点之间具有执行次序关系的非关键节点,在非关键节点所依赖的关键节点被调度完毕之后进行调度。
计算子模块4222,具体用于:
确定从开始节点到每一个第二测试组件的所有的第一路径,并确定该第二测试组件的所有的第一路径中的最长第一路径,其中,最长第一路径为路径上所有的第二测试组件的执行时间之和最大的第一路径;
确定最长第一路径上所有的第二测试组件的执行时间、与开始节点的执行时间之和,为该第二测试组件的最早开始时间;
确定将从开始节点到结束节点之间具有最大路径长度的路径为最大路径,其中,最大路径长度的路径为路径上各第二测试组件的执行时间之和最大的路径,并计算最大路径的执行时间,最大路径的执行时间为开始节点的执行时间、与最大路径上所有的第二测试组件的执行时间的总和;
确定从每一个第二测试组件到结束节点的所有的第二路径,并确定该第二测试组件的所有的第二路径中的最长第二路径,其中,最长第二路径为路径上所有的第二测试组件的执行时间之和最大的第二路径;
将最大路径的执行时间减去最长第二路径上所有的第二测试组件的执行之间之和,得到该第二测试组件的最晚开始时间。
本实施例的测试组件的调度装置可执行本申请实施例提供的另一种测试组件的调度方法,其实现原理相类似,此处不再赘述。
本实施例通过获取符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。通过将获取到的各个测试组件,调度到并行的线程中,从而可以解决现有技术中串行调度方案会使得测试的运行时间长的问题,进而可以合理的分配线程资源,测试组件以并行方式进行运行去对程序进行测试,降低了等待测试结果的时间,提高了测试效率。具体的,在调度测试组件的时候,因为独立的测试组件不会影响其他任何的测试组件的调度,而具有依赖关系的测试组件会影响该测试组件所关联的测试组件的调度,从而可以将测试组件区分为独立的测试组件、以及具有依赖关系的测试组件,从而便于管理测试组件、以及便于并行调度测试组件;对于相互之间独立存在的测试组件,将调度问题转化成N件测试组件并行在M个线程上的问题,对于相互之间存在依赖关系的测试组件,将测试组件构建为一个AOE网络,提取出AOE网络中的关键节点和非关键节点,对关键节点和非关键节点分别采用不同的并行调度策略;进而提供了一种并行调取测试组件的方式,其中,对于具有依赖关系的测试组件转化到一个AOE网络,因为AOE网络可以直观的表达出测试组件之间的依赖关系、执行次序关系、以及具有依赖关系的测试组件的总的执行时间,进而便于确定关键的测试组件,即确定出AOE网络中的关键节点,关键节点可以组成关键路径,由于关键路径的执行时间为并行调度的最大时间,从而关键路径的执行时间就是并行调度所需要的时间,进而如果需要降低并行调度所需要的时间,就可以去降低关键路径的执行时间,即降低关键节点的执行时间,从而便于通过降低关键路径上的关键节点的执行时间,去降低并行调度所需要的时间,进一步去提高并行调度的效率。
图15为本申请实施例提供的又一种测试组件的调度装置的结构示意图,在图13或图14所示实施例的基础上,如图15所示,本实施例的装置中,每一个测试组件中包括至少一个原子操作,每一个原子操作表征了一个测试用例中的一个执行步骤,每一个测试组件中的各原子操作之间具有次序关系。
获取单元41,包括:
第一获取模块411,用于获取原子操作集,其中,原子操作集中包括至少两个原子操作。
第二获取模块412,用于根据预设的执行需求信息,从原子操作集中获取至少两个原子操作,其中,执行需求信息表征待生成的测试组件的执行步骤的需求信息。
生成模块413,用于根据获取到的至少两个原子操作、以及各原子操作之间具有次序关系,生成至少两个测试组件。
第一获取模块411,包括:
第三获取子模块4111,用于获取至少一个待处理的测试组件,其中,至少一个待处理的测试组件中的每一个待处理的测试组件包括了至少一个执行步骤;
拆分子模块4112,用于根据每一个待处理的测试组件中的各执行步骤,对至少一个待处理的测试组件进行拆分处理,得到原子操作集。
每一个原子操作中包括了入参信息、原子操作的执行时间、以及输出值,其中,输出值表征了原子操作是否执行成功。
每一个测试组件的执行时间为该测试组件中的所有原子操作的执行时间之和。
本实施例的测试组件的调度装置可执行本申请实施例提供的又一种测试组件的调度方法,其实现原理相类似,此处不再赘述。
本实施例通过获取原子操作集,其中,原子操作集中包括至少两个原子操作;根据预设的执行需求信息,从原子操作集中获取至少两个原子操作,其中,执行需求信息表征待生成的测试组件的执行步骤的需求信息;;根据获取到的至少两个原子操作、以及各原子操作之间具有次序关系,生成符合同一协议标准的至少两个测试组件,其中,至少两个测试组件中的每一个测试组件表征了一个测试用例;将至少两个测试组件,调度到并行的线程中,以使至少两个测试组件以并行方式进行运行。从而可以将测试组件抽象出多个独立存在的原子操作,不断更新和维护这些原子操作,根据这些原子操作生成测试组件,每一个测试组件是由一个或多个原子操作按照时序组成的操作集合;在针对某一个协议标准的程序进行测试的时候,只需要从原子操作集中获取原子操作,并按照一定时序进行组合即可得到测试组件,从而可以快速的获取到测试组件,不需要生产商针对自己的程序自己编写测试用例;进而提供了一种符合协议标准需要的生成测试组件的方法,有利于测试组件更准确的测试出程序是否符合协议标准。
图16为本申请实施例提供的一种测试组件的调度设备的结构示意图,如图16所示,本申请实施例提供了一种测试组件的调度设备,可以用于执行图1、或图2、或图11所示实施例中测试组件的调度设备动作或步骤,具体包括:处理器2701,存储器2702和通信接口2703。
存储器2702,用于存储计算机程序。
处理器2701,用于执行存储器2702中存储的计算机程序,以实现图1、或图2、或图11所示实施例中测试组件的调度设备的动作,不再赘述。
可选的,测试组件的调度设备还可以包括总线2704。其中,处理器2701、存储器2702以及通信接口2703可以通过总线2704相互连接;总线2704可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,简称EISA)总线等。上述总线2704可以分为地址总线、数据总线和控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,上述各实施例之间可以相互参考和借鉴,相同或相似的步骤以及名词均不再一一赘述。
或者,以上各个模块的部分或全部也可以通过集成电路的形式内嵌于该测试组件的调度设备的某一个芯片上来实现。且它们可以单独实现,也可以集成在一起。即以上这些模块可以被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Singnal Processor,简称DSP),或,一个或者多个现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)等。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器2702,上述指令可由上述测试组件的调度设备的处理器2701执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当该存储介质中的指令由测试组件的调度设备的处理器执行时,使得测试组件的调度设备能够执行上述测试组件的调度方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、测试组件的调度设备或数据中心通过有线(例如,同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、测试组件的调度设备或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的测试组件的调度设备、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种测试组件的调度方法,其特征在于,包括:
获取符合同一协议标准的至少两个测试组件,其中,所述至少两个测试组件中的每一个测试组件表征了一个测试用例;
将所述至少两个测试组件,调度到并行的线程中,以使所述至少两个测试组件以并行方式进行运行。
2.根据权利要求1所述的方法,其特征在于,所述至少两个测试组件包括至少两个第一测试组件,或者所述至少两个测试组件包括至少两个第二测试组件,或者所述至少两个测试组件包括至少一个第一测试组件和至少两个第二测试组件;所述至少两个测试组件中的所述第一测试组件为与其他测试组件之间没有执行次序关系的测试组件,所述第二测试组件为与至少一个其他第二测试组件之间具有执行次序关系的测试组件;
相应的,将所述至少两个测试组件,调度到并行的线程中,包括:
若所述至少两个测试组件中存在第一测试组件,则将所有第一测试组件,调度到至少一个第一线程中,各所述第一线程之间为并行的;
若所述至少两个测试组件中存在第二测试组件,则将所有第二测试组件,调度到至少一个第二线程中,各所述第二线程之间为并行的,其中,每一个所述第一线程与每一个所述第二线程之间为并行的。
3.根据权利要求2所述的方法,其特征在于,将所有第一测试组件,调度到至少一个第一线程中,包括:
根据所有第一测试组件中的每一个第一测试组件的执行时间的降序或升序,将所有第一测试组件依次分配给最先空闲下来的第一线程,得到多个并行的第一线程。
4.根据权利要求2所述的方法,其特征在于,将所有第二测试组件,调度到至少一个第二线程中,包括:
根据所有第二测试组件、以及各第二测试组件之间的执行次序关系,生成第二测试组件的AOE网络,其中,所述AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径,每一条所述路径位于所述开始节点与所述结束节点之间,每一条所述路径上包括m个具有执行次序关系的第二测试组件,所述AOE网络中的每一个第二测试组件具有执行时间,m为正整数;
根据所述AOE网络中的所有第二测试组件的执行时间,计算所述AOE网络中的每一个第二测试组件的最早开始时间、以及最晚开始时间;
确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点;
根据所述关键节点之间的执行次序关系,将所述关键节点调度到一个第二线程中,并将所述非关键节点分配给最先空闲下来的其他第二线程中,其中,不同的第二线程上的非关键节点之间没有执行次序关系,对于彼此之间具有执行次序关系的所述非关键节点,按照其执行次序关系进行调度,且对于与所述关键节点之间具有执行次序关系的所述非关键节点,在所述非关键节点所依赖的关键节点被调度完毕之后进行调度。
5.一种测试组件的调度装置,其特征在于,包括:
获取单元,用于获取符合同一协议标准的至少两个测试组件,其中,所述至少两个测试组件中的每一个测试组件表征了一个测试用例;
调度单元,用于将所述至少两个测试组件,调度到并行的线程中,以使所述至少两个测试组件以并行方式进行运行。
6.根据权利要求5所述的装置,其特征在于,所述至少两个测试组件包括至少两个第一测试组件,或者所述至少两个测试组件包括至少两个第二测试组件,或者所述至少两个测试组件包括至少一个第一测试组件和至少两个第二测试组件;所述至少两个测试组件中的所述第一测试组件为与其他测试组件之间没有执行次序关系的测试组件,所述第二测试组件为与至少一个其他第二测试组件之间具有执行次序关系的测试组件;
相应的,所述调度单元,包括:
第一调度模块,用于若所述至少两个测试组件中存在第一测试组件,则将所有第一测试组件,调度到至少一个第一线程中,各所述第一线程之间为并行的;
第二调度模块,用于若所述至少两个测试组件中存在第二测试组件,则将所有第二测试组件,调度到至少一个第二线程中,各所述第二线程之间为并行的,其中,每一个所述第一线程与每一个所述第二线程之间为并行的。
7.根据权利要求6所述的装置,其特征在于,所述第一调度模块,具体用于:
根据所有第一测试组件中的每一个第一测试组件的执行时间的降序或升序,将所有第一测试组件依次分配给最先空闲下来的第一线程,得到多个并行的第一线程。
8.根据权利要求6所述的装置,其特征在于,所述第二调度模块,包括:
生成子模块,用于根据所有第二测试组件、以及各第二测试组件之间的执行次序关系,生成第二测试组件的AOE网络,其中,所述AOE网络中包括一个预设的开始节点、一个预设的结束节点以及至少一条路径,每一条所述路径位于所述开始节点与所述结束节点之间,每一条所述路径上包括m个具有执行次序关系的第二测试组件,所述AOE网络中的每一个第二测试组件具有执行时间,m为正整数;
计算子模块,用于根据所述AOE网络中的所有第二测试组件的执行时间,计算所述AOE网络中的每一个第二测试组件的最早开始时间、以及最晚开始时间;
确定子模块,用于确定最早开始时间等于最晚开始时间的第二测试组件为关键节点,并确定最早开始时间不等于最晚开始时间的第二测试组件为非关键节点;
调度子模块,用于根据所述关键节点之间的执行次序关系,将所述关键节点调度到一个第二线程中,并将所述非关键节点分配给最先空闲下来的其他第二线程中,其中,不同的第二线程上的非关键节点之间没有执行次序关系,对于彼此之间具有执行次序关系的所述非关键节点,按照其执行次序关系进行调度,且对于与所述关键节点之间具有执行次序关系的所述非关键节点,在所述非关键节点所依赖的关键节点被调度完毕之后进行调度。
9.一种测试组件的调度设备,其特征在于,包括:处理器、存储器以及计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-4任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235129.9A CN108459966B (zh) | 2018-03-21 | 2018-03-21 | 测试组件的调度方法、装置、设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235129.9A CN108459966B (zh) | 2018-03-21 | 2018-03-21 | 测试组件的调度方法、装置、设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108459966A true CN108459966A (zh) | 2018-08-28 |
CN108459966B CN108459966B (zh) | 2021-11-16 |
Family
ID=63236723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810235129.9A Active CN108459966B (zh) | 2018-03-21 | 2018-03-21 | 测试组件的调度方法、装置、设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108459966B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840248A (zh) * | 2019-01-25 | 2019-06-04 | 中国银行股份有限公司 | 一种作业流程优化方法、装置及存储介质 |
CN110096323A (zh) * | 2019-03-29 | 2019-08-06 | 南京大学 | 一种并行化安卓应用ui自动探索方法 |
CN112099929A (zh) * | 2020-09-07 | 2020-12-18 | 中电科仪器仪表有限公司 | 一种适用于射频芯片并行测试的测试资源调度管理方法 |
CN112578259A (zh) * | 2019-09-29 | 2021-03-30 | 北京君正集成电路股份有限公司 | 一种具有数据空间设置的线程调度方法 |
CN112835686A (zh) * | 2019-11-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 一种时序验证方法、验证装置、电子设备及存储介质 |
CN113341933A (zh) * | 2021-06-23 | 2021-09-03 | 中国第一汽车股份有限公司 | 车用中央控制器的诊断系统及方法 |
CN117453379A (zh) * | 2023-12-25 | 2024-01-26 | 麒麟软件有限公司 | Linux系统中AOE网计算任务的调度方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1832433A (zh) * | 2005-03-08 | 2006-09-13 | 华为技术有限公司 | 分布式架构测试系统和该测试系统的测试方法 |
CN101094120A (zh) * | 2007-07-04 | 2007-12-26 | 中兴通讯股份有限公司 | 一种基于网络堆叠系统的自动测试系统以及测试方法 |
CN101227350A (zh) * | 2008-02-03 | 2008-07-23 | 中兴通讯股份有限公司 | 一种基于优先级调度的并行执行自动化测试系统及其方法 |
CN102169455A (zh) * | 2010-02-26 | 2011-08-31 | 国际商业机器公司 | 用于软件性能测试的调试方法和系统 |
CN102214139A (zh) * | 2011-06-01 | 2011-10-12 | 北京航空航天大学 | 一种面向分布式系统的自动化测试的执行控制与调度方法 |
US20120226940A1 (en) * | 2011-01-18 | 2012-09-06 | Robert Lin | Self-Expanding Test Automation Method |
CN105335293A (zh) * | 2015-11-30 | 2016-02-17 | 努比亚技术有限公司 | 一种基于接口并行的自动化测试系统和方法 |
-
2018
- 2018-03-21 CN CN201810235129.9A patent/CN108459966B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1832433A (zh) * | 2005-03-08 | 2006-09-13 | 华为技术有限公司 | 分布式架构测试系统和该测试系统的测试方法 |
CN101094120A (zh) * | 2007-07-04 | 2007-12-26 | 中兴通讯股份有限公司 | 一种基于网络堆叠系统的自动测试系统以及测试方法 |
CN101227350A (zh) * | 2008-02-03 | 2008-07-23 | 中兴通讯股份有限公司 | 一种基于优先级调度的并行执行自动化测试系统及其方法 |
CN102169455A (zh) * | 2010-02-26 | 2011-08-31 | 国际商业机器公司 | 用于软件性能测试的调试方法和系统 |
US20120226940A1 (en) * | 2011-01-18 | 2012-09-06 | Robert Lin | Self-Expanding Test Automation Method |
CN102214139A (zh) * | 2011-06-01 | 2011-10-12 | 北京航空航天大学 | 一种面向分布式系统的自动化测试的执行控制与调度方法 |
CN105335293A (zh) * | 2015-11-30 | 2016-02-17 | 努比亚技术有限公司 | 一种基于接口并行的自动化测试系统和方法 |
Non-Patent Citations (1)
Title |
---|
屈波 等: "一种并行环境下测试用例优先级技术度量方法", 《东南大学学报(自然科学版)》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840248A (zh) * | 2019-01-25 | 2019-06-04 | 中国银行股份有限公司 | 一种作业流程优化方法、装置及存储介质 |
CN109840248B (zh) * | 2019-01-25 | 2021-03-02 | 中国银行股份有限公司 | 一种作业流程优化方法、装置及存储介质 |
CN110096323A (zh) * | 2019-03-29 | 2019-08-06 | 南京大学 | 一种并行化安卓应用ui自动探索方法 |
CN110096323B (zh) * | 2019-03-29 | 2022-03-18 | 南京大学 | 一种并行化安卓应用ui自动探索方法 |
CN112578259A (zh) * | 2019-09-29 | 2021-03-30 | 北京君正集成电路股份有限公司 | 一种具有数据空间设置的线程调度方法 |
CN112835686A (zh) * | 2019-11-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 一种时序验证方法、验证装置、电子设备及存储介质 |
CN112835686B (zh) * | 2019-11-22 | 2024-03-08 | 北京金山云网络技术有限公司 | 一种时序验证方法、验证装置、电子设备及存储介质 |
CN112099929A (zh) * | 2020-09-07 | 2020-12-18 | 中电科仪器仪表有限公司 | 一种适用于射频芯片并行测试的测试资源调度管理方法 |
CN113341933A (zh) * | 2021-06-23 | 2021-09-03 | 中国第一汽车股份有限公司 | 车用中央控制器的诊断系统及方法 |
CN117453379A (zh) * | 2023-12-25 | 2024-01-26 | 麒麟软件有限公司 | Linux系统中AOE网计算任务的调度方法及系统 |
CN117453379B (zh) * | 2023-12-25 | 2024-04-05 | 麒麟软件有限公司 | Linux系统中AOE网计算任务的调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108459966B (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459966A (zh) | 测试组件的调度方法、装置、设备和计算机可读存储介质 | |
Li et al. | Efficient online coflow routing and scheduling | |
Hou et al. | Allocation of periodic task modules with precedence and deadline constraints in distributed real-time systems | |
JP5845809B2 (ja) | 知的且つ動的なロードバランシングによる、分散コンピューティング環境におけるソフトウェアの解析の効率的な並列化の手法 | |
Ananthanarayanan et al. | Effective straggler mitigation: Attack of the clones | |
CN102681889B (zh) | 一种云计算开放平台的调度方法 | |
Ravi et al. | Adaptive job and resource management for the growing quantum cloud | |
JP5845812B2 (ja) | 分散コンピューティング環境におけるソフトウェアの解析の効率的な並列化のためのポリシーのスケジューリング | |
WO2014190149A1 (en) | Multiprocessor scheduling policy | |
Nasri et al. | An exact and sustainable analysis of non-preemptive scheduling | |
JP2002544621A (ja) | タスクスケジューリングおよびメッセージ受け渡し | |
Hou et al. | Allocation of periodic task modules with precedence and deadline constraints in distributed real-time systems | |
JP2012099109A (ja) | 分散コンピューティング環境におけるソフトウェアの解析の効率的な並列化のための動的且つ知的な部分的計算管理 | |
Alsulami et al. | Performance evaluation of dynamic round robin algorithms for CPU scheduling | |
CN110187956A (zh) | 一种多智能体平台的分层实时任务调度方法和系统 | |
JP5845810B2 (ja) | 分散コンピューティング環境におけるソフトウェアの解析の並列化のための効率的な部分計算 | |
Samii et al. | A simulation methodology for worst-case response time estimation of distributed real-time systems | |
Betz et al. | How fast is my software? latency evaluation for a ros 2 autonomous driving software | |
Hou et al. | Replication and allocation of task modules in distributed real-time systems | |
CN110275765A (zh) | 基于分支dag依赖的数据并行作业调度方法 | |
CN104346220A (zh) | 一种任务调度方法与系统 | |
Wang et al. | Real-time middleware for cyber-physical event processing | |
Leng et al. | Co-scheduling aperiodic real-time tasks with end-to-end firm and soft deadlines in two-stage systems | |
Ju et al. | A performance analysis methodology for multicore, multithreaded processors | |
Nasr et al. | Task scheduling algorithm for high performance heterogeneous distributed computing systems |
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 |