CN113791942B - 用于自动分发测试任务的方法和装置 - Google Patents
用于自动分发测试任务的方法和装置 Download PDFInfo
- Publication number
- CN113791942B CN113791942B CN202111105915.5A CN202111105915A CN113791942B CN 113791942 B CN113791942 B CN 113791942B CN 202111105915 A CN202111105915 A CN 202111105915A CN 113791942 B CN113791942 B CN 113791942B
- Authority
- CN
- China
- Prior art keywords
- test
- tasks
- machines
- machine
- groovy
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 414
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000004065 semiconductor Substances 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000013515 script Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002459 sustained effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000009662 stress testing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Abstract
本文公开了用于自动分发测试任务的方法和装置。根据本公开的一个方面,一种方法包括:针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;并行地在所分配的测试机器上执行所述多项测试任务;以及收集所述多项测试任务的测试结果。
Description
技术领域
本公开涉及用于自动分发测试任务的方法和装置。
背景技术
持续集成(Continuous Integration,简称为CI)/持续交付(ContinuousDelivery,简称为CD)与持续部署(Continuous Deployment,同样简称为CD)已经成为业界普遍采用的软件开发实践。CI/CD中的一个重要环节是自动化测试。
作为一款被广泛使用的开源CI/CD软件,Jenkins本质上是一个自动化引擎,其支持许多自动模式。Jenkins提供了丰富的选项和工具来方便用户通过配置Jenkins Job来实现在目标机器上分配包括测试在内的工作。然而,传统的通过Jenkins可视化界面的方式来配置测试工作在灵活性等方面存在很大欠缺,并不能很好地适应实际的复杂需求。
发明内容
在发明内容部分中,以简化的形式介绍一些选出的概念,其将在下面的具体实施方式部分中被进一步描述。该发明内容部分并非是要标识出所要求保护的主题的任何关键特征或必要特征,也不是要被用于帮助确定所要求保护的主题的范围。
根据本公开的一个方面,提供了一种用于自动分发测试任务的方法,包括:针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;并行地在所分配的测试机器上执行所述多项测试任务;以及收集所述多项测试任务的测试结果。
根据本公开的另一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,其耦合到所述至少一个处理器并用于存储指令,其中,所述指令在由所述至少一个处理器执行时,使得所述至少一个处理器:针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;并行地在所分配的测试机器上执行所述多项测试任务;以及收集所述多项测试任务的测试结果。
根据本公开的再一个方面,提供了一种用于自动分发测试任务的装置,包括用于执行本文中所述的任一方法的模块。
根据本公开的又一个方面,提供了一种计算机可读存储介质,其上存储有指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行本文中所述的任一方法。
根据本公开的另一个方面,提供了一种计算机程序产品,其包括指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行本文中所述的任一方法。
附图说明
在附图中对本公开的实现以示例的形式而非限制的形式进行了说明,附图中相似的附图标记表示相同或类似的部件,其中:
图1示出了根据本公开的一些实现的示例性系统;
图2示出了根据本公开的一些实现的示例性方法的流程图;
图3示出了根据本公开的一些实现的一个示例性测试模式;
图4示出了根据本公开的一些实现的一个示例性测试模式;
图5示出了根据本公开的一些实现的一个示例性测试模式;
图6示出了根据本公开的一些实现的示例性装置的框图;以及
图7示出了根据本公开的一些实现的示例性计算设备的框图。
具体实施方式
在以下的说明书中,出于解释的目的,阐述了大量具体细节。然而,应当理解的是,本公开的实现无需这些具体细节就可以实施。在其它实例中,并未详细示出公知的电路、结构和技术,以免影响对说明书的理解。
说明书通篇中对“一个实现”、“实现”、“示例性实现”、“一些实现”、“各种实现”等的引述表示所描述的本公开的实现可以包括特定的特征、结构或特性,然而,并不是说每个实现都必须要包含这些特定的特征、结构或特性。此外,一些实现可以具有针对其它实现描述的特征中的一些、全部,或者不具有针对其它实现描述的特征。
以最有助于理解所要求保护的主题的方式,可能会将各种操作描述为依次序的多个分立的动作或操作。然而,描述的次序并不应当被解释为暗示这些操作必然是依赖于次序的。尤其是,这些操作可以不按照所呈现的次序来执行。在另外的一些实现中,还可以执行各种另外的操作,和/或忽略各种已经描述的操作。
在说明书和权利要求书中,可能会出现的短语“A和/或B”用来表示以下之一:(A)、(B)、(A和B)。类似地,可能会出现的短语“A、B和/或C”用来表示以下之一:(A)、(B)、(C)、(A和B)、(A和C)、(B和C)、(A和B和C)。
在说明书和权利要求书中,可能会用到术语“耦合”和“连接”及其派生词。需要理解的是,这些术语并非是要作为彼此的同义词。相反,在特定的实现中,“连接”用于表示两个或更多部件彼此直接物理或电接触,而“耦合”则用于表示两个或更多部件彼此协作或交互,但是它们可能、也可能不直接物理或电接触。
首先参照图1,其示出了根据本公开的一些实现的示例性系统100。如图1所示,在一些实现中,系统100可以包括控制设备110和多台测试机器120(如图所示,120-1至120-N)。控制设备110和测试机器120可以通过网络130来彼此通信地耦合。
在一些实现中,控制设备110可以是诸如个人计算机(PC)、工作站、服务器这样的计算设备。尽管在图1中控制设备110被示出为单个设备,但是本领域技术人员可以理解的是,控制设备110也可以被实现为一组设备。例如,控制设备110可以被实施为服务器阵列或服务器集群。在一些实现中,控制设备110可以被部署在远离测试机器120的位置。在一些实现中,控制设备110或其至少一部分可以被部署在分布式计算环境中。例如,控制设备110可以被部署在云端,采用云计算技术来实现。在一些实现中,控制设备110的功能可以通过运行在其上的应用来实施,例如,控制设备110上可以部署有CI/CD软件,如Jenkins程序/服务,用以实施本文中所描述的操作,包括但不限于针对各测试机器120-1至120-N进行测试任务的自动分发。
网络130可以包括任意类型的有线或无线通信网络,或者有线和无线通信网络的组合。尽管图1中示出了单个网络130,但是网络130可以被配置为包括多个网络。此外,在一些实现中,控制设备110与各测试机器120-1至120-N之间也可以不通过网络130,而是直接连接,例如经由USB线缆或任何其它合适类型的线缆和/或连接器。
需要注意的是,结合图1描绘的系统100仅作为示例而非限制。例如,不同于图1中所示的单独的测试机器120的是,在一些替代的示例性实现中,各测试机器120-1至120-N可以是指专门构建的测试环境,例如可以是在控制设备110中构建的多个独立的运行环境,分别用来执行具体的测试任务/测试用例。本公开并不限于包括上述示例在内的某一种系统架构。
对于自动化测试,Jenkins的典型使用方式是由用户通过可视化界面来配置Jenkins Job以实现在目标测试机器上分配测试工作。然而,这种方式在配置的灵活性上存在很大不足。例如,采用这种配置方式,每一个测试工作(Job)仅对应于一台测试机器(也称为节点(node)),而对于一个测试工作包含多项测试任务(Task)这样的典型场景而言,这意味着多项测试任务均需要在该台测试机器上顺序地执行,因此该测试工作的总体测试时间就是其中包含的多项测试任务的执行时间的总和。如果要在多台测试机器上进行测试,则需要构建相应的多个测试工作,因此人工开发、修改、维护这些测试工作的工作量也随之递增,同时Jenkins系统负载也会变大。
接下来参考图2,其示出了根据本公开的一些实现的示例性方法200的流程图。方法200可以用于自动分发测试任务。方法200例如可以在图1中所示的控制设备110或任何类似的或相关的实体中实现。
如图2所示,方法200开始于步骤210,在该步骤中,针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器。典型地,每一项测试任务可以对应于一个测试用例,该测试用例的测试脚本将会在所分配的测试机器上执行,并根据执行结果来确定是否能达到测试用例的设计目标。
在根据本公开的一个实现中,所述测试工作用于针对半导体存储器的固件进行测试。例如,所述测试工作可以包括但不限于针对半导体存储器固件的性能测试、压力测试等。半导体存储器可以包括易失性存储器和非易失性存储器,其中,易失性存储器的示例可以包括随机存取存储器(RAM),其可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等;非易失性存储器的示例可以包括只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、闪速存储器(Flash Memory,通常简称为“闪存”)等等。
在针对闪存的固件进行测试的场景中,每一台测试机器可以包括待测的闪存芯片。闪存芯片可以通过专门的连接器(如插座)以及相应的线缆(如果有的话)来与控制设备相连,与所分配的测试任务对应的测试脚本将会在闪存芯片上执行。
在一个示例中,所述闪存芯片可以是NAND型闪存芯片,在另一个示例中,所述闪存芯片也可以是NOR型闪存芯片,然而本公开并不限于此。
尽管上面结合半导体存储器固件测试的具体应用进行了描述,然而本领域技术人员清楚的是,本公开并不限于上述特定实现。
此外,作为一个具体的非限制性的示例,所述方法可以使用Jenkins流水线(Jenkins Pipeline)操作。Jenkins流水线是Jenkins的一套插件,它提供了一组强大的可扩展的自动化工具,通过流水线领域专用语言(DSL)对从简单到复杂的交付流水线“作为代码”进行建模。对Jenkins流水线的定义被写在所创建的称为Jenkinsfile的文本文件中。Jenkins流水线支持Groovy语言语法。
更具体地,可以利用Jenkins构建一个测试工作(Job),其中包含多项(如N项,其中N>1)测试任务(Task)。采用Jenkins流水线所支持的脚本式流水线模式,步骤210中的分配操作可以包括:对于所述多项测试任务中的每一项测试任务,可以利用一个Groovy闭包(closure,其是一个被包装成对象的代码块,可以接受参数、可以返回值、并且可以被分配给变量)来指定该每一项测试任务所要执行的操作以及为该每一项测试任务分配的测试机器(Node)。相应地,所述分配还包括:构造Groovy闭包数组,所构造的该Groovy闭包数组可以包括对应于所述多项测试任务的多个Groovy闭包。
对于每一个Groovy闭包来说,在一个示例中,可以将测试任务对应的测试脚本包含在该Groovy闭包中。而在一个替代的示例中,可以在Groovy闭包中指明相应的测试脚本在代码仓库中的地址以供Jenkins在使用时去拉取。然而,本公开并不限于上述的特定实现。
对于测试机器的分配,根据本公开的一些实现,步骤210中为所述多项测试任务中的至少一项测试任务分配的测试机器是从包括多台测试机器的测试机器池中随机地选择的。作为一个具体的示例,可以为所述多项测试任务中的每一项测试任务,都随机地分配测试机器池中的一台测试机器,这也使得能够符合混合随机测试的需求。在一些实现中,所述测试机器池中的每一台测试机器可以具有相同的Node Label参数。因此,在Groovy闭包中,通过为测试任务指定一个Node Label而非具体的测试机器标识符,由此可以将所要求数目的具有该Node Label的测试机器随机地分配给该测试任务。
在一些替代的实现中,步骤210中的所述分配也可以是为一项测试任务分配具体的测试机器,例如可以通过指定相应的测试机器标识符的方式来实现这样的具体分配,而不是采用前述的随机分配方式。然而,本公开并不限于上述的特定实现。
在步骤210中为一个测试工作包括的多项测试任务中的每一项测试任务分配了不同的测试机器之后,方法200前进到步骤220,在该步骤中,并行地在所分配的测试机器上执行所述多项测试任务。考虑为每项测试任务分配了一台测试机器的情形,并行化可以将原本的“N项测试任务–1台测试机器”的串联模式转换为“1项测试任务–1台测试机器,并且N项测试任务并行在N台测试机器上执行”的模式,由此能够在测试机器充足的情况下最大化地利用测试资源,将总体测试时间由原先的N项测试任务串联执行的总时间(T_task1+T_task2+…+T_taskN)大大缩短为所述N项测试任务中单项测试任务的最大执行时间(Max{T_task1,T_task2,…,T_taskN})。继续前面的示例,在构造了包括对应于所述多项测试任务的多个Groovy闭包的Groovy闭包数组的情况下,步骤220中的所述执行可以包括利用Jenkins流水线的parallel语法实现所述Groovy闭包数组中的每一个Groovy闭包的并行运行。
然后,方法200进行步骤230,在该步骤中,收集所述多项测试任务的测试结果。具体地,在步骤220中在相应的测试节点上执行测试任务之后,测试节点可以将包括测试日志等在内的能够反映测试结果的信息进行上传,由此可以收集并汇总所述多项测试任务的测试结果。所收集的测试结果为后续的各种分析/报告提供了基础信息。
根据本公开的上述实现方式提高了测试任务自动分发的灵活性,其使得一个测试工作的多项测试任务能够一次并行分在不同的测试机器上执行,在大大降低总体测试时间的同时,也减少了开发和维护测试工作的工作量。
图3示出了根据本公开的一些实现的一个示例性测试模式。该模式可以对应于前面结合图2的流程图所描述的操作的一个具体示例。如图3所示,对于一个测试工作中的多项测试任务中的每一项测试任务,都分别为其分配测试机器,并行地在所分配的测试机器上执行所述多项测试任务,然后收集相应的测试结果以用于后续的分析和处理。
此外,考虑更复杂的场景,在根据本公开的一些实现中,前面所述的一个测试工作可以是多个测试工作其中之一。例如,一个测试工作可能是专门针对模块测试,另一个测试工作可能是专门针对性能测试,再一个测试工作可能是专门针对压力测试,等等,其中每一个测试工作都包含具体的多项测试任务。在这种情况下,所述多个测试工作中的每一个测试工作可以分别对应于一个不同的测试机器池,并且所述多个测试工作还能够并发执行。图4示出了根据本公开的一些实现的另一个示例性测试模式,即为与上述场景相对应的一个示例。
通过将可用的测试机器分为不同的测试机器池(例如,可以为同一个池中的所有测试机器配置相同的Node Label),可以控制不同测试工作选择不同测试机器池里的测试机器来执行,这种方式能够方便批量管理和区别化测试,而且不同测试工作之间的并发执行也不会引发对测试资源的争用。
此外,在根据本公开的一些实现中,步骤210中的所述分配可以包括为所述多项测试任务中的每一项测试任务分配多个测试机器池中的一个不同的测试机器池,其中,所述多个测试机器池中的每一个测试机器池包括多台测试机器。并且,步骤220中的所述执行可以包括:在为所述多项测试任务中的每一项测试任务分配的测试机器池中的全部测试机器上并行地执行该每一项测试任务,其中,所述多项测试任务是并行执行的。
也就是说,不同于前面举例中为每一项测试任务分配一台测试机器(例如,要么是通过具体指定特定一台的测试机器,要么是从一个池中随机选择一台测试机器)的情形,在这里描述的实现中,为每一项测试任务分配了多台不同的测试机器,并且为不同的测试任务分配的测试机器也是不同的,因为它们分别来自于不同的测试机器池。而且,在这样的实现中,以测试机器池为单位,一个池内的所有测试机器并行地执行相同的某一项测试任务,而且不同的测试任务在不同的测试机器池之间也是并行执行的。
作为一个具体的非限制性的示例,可以利用Jenkins流水线的nodesByLabel语法获取一个测试机器池(其中的测试机器具有相同的Node Label)内的所有测试机器的信息,然后,利用前面描述的Groovy闭包结构和Jenkins流水线parallel语法将一项测试任务安排在上面遍历得到的所有测试机器上并行执行。而且,以类似的方式,还可以配置将多项测试任务在不同的测试机器池之间并行执行。
与上述场景相对应的一个示例可以参见图5,其示出了根据本公开的一些实现的另一个示例性测试模式。
以池为单位的测试可以方便通过单项测试任务对一个测试机器池中的所有测试机器同时进行统一配置,而且以池为单位的测试也便于比较单项测试任务在该测试机器池内的所有测试机器上的性能差异,同时,双层并行执行模式(池内并行+池间并行)也能够更进一步地提高执行效率。
下面参考图6,其示出了根据本公开的一些实现的示例性装置600的框图。装置600可以用于实现测试任务的自动分发。装置600例如可以在图1中所示的控制设备110或任何类似的或相关的实体中实现。
如图6所示,装置600可以包括模块610,其用于针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器。装置600还可以包括模块620,其用于并行地在所分配的测试机器上执行所述多项测试任务。此外,装置600还可以包括处理模块630,其用于收集所述多项测试任务的测试结果。
此外,在一些实现中,装置600的上述模块中的一个或多个中还可以包括进一步的子模块、和/或装置600还可以包括附加的模块,用于执行说明书中已经描述的其它操作,例如结合图2的示例性方法200的流程图而描述的。此外,在一些实现中,装置600的各种模块还可以取决于实际需求进行组合或拆分。上述及其它变型均落入本公开的范围之内。
本领域技术人员可以理解,示例性装置600可以用软件、硬件、固件、或其任意组合来实现。
图7示出了根据本公开的一些实现的示例性计算设备700的框图。计算设备700可以用于实现测试任务的自动分发。计算设备700例如可以在图1中所示的控制设备110或任何类似的或相关的实体中实现。
如图7所示,计算设备700可以包括至少一个处理器710。处理器710可以包括任意类型的通用处理单元(例如:CPU、GPU,等等)、专用处理单元、核心、电路、控制器,等等。此外,计算设备700还可以包括耦合到处理器710的存储器720。存储器720可以包括任意类型的可以用于存储数据的介质。在一些实现中,存储器720被配置为存储指令,所述指令在执行时使得至少一个处理器710执行本公开中描述的操作,例如,结合图2的示例性方法200的流程图而描述的。
此外,在一些实现中,计算设备700还可以耦合到或配备有一种或多种外设部件,所述外设部件可以包括但不限于显示器、扬声器、鼠标、键盘,等等。另外,在一些实现中,计算设备700还可以配备有通信接口,其可以支持各种类型的有线/无线通信协议以与通信网络进行通信。通信网络的示例可以包括但不限于:局域网(LAN)、城域网(MAN)、广域网(WAN)、公共电话网、互联网、内联网、物联网、红外网络、蓝牙网络、近场通信(NFC)网络、ZigBee网络,等等。
此外,在一些实现中,上述及其它部件之间可以经由一种或多种总线/互连来相互通信,所述总线/互连可以支持任何合适的总线/互连协议,包括外围组件互连(PCI)、快速PCI快速、通用串行总线(USB)、串行附接SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、系统管理总线(SMBus),或其它合适的协议。
本领域技术人员可以理解,对于计算设备700的结构的上述描述仅仅是示例性而非限制性的,其它结构的设备也是可行的,只要能够用来实现本公开中所讨论的功能。
本公开的各种实现可以使用硬件单元、软件单元或其组合来实现。硬件单元的示例可以包括设备、部件、处理器、微处理器、电路、电路元件(例如、晶体管、电阻器、电容器、电感器,等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组,等等。软件单元的示例可以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。确定一个实现是使用硬件单元和/或软件单元来实施的可以取决于多种因素而变化,例如期望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度,以及其它的设计或性能约束,正如一个给定的实现所期望的。
本公开的一些实现可以包括制品。制品可以包括存储介质,其用于存储逻辑。存储介质的示例可以包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器,等等。逻辑的示例可以包括各种软件单元,例如软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。在一些实现中,例如,制品可以存储可执行的计算机程序指令,其在被处理器执行时,使得处理器执行本文中所述的方法和/或操作。可执行的计算机程序指令可以包括任意合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码,等等。可执行的计算机程序指令可以根据预定义的用于命令计算机来执行特定功能的计算机语言、方式或语法来实现。所述指令可以使用任意适当的高级的、低级的、面向对象的、可视化的、编译的和/或解释的编程语言来实现。
下面描述本公开的一些示例性实现。
示例1可以包括一种用于自动分发测试任务的方法,所述方法包括:针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;并行地在所分配的测试机器上执行所述多项测试任务;以及收集所述多项测试任务的测试结果。
示例2可以包括示例1所述的主题,其中,所述方法使用Jenkins流水线操作,并且其中,所述分配包括:对于所述多项测试任务中的每一项测试任务,利用一个Groovy闭包来指定该每一项测试任务所要执行的操作以及为该每一项测试任务分配的测试机器;以及构造Groovy闭包数组,该Groovy闭包数组包括对应于所述多项测试任务的多个Groovy闭包,所述执行包括:利用Jenkins流水线的parallel语法实现所述Groovy闭包数组中的每一个Groovy闭包的并行运行。
示例3可以包括示例1-2中的任意一项所述的主题,其中,为所述多项测试任务中的至少一项测试任务分配的测试机器是从包括多台测试机器的测试机器池中随机地选择的。
示例4可以包括示例1-3中的任意一项所述的主题,其中,所述测试机器池中的每一台测试机器具有相同的Node Label参数。
示例5可以包括示例1-4中的任意一项所述的主题,其中,所述测试工作是多个测试工作其中之一,所述多个测试工作中的每一个测试工作对应于一个不同的测试机器池,所述多个测试工作能够并发执行。
示例6可以包括示例1-5中的任意一项所述的主题,其中,所述分配包括:为所述多项测试任务中的每一项测试任务分配多个测试机器池中的一个不同的测试机器池,其中,所述多个测试机器池中的每一个测试机器池包括多台测试机器;所述执行包括:在为所述多项测试任务中的每一项测试任务分配的测试机器池中的全部测试机器上并行地执行该每一项测试任务,其中,所述多项测试任务是并行执行的。
示例7可以包括示例1-6中的任意一项所述的主题,其中,所述测试工作用于针对半导体存储器的固件进行测试。
示例8可以包括示例1-7中的任意一项所述的主题,其中,所述至少一台测试机器中的每一台测试机器包括待测的闪存芯片。
示例9可以包括示例1-8中的任意一项所述的主题,其中,所述闪存芯片是NAND型闪存芯片或NOR型闪存芯片。
示例10可以包括一种计算设备,所述计算设备包括:至少一个处理器;以及存储器,其耦合到所述至少一个处理器并用于存储指令,其中,所述指令在由所述至少一个处理器执行时,使得所述至少一个处理器:针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;并行地在所分配的测试机器上执行所述多项测试任务;以及收集所述多项测试任务的测试结果。
示例11可以包括示例10所述的主题,其中,所述至少一个处理器执行Jenkins流水线操作,并且其中,所述分配包括:对于所述多项测试任务中的每一项测试任务,利用一个Groovy闭包来指定该每一项测试任务所要执行的操作以及为该每一项测试任务分配的测试机器;以及构造Groovy闭包数组,该Groovy闭包数组包括对应于所述多项测试任务的多个Groovy闭包,所述执行包括:利用Jenkins流水线的parallel语法实现所述Groovy闭包数组中的每一个Groovy闭包的并行运行。
示例12可以包括示例10-11中的任意一项所述的主题,其中,为所述多项测试任务中的至少一项测试任务分配的测试机器是从包括多台测试机器的测试机器池中随机地选择的。
示例13可以包括示例10-12中的任意一项所述的主题,其中,所述测试机器池中的每一台测试机器具有相同的Node Label参数。
示例14可以包括示例10-13中的任意一项所述的主题,其中,所述测试工作是多个测试工作其中之一,所述多个测试工作中的每一个测试工作对应于一个不同的测试机器池,所述多个测试工作能够并发执行。
示例15可以包括示例10-14中的任意一项所述的主题,其中,所述分配包括:为所述多项测试任务中的每一项测试任务分配多个测试机器池中的一个不同的测试机器池,其中,所述多个测试机器池中的每一个测试机器池包括多台测试机器,所述执行包括:在为所述多项测试任务中的每一项测试任务分配的测试机器池中的全部测试机器上并行地执行该每一项测试任务,其中,所述多项测试任务是并行执行的。
示例16可以包括示例10-15中的任意一项所述的主题,其中,所述测试工作用于针对半导体存储器的固件进行测试。
示例17可以包括示例10-16中的任意一项所述的主题,其中,所述至少一台测试机器中的每一台测试机器包括待测的闪存芯片。
示例18可以包括示例10-17中的任意一项所述的主题,其中,所述闪存芯片是NAND型闪存芯片或NOR型闪存芯片。
示例19可以包括一种用于自动分发测试任务的装置,所述装置包括:用于针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器的模块;用于并行地在所分配的测试机器上执行所述多项测试任务的模块;以及用于收集所述多项测试任务的测试结果的模块。
示例20可以包括示例19所述的主题,其中,所述装置执行Jenkins流水线操作,并且其中,所述分配包括:对于所述多项测试任务中的每一项测试任务,利用一个Groovy闭包来指定该每一项测试任务所要执行的操作以及为该每一项测试任务分配的测试机器;以及构造Groovy闭包数组,该Groovy闭包数组包括对应于所述多项测试任务的多个Groovy闭包,所述执行包括:利用Jenkins流水线的parallel语法实现所述Groovy闭包数组中的每一个Groovy闭包的并行运行。
示例21可以包括示例19-20中的任意一项所述的主题,其中,为所述多项测试任务中的至少一项测试任务分配的测试机器是从包括多台测试机器的测试机器池中随机地选择的。
示例22可以包括示例19-21中的任意一项所述的主题,其中,所述测试机器池中的每一台测试机器具有相同的Node Label参数。
示例23可以包括示例19-22中的任意一项所述的主题,其中,所述测试工作是多个测试工作其中之一,所述多个测试工作中的每一个测试工作对应于一个不同的测试机器池,所述多个测试工作能够并发执行。
示例24可以包括示例19-23中的任意一项所述的主题,其中,所述分配包括:为所述多项测试任务中的每一项测试任务分配多个测试机器池中的一个不同的测试机器池,其中,所述多个测试机器池中的每一个测试机器池包括多台测试机器;所述执行包括:在为所述多项测试任务中的每一项测试任务分配的测试机器池中的全部测试机器上并行地执行该每一项测试任务,其中,所述多项测试任务是并行执行的。
示例25可以包括示例19-24中的任意一项所述的主题,其中,所述测试工作用于针对半导体存储器的固件进行测试。
示例26可以包括示例19-25中的任意一项所述的主题,其中,所述至少一台测试机器中的每一台测试机器包括待测的闪存芯片。
示例27可以包括示例19-26中的任意一项所述的主题,其中,所述闪存芯片是NAND型闪存芯片或NOR型闪存芯片。
示例28可以包括一种计算机可读存储介质,其上存储有指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行示例1-9中的任意一项所述的方法。
示例29可以包括一种计算机程序产品,其包括指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行根据示例1-9中的任意一项所述的方法。
上面已经描述的包括所公开的架构的示例。当然并不可能描述部件和/或方法的每种可以想见的组合,但是本领域技术人员可以理解,许多其它的组合和排列也是可行的。因此,该新颖架构旨在涵盖落入所附权利要求的精神和范围之内的所有这样的替代、修改和变型。
Claims (19)
1.一种用于自动分发测试任务的方法,包括:
针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;
并行地在所分配的测试机器上执行所述多项测试任务;以及
收集所述多项测试任务的测试结果,
其中,
所述分配包括:
为所述多项测试任务中的每一项测试任务分配多个测试机器池中的一个不同的测试机器池,其中,所述多个测试机器池中的每一个测试机器池包括多台测试机器;
所述执行包括:
在为所述多项测试任务中的每一项测试任务分配的测试机器池中的全部测试机器上并行地执行该每一项测试任务,其中,所述多项测试任务是并行执行的。
2.根据权利要求1所述的方法,其中,所述方法使用Jenkins流水线操作,并且其中,
所述分配包括:
对于所述多项测试任务中的每一项测试任务,利用一个Groovy闭包来指定该每一项测试任务所要执行的操作以及为该每一项测试任务分配的测试机器;以及
构造Groovy闭包数组,该Groovy闭包数组包括对应于所述多项测试任务的多个Groovy闭包,
所述执行包括:
利用Jenkins流水线的parallel语法实现所述Groovy闭包数组中的每一个Groovy闭包的并行运行。
3.根据权利要求1或2所述的方法,其中,为所述多项测试任务中的至少一项测试任务分配的测试机器是从包括多台测试机器的测试机器池中随机地选择的。
4.根据权利要求3所述的方法,其中,所述测试机器池中的每一台测试机器具有相同的Node Label参数。
5.根据权利要求3所述的方法,其中,所述测试工作是多个测试工作其中之一,所述多个测试工作中的每一个测试工作对应于一个不同的测试机器池,所述多个测试工作能够并发执行。
6.根据权利要求1所述的方法,其中,所述测试工作用于针对半导体存储器的固件进行测试。
7.根据权利要求6所述的方法,其中,所述至少一台测试机器中的每一台测试机器包括待测的闪存芯片。
8.根据权利要求7所述的方法,其中,所述闪存芯片是NAND型闪存芯片或NOR型闪存芯片。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,其耦合到所述至少一个处理器并用于存储指令,其中,所述指令在由所述至少一个处理器执行时,使得所述至少一个处理器:
针对一个测试工作包括的多项测试任务中的每一项测试任务,为该每一项测试任务分配至少一台测试机器;
并行地在所分配的测试机器上执行所述多项测试任务;以及
收集所述多项测试任务的测试结果,
其中,
所述分配包括:
为所述多项测试任务中的每一项测试任务分配多个测试机器池中的一个不同的测试机器池,其中,所述多个测试机器池中的每一个测试机器池包括多台测试机器;
所述执行包括:
在为所述多项测试任务中的每一项测试任务分配的测试机器池中的全部测试机器上并行地执行该每一项测试任务,其中,所述多项测试任务是并行执行的。
10.根据权利要求9所述的计算设备,其中,所述至少一个处理器执行Jenkins流水线操作,并且其中,
所述分配包括:
对于所述多项测试任务中的每一项测试任务,利用一个Groovy闭包来指定该每一项测试任务所要执行的操作以及为该每一项测试任务分配的测试机器;以及
构造Groovy闭包数组,该Groovy闭包数组包括对应于所述多项测试任务的多个Groovy闭包,
所述执行包括:
利用Jenkins流水线的parallel语法实现所述Groovy闭包数组中的每一个Groovy闭包的并行运行。
11.根据权利要求9或10所述的计算设备,其中,为所述多项测试任务中的至少一项测试任务分配的测试机器是从包括多台测试机器的测试机器池中随机地选择的。
12.根据权利要求11所述的计算设备,其中,所述测试机器池中的每一台测试机器具有相同的Node Label参数。
13.根据权利要求11所述的计算设备,其中,所述测试工作是多个测试工作其中之一,所述多个测试工作中的每一个测试工作对应于一个不同的测试机器池,所述多个测试工作能够并发执行。
14.根据权利要求9所述的计算设备,其中,所述测试工作用于针对半导体存储器的固件进行测试。
15.根据权利要求14所述的计算设备,其中,所述至少一台测试机器中的每一台测试机器包括待测的闪存芯片。
16.根据权利要求15所述的计算设备,其中,所述闪存芯片是NAND型闪存芯片或NOR型闪存芯片。
17.一种用于自动分发测试任务的装置,包括用于执行根据权利要求1-8中的任意一项所述的方法的模块。
18.一种计算机可读存储介质,其上存储有指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行根据权利要求1-8中的任意一项所述的方法。
19.一种计算机程序产品,其包括指令,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行根据权利要求1-8中的任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111105915.5A CN113791942B (zh) | 2021-09-22 | 2021-09-22 | 用于自动分发测试任务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111105915.5A CN113791942B (zh) | 2021-09-22 | 2021-09-22 | 用于自动分发测试任务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113791942A CN113791942A (zh) | 2021-12-14 |
CN113791942B true CN113791942B (zh) | 2024-04-19 |
Family
ID=78878982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111105915.5A Active CN113791942B (zh) | 2021-09-22 | 2021-09-22 | 用于自动分发测试任务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113791942B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678965A (zh) * | 2017-09-30 | 2018-02-09 | 千寻位置网络有限公司 | 自动集成测试方法及系统、服务终端、存储器 |
CN107992362A (zh) * | 2016-10-27 | 2018-05-04 | 北京京东尚科信息技术有限公司 | 自动化性能测试的方法、装置及系统 |
CN110750453A (zh) * | 2019-09-24 | 2020-02-04 | 彩讯科技股份有限公司 | 基于html5的智能移动端测试方法、系统、服务器及存储介质 |
CN112328498A (zh) * | 2020-11-27 | 2021-02-05 | 京东数字科技控股股份有限公司 | 业务的测试方法和装置、存储介质、电子装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050096864A1 (en) * | 2003-10-31 | 2005-05-05 | Bonilla Carlos A. | Method and system for managing a testing task |
US11354223B2 (en) * | 2020-03-04 | 2022-06-07 | Micro Focus Llc | Maximally parallel test script execution |
-
2021
- 2021-09-22 CN CN202111105915.5A patent/CN113791942B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992362A (zh) * | 2016-10-27 | 2018-05-04 | 北京京东尚科信息技术有限公司 | 自动化性能测试的方法、装置及系统 |
CN107678965A (zh) * | 2017-09-30 | 2018-02-09 | 千寻位置网络有限公司 | 自动集成测试方法及系统、服务终端、存储器 |
CN110750453A (zh) * | 2019-09-24 | 2020-02-04 | 彩讯科技股份有限公司 | 基于html5的智能移动端测试方法、系统、服务器及存储介质 |
CN112328498A (zh) * | 2020-11-27 | 2021-02-05 | 京东数字科技控股股份有限公司 | 业务的测试方法和装置、存储介质、电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113791942A (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10338956B2 (en) | Application profiling job management system, program, and method | |
US20100223213A1 (en) | System and method for parallelization of machine learning computing code | |
US20230153158A1 (en) | Method, apparatus, system, and storage medium for performing eda task | |
US20130219226A1 (en) | Distributed testing within a serial testing infrastructure | |
CN109815141B (zh) | 一种测试方法和装置 | |
CN107832151B (zh) | 一种cpu资源分配方法、装置及设备 | |
CN105700956A (zh) | 用于处理分布式作业的方法和系统 | |
CN111176818A (zh) | 分布式预测的方法、装置、系统、电子设备及存储介质 | |
CN113791942B (zh) | 用于自动分发测试任务的方法和装置 | |
US9519566B2 (en) | Modeling memory use of applications | |
CN113051173B (zh) | 测试流程的编排执行方法、装置、计算机设备和存储介质 | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
US9262141B1 (en) | Distributed computations of graphical programs having a pattern | |
US11663465B2 (en) | Method of managing task performance in an artificial neural network, and system executing an artificial neural network | |
US11163594B2 (en) | Rescheduling JIT compilation based on jobs of parallel distributed computing framework | |
CN110705191B (zh) | 一种多形态模拟仿真验证环境的构建方法 | |
US11954512B2 (en) | Control device and control method | |
CN113704687B (zh) | 一种张量计算运行方法、装置及运算系统 | |
CN115809620B (zh) | 仿真逻辑系统设计的方法、电子设备和存储介质 | |
KR102255365B1 (ko) | 이기종 온디바이스 시스템에서의 그래프 기반 영상 처리 모델 실행 최적화 장치 및 그 방법 | |
US11983090B2 (en) | Setting breakpoints for source code segments enclosed by macros | |
US20230259444A1 (en) | Setting breakpoints for source code segments enclosed by macros | |
WO2022000371A1 (zh) | 接口生成方法、装置及计算机可读存储介质 | |
US10379828B2 (en) | Parallelization method, parallelization tool, and in-vehicle device | |
CN118051298A (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 | ||
GR01 | Patent grant |