CN114138626A - 用于自动化固件测试的水平可扩展分布式系统及其方法 - Google Patents
用于自动化固件测试的水平可扩展分布式系统及其方法 Download PDFInfo
- Publication number
- CN114138626A CN114138626A CN202111032760.7A CN202111032760A CN114138626A CN 114138626 A CN114138626 A CN 114138626A CN 202111032760 A CN202111032760 A CN 202111032760A CN 114138626 A CN114138626 A CN 114138626A
- Authority
- CN
- China
- Prior art keywords
- test
- stations
- queue
- station
- execution entity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/328—Computer systems status display
-
- 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/3676—Test management for coverage analysis
-
- 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/3692—Test management for test results analysis
-
- 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/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种系统,其具有用于自动化固件测试的水平可扩展分布式架构。该系统包括:测试站,用于测试固件产品,这些测试站被划分为池,每个池包括多个测试站;以及多个执行实体,每个执行实体用于执行与关联的池相对应的测试。每个竞争测试站向相应的执行实体发送测试启动事件。相应的执行实体从竞争测试站接收测试启动事件,并且对竞争测试站之中的选择测试站执行运行测试命令,使得选择测试站基于测试序列执行测试执行。
Description
技术领域
本发明的实施例涉及一种用于测试电子装置的固件的方案。
背景技术
电子装置以各种形式被广泛使用。大型电子装置的示例包括台式计算机、工作站、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器和/或数字视频记录器和数字视频播放器。还有各种便携式电子装置,例如移动电话、智能电话、电子书、MP3播放器、便携式多媒体播放器(PMP)和便携式游戏机。
电子装置可以利用包括存储器系统(或存储装置)的各种组件实现,其中包括硬件(HW)和软件(SW)。存储器系统的示例包括硬盘驱动器(HDD)、固态驱动器(SSD)、通用串行总线(USB)存储器装置以及诸如安全数字(SD)卡和通用闪存(UFS)的存储卡。可能需要对电子装置的组件进行测试。在这种情况下,提出了本发明的实施例。
发明内容
本发明的方面包括具有用于自动化固件测试的水平可扩展分布式架构的系统及其方法。
一方面,系统包括:多个测试站,用于测试多个固件产品,多个测试站被划分成多个池,每个池包括多个测试站;以及多个执行实体(execution instances),每个执行实体用于执行与关联的池相对应的测试。多个测试站之中的每个竞争测试站向相应的执行实体传递测试启动事件。相应的执行实体从竞争测试站接收测试启动事件,并对竞争测试站之中的选择测试站执行运行测试命令,使得选择测试站基于测试序列执行测试执行(testexecution)。
另一方面,一种操作测试系统的方法包括:将用于测试多个固件产品的多个测试站划分为多个池,每个池包括多个测试站;由多个测试站之中的每个竞争测试站向多个执行实体之中的相应执行实体传递测试启动事件,每个执行实体用于执行与关联的池相对应的测试;通过相应的执行实体从竞争测试站接收测试启动事件;并且通过相应的执行实体对竞争测试站之中的选择测试站执行运行测试命令,使得选择测试站基于测试序列执行测试执行。
通过以下描述,本发明的其他方面将变得显而易见。
附图说明
图1是示出根据本发明实施例的测试实验室的示意图。
图2是示出根据本发明实施例的被划分为池的多个站的示图。
图3是示出根据本发明实施例的执行实体被缩放的机制的示图。
图4是示出根据本发明实施例的测试站池和执行实体之间的通信的示图。
图5是示出根据本发明实施例的代理的状态的示图。
图6是示出根据本发明实施例的执行实体的结构的示图。
图7是示出根据本发明实施例的测试执行过程的示图。
图8是示出根据本发明实施例的测试系统的性能的示图。
具体实施方式
下面参考附图更详细地描述各个实施例。然而,本发明可以以不同形式实施,因此不应被解释为限于本文所阐述的实施例。相反,提供这些实施例以使得本公开是彻底且完整的,并且向本领域技术人员充分传达了本发明的范围。此外,本文中对“实施例”、“另一实施例”等的引用不一定仅指一个实施例,并且对任何此类短语的不同引用不一定指相同的实施例。本文使用的术语“实施例”不一定指所有实施例。在整个公开中,相同的附图标记表示本发明的附图和实施例中的相同的部分。
本发明可以多种方式实施,包括进程;设备;系统;嵌入在计算机可读存储介质上的计算机程序产品;和/或处理器,例如适用于执行存储在联接到处理器的存储器上的指令和/或由联接到处理器的存储器提供的指令的处理器。在本说明书中,这些实施方案或本发明可能采取的任何其他形式可称为技术。一般来说,在本发明的范围内,可以改变所公开的进程的步骤的顺序。除非另有说明,否则诸如被描述为适用于执行任务的处理器或存储器之类的组件可以被实现为通用组件或特定组件,通用组件被临时配置成在给定时间执行任务,特定组件被制造为执行任务。如本文所使用的,术语“处理器”等指适合于处理数据(例如计算机程序指令)的一个或多个装置、电路和/或处理内核。
下面提供了本发明实施例的详细说明以及说明本发明的方面的附图。结合这些实施例描述本发明,但本发明不限于任何实施例。本发明的范围仅由权利要求限制。本发明包括权利要求范围内的许多替代方案、修改和等效方案。为了提供对本发明的透彻理解,在以下描述中阐述了许多具体细节。提供这些细节是为了举例;可以根据权利要求实施本发明,而不需要这些特定细节的部分或全部。为清楚起见,未详细描述在与本发明相关的技术领域中已知的技术材料,以便不会不必要地模糊本发明。
需要对电子装置的组件(或产品)进行测试。特别地,需要对电子装置的软件(或固件)产品进行测试。固件是一类特定的计算机软件,其为装置的特定硬件提供低级控制。包含固件的电子装置的典型示例是嵌入式系统、消费类电器、计算机、计算机外围设备和存储器系统(或存储装置)。固件可以保存在例如只读存储器(ROM)、电可编程只读存储器(EPROM)或闪速存储器的非易失性存储器装置中。
自动化软件(或固件)测试需要同时运行大量测试。隔离环境中的测试站或机器用于执行单独的有限的测试序列。同时执行的测试数量的增加导致如图1所示的测试站数量的增加。
参考图1,测试实验室10包括测试控制器或分配器11和L个测试站(或机器),分别和共同由12标识,以及K个待测试产品,分别和共同由13标识。Ri测试14将在L个测试站上运行,以测试K个产品,其中i=1,…,K。测试分配器11可以包括用于控制K个产品上的测试的处理器11A。举例来说,测试实验室10可以测试嵌入诸如存储器系统(或存储装置)的电子装置中的组件或产品(即,固件产品)的固件。
在测试实验室10中,测试站12和处理测试14的协调(orchestration)会导致沉重的计算负载。这种计算负载不能仅通过测试实验室10的垂直缩放(vertical scaling)来处理。通常,待执行的测试比可供执行的测试站多得多。这引发了另一个问题:测试站分配期间的高并发性(concurrency)。因此,根据实施例的测试系统可以提供一种架构,该架构允许对大规模执行自动化测试的任务应用水平缩放,并处理测试站的测试之间的高并发性。
为了管理较大数量的测试站,实施例可以将多台机器划分(或分组)为池,并将每个池连接到系统组件的单独子集:独立执行实体。在图2所示的实施例中,测试系统可包括用于测试多个产品的多个测试站100。例如,产品可包括嵌入式固件,即固件产品。多个测试站100可被划分为多个池200。例如,第一池201包括多个(例如,M个)测试站TS11至TS1M,第二池202包括M个测试站TS21至TS2M,第n池20N包括M个测试站TSN1至TSNM。尽管图2示出了每个池具有相同数量的测试站,但是每个池中的测试站的数量可以不同。在一些实施例中,根据待测试产品(例如,存储器系统的固件产品)的设定特征:在存储器系统中使用的硬件、在存储器系统中使用的操作系统、存储器系统中的可用存储器(例如,RAM)和/或存储器装置(例如,HDD)的数量,来对测试站分组。
此外,测试系统可包括多个执行实体300。每个执行实体可对相应池中的测试站执行测试。例如,第一执行实体301对第一池201的测试站执行测试,第二执行实体302对第二池202的测试站执行测试,第N执行实体30N对第N池20N的测试站执行测试。执行实体可以是一个单独的环境,其中有许多组件负责整个测试执行过程。每个执行实体可以管理测试站的池。待执行的一组测试与特定池中的测试站有关系。
根据图2的结构,实施例可以通过增加独立的执行实体的数量来实现水平缩放。此外,实施例通过逆转测试站和测试之间的分配流来提供高并发性问题的解决方案。换言之,实施例实现了测试站竞争测试的方案而不是测试竞争测试站的方案。此方案可能会显著降低并发性(即同时执行),因为测试站的数量总是远远少于测试的数量。参考图3至图7,描述图2中的测试系统的结构和方案。
图3是示出根据本发明实施例的执行实体被缩放的机制的示图。
参考图3,多个执行实体300可以包括并行的N个执行实体301至30N(其中N是执行实体的数量),并且联接到主(或主要)实体400。N个执行实体301至30N和主实体400可以是图1中测试控制器11的组件,其负责测试执行过程。此外,主实体400可以包括联接到测试控制器11的用户接口,以及测试控制器11和用户之间的接口。为了启动测试,主实体400可以向消息系统500发送与测试相关联的消息。
消息系统500可以组织主实体400和执行实体301至30N之间的通信。消息系统500可以包括消息代理(message broker)510、实体测试队列520和测试结果队列530。消息代理510可使用设定队列路由机制将与来自主接口400的测试相关联的消息放入适当的实体测试队列520。实体测试队列520可包括实体测试队列521至52N,其分别对应于执行实体301至30N。例如,消息代理510可以将与执行实体301的测试相关联的消息放入实体测试队列521中。
执行实体301至30N中的每一个都可以独立地从其自身的队列获取消息,并基于这些消息处理测试。在完成测试之后,执行实体301到30N中的每一个都可以将测试结果放入相应的传出测试结果队列530中。
图4是示出根据本发明实施例的测试站池201和第一执行实体301之间的通信的示图。
参考图4,测试站池201可包括多个测试站,每个测试站都可包括代理,该代理是在其上启动的特殊系统软件。换言之,测试站池201可以包括多个代理211至21M。每个代理负责对相应的测试站执行远程命令。第一执行实体301可经由设定接口(例如,远程过程调用(RPC)协议)联接到多个代理211至21M。
多个代理211至21M可以竞争访问第一执行实体301。换言之,与多个代理211至21M相对应的多个测试站可以通过向第一执行实体301传递测试请求(即测试启动事件)来竞争测试。当从竞争的多个测试站接收到测试启动事件时,第一执行实体301可以在竞争的测试启动事件之中选择测试启动事件以进行测试执行。在一些实施例中,第一执行实体301可以在竞争的测试启动事件之中选择首先被接收并存储在队列(例如,图6的空闲队列)中的测试启动事件。
图5是示出根据本发明实施例的代理的状态的示图。
参考图5,代理在相应测试站的生命周期中可以处于“空闲”、“运行”和“完成”的多个状态之一。状态“空闲”表示测试站不忙碌,并准备开始执行某些测试序列。状态“运行”表示测试站正在执行测试。状态“已完成”表示测试站已完成测试执行,并准备提供测试结果。
图6是示出根据本发明实施例的执行实体301的结构的示图。其余执行实体302至30N中的每一个可以具有相同的结构。
参考图6,执行实体301可如图3所示联接到主实体400,并且可如图4所示联接到测试站池201。测试站池201可包括其中具有已启动的代理211至21M的测试站。每个代理可以连接到执行实体301。当每个代理改变状态时,该事件可以被报告给执行实体301。
执行实体301可以包括测试引擎310、代理管理器320、状态队列330A至330C、传入命令队列340A和外部事件队列340B。传入命令队列340A可对应于图3的实体测试队列521,外部事件队列340B可对应于图3的传出测试结果队列530。
代理管理器320可经由设定协议(例如,RPC协议)与代理201通信,并且可充当代理链路,处理来自测试站池201的测试站的事件,并根据来自代理211的事件的类型将这些事件转换为单独队列330A至330C中的消息。代理211可产生与每个代理的状态(空闲、运行和完成)相对应的三种类型的事件。此外,代理管理器320可以向执行实体301的其他组件提供设定接口,例如超文本传输协议(HTTP)接口。通过HTTP接口,可以获得关于单个测试站的信息并对其执行命令。
在一些实施例中,如下所述,测试引擎310内具有各种逻辑单元。代理211的事件可通过测试引擎310的单独部分获得。
测试引擎310可包括准备器(或干预器)311、资源分配器312、操作高速缓存313、测试启动器314A、测试完成器314B和测试状态改变器314C。操作高速缓存313可以是永久存储器,其存储关于正在运行的测试序列的数据。例如,关于正在运行的测试序列的数据包括待运行的测试序列、代理的状态(例如,哪个代理正在运行)以及与测试相关联的元信息。
准备器/干预器311可通过传入命令队列340A从主实体400接收关于启动/停止测试序列的命令消息。换言之,准备器/干预器311可以使用传入命令队列340A上的命令消息并处理这些命令。准备器/干预器311可以转换测试序列并将其保存在操作高速缓存313中,并且准备带有对测试站运行测试所需的工作(artifact)的文件。工作表示在自动化测试过程中涉及的项目(例如,待测试的确切固件构建、带有测试框架的封装、可执行的测试本身等)。资源分配器312可以动态地将资源分配给测试站。在一些实施例中,资源分配器312可以基于测试站的优先级将资源分配给测试站。美国专利序列号为16/825,721、标题为“用于产品测试的基于优先级的动态资源分配”的申请中描述了基于优先级的动态资源分配的一种实施方案,其内容通过引用并入本文。
测试启动器314A可对来自测试站池201的测试站的空闲事件作出反应,该空闲事件存储在空闲队列330A中。测试启动器314A可选择将在确切的站启动的测试(发出空闲信号),并形成启动该测试的命令。测试状态改变器314C可以更新操作高速缓存313中的测试状态。测试完成器314B可以对来自测试站池201的测试站的完成事件作出反应。测试完成器314B可以从测试站获取测试日志,分析并转换测试日志,并且将关于测试日志的信息作为测试结果通过外部事件队列340B提供给主实体400。
如上所述,多个测试站(每个测试站对应于关联的测试站池201中的M个多代理)可以通过向执行实体301传递测试请求(即测试启动事件)来竞争测试。当从竞争的多个测试站接收到测试启动事件时,执行实体301可以在竞争的测试启动事件之中选择测试启动事件用于执行测试。在一些实施例中,执行实体301可以在竞争测试启动事件中选择首先被接收并存储在空闲队列330A中的测试启动事件。
图7是示出根据本发明实施例的测试执行过程的示图。作为示例而非限制,测试执行过程可在图6中的代理211和执行实体301之间执行。相同的测试执行过程可在其他代理和执行实体301之间执行。
参考图7,测试执行过程由测试活动触发。在一些实施例中,测试活动由终端用户经由用户接口生成,作为主实体400的一部分。响应于测试活动,主实体400可以将开始测试序列的命令放入执行实体301的传入命令队列340A中(操作705)。
启动测试序列命令可由准备器311处理。准备器311可准备必要的工件,并将与工件相关联的数据放入操作高速缓存313内(操作710)。之后,准备好执行测试序列(操作715)。
测试站池201中的一些测试站可以变为空闲。当测试站变为空闲时,相关联的代理211经由RPC协议将指示该测试站处于空闲状态的事件(即,空闲事件)传递给代理管理器320(操作720)。
代理管理器320将空闲事件转换为空闲队列330A中的消息(即,空闲消息)。测试启动器314A通过从操作高速缓存313选择合适的测试并调用代理管理器320的运行测试HTTP端点来处理空闲消息(操作725)。
代理管理器320可通过RPC协议对代理211执行运行测试命令(操作730)。在代理管理器320的控制下,代理211可以执行测试执行(操作735)。一旦测试完成,代理211向代理管理器320发送指示事件完成的信号(操作740)。代理管理器320可以将完成的事件转换为放置在完成队列330B中的消息。测试完成器314B可以处理由测试产生的测试日志,并将测试结果推送到外部事件队列340B中(操作745)。测试结果可被提供给主实体400(操作750)。
图8是示出根据本发明实施例的测试系统的性能的示图。
测试系统是基于所描述的体系架构,并使用下一个技术堆栈(C#、Python、.NETCore、MS SQL Server、RabbitMQ、ZeroIce、Docker)实现的软件系统原型。测试池中有4000个测试站。回归测试活动由40000个测试组成,每个单独的单个测试持续时间长达90秒。
根据初步性能/负载测试,测试系统的单个实体允许成功处理4000个测试站。在这个实验中,测试站被连接到单独的单个执行实体的docker容器所取代。作为测试负载,命令被发送到传入队列(incoming queue)(即,图6的传入命令队列340A)以运行测试。每个测试都被设计为具有上限运行时间(不是更多,但可能小于某个值)。使用诸如普罗米修斯(Prometheus)和格拉法纳(Grafana)的特定的监控堆栈收集指标。轨迹相当于图8中图形结果中的测试。在图8中,性能指标包括未决(未启动)测试(即轨迹)计数810、运行测试(即轨迹)计数820和每分钟启动的测试数量(即,轨迹计数)830。从图8的图形结果可以看出,所有测试都是在特定时间(例如,从18:00到18:16大约17分钟)内分配、执行和处理的。
如上所述,实施例提供了通过增加独立的执行实体的数量来实现水平缩放的方案。此外,实施例通过使用测试站竞争测试而不是测试竞争测试站的方案来提供高并发性问题的解决方案。此方案可以显著降低并发性,因为测试站的数量总是远远少于测试的数量。
尽管为了清楚和理解的目的,已经对上述实施例进行了一些详细的说明和描述,但本发明不限于所提供的细节。如本领域技术人员根据前述公开将理解的,存在许多实现本发明的替代方法。因此,所公开的实施例是说明性的,而不是限制性的。本发明旨在包含落入权利要求书范围内的所有修改和替代方案。
Claims (20)
1.一种系统,包括:
多个测试站,测试多个固件产品,所述测试站被划分成多个池,每个池包括多个测试站;以及
多个执行实体,每个执行实体执行与关联的池相对应的测试,
其中所述多个测试站中的每个竞争测试站向相应的执行实体传递测试启动事件,并且
其中所述相应的执行实体从所述竞争测试站接收测试启动事件,并且对所述竞争测试站之中的选择测试站执行运行测试命令,使得所述选择测试站基于测试序列执行测试执行。
2.根据权利要求1所述的系统,其中所述选择测试站是所述竞争测试站之中的首先向所述相应的执行实体传递相应的测试启动事件的测试站。
3.根据权利要求1所述的系统,其中响应于来自用户接口的启动测试序列命令准备好执行所述相应的执行实体。
4.根据权利要求3所述的系统,其中所述相应的执行实体从所述选择测试站接收测试完成事件和测试结果,并且响应于所述测试完成事件,向所述用户接口提供所述测试结果。
5.根据权利要求4所述的系统,其中所述相应的执行实体包括用于存储所述启动测试序列命令的传入队列和用于存储所述测试结果的外部队列。
6.根据权利要求1所述的系统,其中所述多个测试站被基于设定特征划分成所述多个池,其中给定池中的测试站具有至少一个共同的设定特征。
7.根据权利要求6所述的系统,其中所述设定特征包括在存储器系统中使用的硬件、在所述存储器系统中使用的操作系统以及所述存储器系统的可用存储器和存储器装置的数量。
8.根据权利要求2所述的系统,其中所述相应的执行实体包括:
状态队列;
代理管理器,联接到所述多个测试站,用于基于所述多个测试站中的每一个的状态,将关于所述多个测试站的状态信息存储在所述状态队列中;以及
测试引擎,基于所述状态信息确定所述选择测试站,调用所述代理管理器以对所述选择测试站执行所述运行测试命令。
9.根据权利要求8所述的系统,其中所述多个测试站中的每一个相对于所述测试执行处于空闲状态、运行状态或完成状态,并且
其中所述状态队列包括空闲队列、运行队列和完成队列,分别用于存储所述多个测试站中的每一个的空闲状态、运行状态和完成状态。
10.根据权利要求8所述的系统,其中所述代理管理器通过远程过程调用协议即RPC协议,联接到所述多个测试站,并且通过超文本传输协议接口即HTTP接口,联接到所述测试引擎。
11.一种操作测试系统的方法,包括:
将用于测试多个固件产品的多个测试站划分为多个池,每个池包括多个测试站;
由所述多个测试站之中的每个竞争测试站向多个执行实体之中的相应的执行实体传递测试启动事件,每个执行实体执行与关联的池相对应的测试;
通过所述相应的执行实体从所述竞争测试站接收测试启动事件;并且
通过所述相应的执行实体对所述竞争测试站之中的选择测试站执行运行测试命令,使得所述选择测试站基于测试序列执行测试执行。
12.根据权利要求11所述的方法,其中所述选择测试站是所述竞争测试站之中的首先向所述相应的执行实体传递相应的测试启动事件的测试站。
13.根据权利要求11所述的方法,其中响应于来自用户接口的启动测试序列命令,准备好执行所述相应的执行实体。
14.根据权利要求13所述的方法,进一步包括:
通过所述相应的执行实体从所述选择测试站接收测试完成事件和测试结果,并且响应于所述测试完成事件,向所述用户接口提供所述测试结果。
15.根据权利要求14所述的方法,其中所述相应的执行实体包括用于存储所述启动测试序列命令的传入队列和用于存储所述测试结果的外部队列。
16.根据权利要求11所述的方法,其中划分所述多个测试站包括:
基于设定特征,将所述多个测试站划分成所述多个池,其中给定池中的测试站具有至少一个共同的设定特征。
17.根据权利要求16所述的方法,其中所述设定特征包括在存储器系统中使用的硬件、在所述存储器系统中使用的操作系统以及所述存储器系统的可用存储器和存储器装置的数量。
18.根据权利要求12所述的方法,其中所述相应的执行实体包括:
状态队列;
代理管理器,联接到所述多个测试站,用于基于所述多个测试站中的每一个的状态,将关于所述多个测试站的状态信息存储在所述状态队列中;以及
测试引擎,基于所述状态信息确定所述选择测试站,调用所述代理管理器以对所述选择测试站执行所述运行测试命令。
19.根据权利要求18所述的方法,其中所述多个测试站中的每一个相对于所述测试执行处于空闲状态、运行状态或完成状态,并且
其中所述状态队列包括空闲队列、运行队列和完成队列,分别用于存储所述多个测试站中的每一个的空闲状态、运行状态和完成状态。
20.根据权利要求18所述的方法,其中所述代理管理器通过远程过程调用协议即RPC协议,联接到所述多个测试站,并且通过超文本传输协议接口即HTTP接口,联接到所述测试引擎。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/012,923 | 2020-09-04 | ||
US17/012,923 US11307974B2 (en) | 2020-09-04 | 2020-09-04 | Horizontally scalable distributed system for automated firmware testing and method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138626A true CN114138626A (zh) | 2022-03-04 |
Family
ID=80394933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111032760.7A Pending CN114138626A (zh) | 2020-09-04 | 2021-09-03 | 用于自动化固件测试的水平可扩展分布式系统及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11307974B2 (zh) |
CN (1) | CN114138626A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230161652A1 (en) * | 2022-09-12 | 2023-05-25 | Intel Corporation | Acceleration of communications |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69026379T2 (de) * | 1990-08-07 | 1996-08-29 | Bull Hn Information Syst | Nachrichtenorientierte Fehlerbeseitigungsverfahren |
US6324683B1 (en) * | 1996-02-23 | 2001-11-27 | International Business Machines Corporation | System, method and program for debugging external programs in client/server-based relational database management systems |
US6014760A (en) | 1997-09-22 | 2000-01-11 | Hewlett-Packard Company | Scheduling method and apparatus for a distributed automated testing system |
US6163805A (en) | 1997-10-07 | 2000-12-19 | Hewlett-Packard Company | Distributed automated testing system |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6701460B1 (en) * | 1999-10-21 | 2004-03-02 | Sun Microsystems, Inc. | Method and apparatus for testing a computer system through software fault injection |
US6477666B1 (en) * | 1999-11-22 | 2002-11-05 | International Business Machines Corporation | Automatic fault injection into a JAVA virtual machine (JVM) |
US6907546B1 (en) * | 2000-03-27 | 2005-06-14 | Accenture Llp | Language-driven interface for an automated testing framework |
US6754895B1 (en) * | 2001-04-26 | 2004-06-22 | Palm Source, Inc. | Method and system for automatic firmware updates in a portable hand-held device |
US7020797B2 (en) | 2001-09-10 | 2006-03-28 | Optimyz Software, Inc. | Automated software testing management system |
US7516443B2 (en) * | 2003-09-19 | 2009-04-07 | International Business Machines Corporation | Performing tests with ghost agents |
US7151388B2 (en) | 2004-09-30 | 2006-12-19 | Kes Systems, Inc. | Method for testing semiconductor devices and an apparatus therefor |
US7528622B2 (en) | 2005-07-06 | 2009-05-05 | Optimal Test Ltd. | Methods for slow test time detection of an integrated circuit during parallel testing |
US7610529B2 (en) | 2006-04-28 | 2009-10-27 | Research In Motion Limited | Testing mobile wireless devices during device production |
US8489474B2 (en) * | 2007-12-31 | 2013-07-16 | Software Ag | Systems and/or methods for managing transformations in enterprise application integration and/or business processing management environments |
US8448144B2 (en) | 2008-04-02 | 2013-05-21 | International Business Machines Corporation | Testing software applications with progress tracking |
US8271949B2 (en) * | 2008-07-31 | 2012-09-18 | International Business Machines Corporation | Self-healing factory processes in a software factory |
US8739126B2 (en) * | 2010-09-03 | 2014-05-27 | Salesforce.Com, Inc. | Web services environment testing framework |
US9310437B2 (en) | 2011-03-25 | 2016-04-12 | Taiwan Semiconductor Manufacturing Company, Ltd. | Adaptive test sequence for testing integrated circuits |
US8874598B2 (en) * | 2011-07-21 | 2014-10-28 | Sap Se | Method and system for an executable specification |
US8418000B1 (en) * | 2012-03-13 | 2013-04-09 | True Metrics LLC | System and methods for automated testing of functionally complex systems |
US9146837B2 (en) * | 2012-05-23 | 2015-09-29 | Landis+Gyr Innovations, Inc. | Automated build, deploy, and testing environment for firmware |
US9721086B2 (en) * | 2013-03-15 | 2017-08-01 | Advanced Elemental Technologies, Inc. | Methods and systems for secure and reliable identity-based computing |
US8984486B2 (en) * | 2013-07-12 | 2015-03-17 | Nvidia Corporation | System, method, and computer program product for automated stability testing of device firmware |
US9218261B2 (en) | 2013-09-18 | 2015-12-22 | Bank Of America Corporation | Test case execution |
US9727361B2 (en) | 2013-12-12 | 2017-08-08 | International Business Machines Corporation | Closed-loop feedback mechanism for achieving optimum performance in a consolidated workload environment |
US10983831B2 (en) | 2014-12-10 | 2021-04-20 | Hewlett Packard Enterprise Development Lp | Firmware-based provisioning of operating system resources |
US9652364B1 (en) * | 2015-03-12 | 2017-05-16 | Amazon Technologies, Inc. | Cloud service for mobile testing and debugging |
US9424171B1 (en) | 2015-04-23 | 2016-08-23 | International Business Machines Corporation | Resource-constrained test automation |
US20170046510A1 (en) | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Methods and Systems of Building Classifier Models in Computing Devices |
US10672013B2 (en) | 2016-07-14 | 2020-06-02 | Accenture Global Solutions Limited | Product test orchestration |
US10657035B2 (en) | 2018-04-13 | 2020-05-19 | Rainforest Qa, Inc. | Electronic product testing sysems |
US10684940B1 (en) * | 2018-09-18 | 2020-06-16 | Amazon Technologies, Inc. | Microservice failure modeling and testing |
US11360000B2 (en) | 2020-03-20 | 2022-06-14 | SK Hynix Inc. | Priority-based dynamic resource allocation for product testing |
-
2020
- 2020-09-04 US US17/012,923 patent/US11307974B2/en active Active
-
2021
- 2021-09-03 CN CN202111032760.7A patent/CN114138626A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220075711A1 (en) | 2022-03-10 |
US11307974B2 (en) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291547B (zh) | 一种任务调度处理方法、装置及系统 | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
US11941434B2 (en) | Task processing method, processing apparatus, and computer system | |
CN108090731B (zh) | 一种信息处理方法及设备 | |
US8695005B2 (en) | Model for hosting and invoking applications on virtual machines in a distributed computing environment | |
US20180246765A1 (en) | System and method for scheduling jobs in distributed datacenters | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
EP2225650B1 (en) | Efficient interrupt message definition | |
US7681196B2 (en) | Providing optimal number of threads to applications performing multi-tasking using threads | |
CN111831410A (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN111104210A (zh) | 一种任务处理方法、装置及计算机系统 | |
US20210200704A1 (en) | Input/output command rebalancing in a virtualized computer system | |
US10592107B2 (en) | Virtual machine storage management queue | |
CN111240813A (zh) | 一种dma调度方法、装置和计算机可读存储介质 | |
CN114168302A (zh) | 任务调度方法、装置、设备及存储介质 | |
JP2020053013A (ja) | 要求処理方法及び装置 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
CN111831411A (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN114138626A (zh) | 用于自动化固件测试的水平可扩展分布式系统及其方法 | |
CN110231981B (zh) | 服务调用方法及装置 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN112860401A (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN111382141A (zh) | 主从架构配置方法、装置、设备以及计算机可读存储介质 | |
US9459910B1 (en) | Controlling a layered driver | |
CN112748883B (zh) | 一种io请求流水线处理设备、方法、系统及存储介质 |
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 |