CN102419729B - 并行测试执行 - Google Patents
并行测试执行 Download PDFInfo
- Publication number
- CN102419729B CN102419729B CN201110354661.0A CN201110354661A CN102419729B CN 102419729 B CN102419729 B CN 102419729B CN 201110354661 A CN201110354661 A CN 201110354661A CN 102419729 B CN102419729 B CN 102419729B
- Authority
- CN
- China
- Prior art keywords
- test
- environment
- test environment
- auxiliary
- data structure
- 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
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
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)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及并行测试执行。此处所描述的主题的各方面涉及测试执行。在各方面中,获取被配置为要在主测试环境中执行的测试的集合。然后,在辅助测试环境中,与在主测试环境中执行这些测试中的一个或多个测试相并行地执行这些测试中的一个或多个测试。在主测试环境中执行一测试以前,执行检查以确定该测试是否已经在辅助测试环境中执行。如果该测试已经在辅助测试环境中执行,则不在主测试环境中执行该测试,并且获取结果并将这些结果合并到主测试环境中,从而使得看上去好像该测试是在主测试环境中执行的一样。
Description
技术领域
本发明涉及进行并行测试执行的方法和系统。
背景技术
软件工具可允许开发者对所开发的代码运行测试。该工具可允许开发者指定要运行的多个测试,并可顺序地运行这些测试直到已运行了所有这些测试为止。不幸的是,顺序地运行测试可花费很长的时间。
在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。
发明内容
简言之,此处所描述的主题的各方面涉及测试执行。在各方面中,获取被配置为要在主测试环境中执行的测试的集合。然后,与在主测试环境中执行这些测试中的一个或多个相并行地在辅助测试环境中执行这些测试中的一个或多个。在主测试环境中执行一测试之前,执行检查以确定该测试是否已在辅助测试环境中被执行。如果该测试已经在辅助测试环境中被执行,则不在主测试环境中执行该测试,并且获取各个结果,并将这些结果都结合到主测试环境中,从而使得该测试看上去好像是在主测试环境中执行的一样。
提供本发明内容是为了简要地标识在以下详细描述中进一步描述的主题的一些方面。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
除非上下文清楚地指出,否则短语“此处所描述的主题”指的是具体实施方式中描述的主题。术语“方面”被当作“至少一个方面”。标识具体实施方式中所描述的主题的各方面不旨在标识所要求保护的主题的关键特征或必要特征。
上述各方面和此处所描述的主题的其它方面是借助于示例说明的,并且不受附图限制,附图中相同的标号指示相似的元素。
附图说明
图1是表示其中可结合此处所描述主题的各方面的示例性通用计算环境的框图;
图2是根据此处所描述的主题的各方面的包括主测试环境和辅助测试环境的框图;
图3是根据此处所描述的主题的各方面的可用来显示辅助测试环境中的各测试的状态的示例性用户界面;
图4-5是根据此处所描述的主题的各方面的概括地表示可发生的示例性动作的流程图。
具体实施方式
定义
如此处所使用的,术语“包括”及其变体被当作开放式术语,表示“包括但不限于”。除非上下文以其他方式清楚地指示出,否则术语“或”被当作“和/或”。术语“基于”被当作“至少部分地基于”。术语“一个实施例”和“一实施例”被当作“至少一个实施例”。术语“另一实施例”被当作“至少一个其他实施例”。
如此处所使用地,诸如“一”和“该”等术语包括了所指示的项或动作中的一个或多个。具体而言,在权利要求书中,对某一项的引用一般表示存在至少一个这样的项,并且对一动作的引用表示执行该动作的至少一个实例。
标题是仅出于方便起见的;关于给定话题的信息可在其标题指示该话题的节之外找到。
其他显式或隐式定义可包括在下文中。
示例性操作环境
图1示出可在其上实现此处所描述的主题的各方面的合适的计算系统环境100的示例。计算系统环境100仅为合适的计算环境的一个示例,并非旨在对此处所描述的主题的各方面的使用范围或功能提出任何限制。也不应该将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
此处所描述的主题的各方面可与众多其他通用或专用计算系统环境或配置一起操作。可适用于此处所述的主题的各方面的已知计算系统、环境或配置的示例包括个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费电子设备、网络PC、微型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶盒,媒体中心或其他家电的家电设备、嵌入汽车或附加到汽车的计算设备、其他移动设备、包括任何上述系统或设备的分布式计算环境等等。
此处所描述的主题的各方面可在由计算机执行的诸如程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。此处所描述的主题的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图1,用于实现此处所描述的主题的各方面的示例性系统包括计算机110形式的通用计算设备。计算机可包括能够执行指令的任何电子设备。计算机110的组件可包括处理单元120、系统存储器130以及将包括系统存储器的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、也称为夹层(Mezzanine)总线的外围部件互连(PCI)总线、扩展外围部件互连(PCI-X)总线、高级图形端口(AGP)、以及快速PCI(PCIe)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能由计算机110访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EEPROM、闪存或其它存储器技术CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。
通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含诸如在启动期间帮助在计算机110内的元件之间传输信息的基本例程,基本输入/输出系统131(BIOS)通常储存储在ROM 223中。RAM132通常包含处理单元120可立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可以在该示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括磁带盒、闪存卡、数字多功能盘、其他光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通过接口140可连接至系统总线121,且磁盘驱动器151和光盘驱动器155通过诸如接口150之类的用于可移除非易失性存储器的接口连接至系统总线121。
以上描述并在图1中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其他程序模块136和程序数据137相同,也可以与它们不同。操作系统144、应用程序145、其他程序模块146和程序数据147在这里被标注了不同的附图标记是为了说明至少它们是不同的副本。
用户可以通过输入设备,如键盘162和定点设备161(通常被称为鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、触敏屏、或写字板等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)来连接。
监视器191或其他类型的显示设备也通过诸如视频接口190之类的接口连接至系统总线121。除监视器之外,计算机也可包括诸如扬声器197和打印机196之类的其他外围输出设备,它们可以通过输出外围接口195来连接。
计算机110可以使用到一个或多个远程计算机(如远程计算机180)的逻辑连接,以在联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。
当用于LAN网络环境中时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN联网环境中使用时,计算机110可包括调制解调器172或用于通过诸如因特网等的WAN 173来建立通信的其它装置。可为内置或可为外置的调制解调器172可以经由用户输入接口160或其他合适的机制连接至系统总线121。在联网环境中,相对于计算机110所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图1示出了远程应用程序185驻留在存储器设备181上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
测试软件
如之前所提到地,顺序地运行各测试的软件工具可花费较长的时间来执行。甚至并行地运行各测试的软件工具也会受到约束。
图2是根据此处所描述的主题的各方面的包括主测试环境和辅助测试环境的框图。图2中示出的实体是示例性的,而并不意味着包括一切的可能需要或包括在实现中的组件。在其他实施例中,结合图2来描述的各实体中的一个或多个可被包括在(示出或未示出)其他实体中或者被分割成其他实体,而不背离此处所描述的主题的各方面的精神或范围。在一些实施例中,结合图2来描述的各实体可分布在多个设备上。
可使用一个或多个计算机(例如,图1中的计算机110)以及与之相关联的存储器设备来实现这些实体中的一个或多个。可经由包括以下各项的各种网络来到达(例如,通信地耦合至)各个实体:办公室内和办公室间网络、一个或多个局域网、广域网、直接连接、虚拟连接、专用网络、虚拟专用网络、以上网络的某一组合等等。
主测试环境205可包括有助于测试软件代码的一个或多个组件。这些组件可包括,例如,测试管理器210、测试结果检测器211、测试提供者212、代码提供者213、结果管理器214、辅助监视器215、其他组件(未示出)等等。
在一个实施例中,主测试环境205可以是开发工具的一部分。可使用开发工具来开发和/或部署软件。在一个示例性实施例中,开发工具可包括集成开发环境(IDE),该集成开发化境允许软件开发者输入和更新代码、调试代码、创建和更新数据库、将代码与一个或多个数据库相关联、编译代码、创建包、测试代码、进行其他动作等等。
辅助测试环境206可包括测试管理器220、测试节流器(throttler)221、结果管理器222、通知管理器223、其他组件(未示出)等等。
主测试环境205和辅助测试环境206可被实现在同一计算机上、两个分开的计算机上、相同的计算机中的一个或多个上、两个或多个不同的计算机上等等。在各种配置中,主测试环境205可被实现在第一组的一个或多个计算机上,且辅助测试环境可被实现在第二组的一个或多个计算机上。该第一和第二组可以具有或不具有共有的一个或多个成员。
主测试环境205和辅助测试环境206中的一个或多个可以被实现在虚拟环境中。虚拟环境是由计算机来模仿或模拟的环境。虚拟环境可模仿或模拟物理机器、操作系统、一个或多个接口的组、以上各项的部分、或以上各项的组合等等。在机器被模仿或被模拟时,该机器有时被称为虚拟机。对于在虚拟机上执行的软件来说,虚拟机是一种看上去是物理机器的机器。该软件可将文件保存在诸如虚拟硬盘驱动器、虚拟软盘等之类的虚拟存储设备中,可从虚拟CD处读取文件,可经由虚拟网络适配器来进行通信等等。
一个以上虚拟环境可被主存在单个计算机上。也就是说,两个或更多虚拟环境可在单个物理计算机上执行。对于在每一虚拟环境中执行的软件来说,该虚拟环境看上去具有其自己的资源(例如,硬件),即使主存在单个计算机上的各虚拟环境也可能在物理上彼此以及与主控操作系统一起共享一个或多个物理设备。
在执行时,主测试环境205的代码可实例化辅助测试环境206的一个或多个组件。例如,主测试环境205的初始化代码可实例化测试管理器220。
组件210-215和220-223中的一个或多个可被实现成进程。在此使用的术语“进程”及其变体可包括一个或多个传统的进程、线程、组件、库、执行任务的对象等等。可以硬件、软件、或硬件和软件的组合来实现进程。在一实施例中,无论如何命名,进程是能够执行或者用于执行动作的任何机制。进程可分布在多个设备上或可位于单个设备上。
数据结构225-229包括可在主测试环境205和辅助测试环境206之间传递的数据。可在消息中、经由存储器中的数据、或经由文件系统中的文件等来传递数据结构225-229。可将这些数据结构中的两个或更多组合成单个数据结构。可将所示的单个数据结构划分成多个数据结构。
测试列表数据结构225可包括被配置为要在主测试环境205中执行的各测试的集合。测试代码数据结构226可包括与这些测试相对应的代码。其他数据结构227-229在以下更详细地描述。
测试管理器210可用于在主测试环境205中执行软件测试。具体而言,测试管理器210可访问要执行的各测试的列表。对于该列表中的每一测试,测试管理器210可执行该测试的代码、存储通过执行该代码而生成的返回代码、存储通过执行该代码而生成的日志数据等等。
测试可包括或调用(由测试结果检测器211来表示的)代码,该代码检查以确定该测试正在还是已经在辅助测试环境206中执行。该代码可检查标志(例如,布尔值或其他值)以确定该测试是否已经执行。如果该测试已经执行,则在主测试环境205中对该测试进行任何更多的执行可被忽略。另外,可将来自该测试的结果结合到主测试环境205中,就好像该测试实际上已经在主测试环境205中运行一样。
换言之,如果在辅助测试环境中执行测试时发生了异常,则这些异常可能会被抛出到主测试环境205中。如果该测试在辅助测试环境206中执行时提供了返回代码,则这些返回代码可被返回给测试管理器210。如果该测试将各条目写入了日志文件,则这些条目也会被写入主测试环境205的日志文件中。换言之,从测试管理器210的角度来说,测试管理器210可能不知道这些结果是从辅助测试环境206处获取的。
如果测试正在辅助测试环境206中执行,则测试结果检测器211可采取以下各种动作,包括:例如,等待该测试在辅助测试环境206中完成、或者允许该测试在主测试环境205中继续执行并忽略通过在辅助测试环境206中执行该测试而生成的结果等等。
如果测试尚未在辅助测试环境206中执行,则结果检测器211可等待该测试在辅助测试环境206中执行并从中获取结果、或者允许该测试在主测试环境205中执行并从中获取结果等等。
测试提供者212可提供对计划要在主测试环境205中执行的各测试的指示。该指示可例如采用测试的标识符的集合的形式。各标识符可包括例如各测试的名称、或者指向各测试的代码的指针等等。可经由辅助测试环境206可访问的文件、或者存储器中的数据结构等来传递该集合。一旦测试管理器220接收了该集合,该测试管理器220就可以开始彼此并行地以及与在主测试环境205中发生的任何测试或其他动作相并行地执行这些测试中的一个或多个。
在此所使用的术语“并行”指在另一测试或动作的第一个指令之后以及最后一个指令之前执行的至少一个测试中的至少一个指令。
在一些环境中,测试提供者212可具有允许访问测试的集合的API。然而,在其他环境中,要获取计划被执行的各测试则更难。例如,一些测试环境并不展示允许访问这些测试的集合的API。在一个这类环境中,可通过以下方式来获取各测试:注册新的自定义测试类型、添加该新的自定义测试类型的单个测试、以及(例如,通过操控该测试的测试列表标识符来)使得该测试首先运行。在该测试运行时,可能具有对被配置为要被执行的各测试的列表的访问。该测试可将这个列表写入文件、或存储器中的数据结构等中。稍后,可将该列表传递给辅助测试环境206中的测试管理器220。
代码提供者213可用于将各测试的代码提供给辅助测试环境206。这可通过以下方式来实现:在一消息中将该代码发送给测试管理器220、或者将该代码写入可经由测试管理器220来访问的文件中等。在一些实现中,可以从使用反映(reflection)或某一类似机制的组合件处提取该代码。
结果管理器214可用于从数据结构处获取已被执行的测试的各结果。这个数据结构可以从主测试环境205和辅助测试环境206两者处访问。可将该数据结构包括在存储器中、在诸如盘等非易失性存储上、或易失性和非易失性存储器的某一组合中。这些结果可包括返回代码数据结构227所表示的数据结构、日志数据结构228、和通知数据结构229。
结果管理器214可被测试结果检测器211调用来获取这些结果。结合(例如,从数据结构227-229处)获取各结果,结果管理器214还可使用之前描述的技术将这些结果结合到主测试环境205中。
辅助监视器215可显示诸如窗口等用户界面,该用户界面允许用户在辅助测试环境中查看各测试的进程。辅助监视器可从通知数据结构229处获取通知。辅助监视器215不是在每一事件发生时就将其布置在该窗口中,而是周期性地(例如,以可配置的间隔)将来自通知229的各事件批量张贴在该窗口中,从而避免淹没该窗口的描绘机制。该窗口可提供以下状态:诸如,多少测试已经开始、多少测试已经完成、多少测试正在运行、多少测试已经传递、多少测试已经失败等等,并且该窗口还能提供每一测试的状态,诸如测试名称、最后请求的持续时间、当前请求、该测试已被传递还是已失败等等。
图3是根据此处所描述的主题的各方面可用来显示辅助测试环境中的各测试的状态的示例性用户界面。如所示出地,窗口300包括总体状态部分305以及测试状态部分310。图3的格式、间隔、状态项和图形旨在只是示例性的。基于此处的示教,本领域的技术人员将意识到可使用其他格式、间隔、状态项和图形来显示辅助测试环境中的各测试的状态,而不会偏离在此描述的主题的各方面的精神和范围。
返回至图2,作为辅助测试环境206的一部分,测试管理器220可负责在辅助测试环境206中执行各测试。测试管理器220可从测试提供者212处获取各测试的集合、从代码提供者213处获取各测试的代码、以及在辅助测试环境206中开始执行各测试。测试管理器220可以在不同的进程中执行各测试,以增加并行性。测试管理器220可在执行测试之前咨询测试节流器221。
测试节流器221可基于一阈值来限制在任何给定时刻允许多少测试在辅助测试环境206中并行执行。该阈值可包括,例如,线程阈值、网络阈值、处理器阈值、正在一个或多个线程中执行的测试的数目、某一其他阈值、以上各项中的一个或多个的组合等等。如果执行另一测试会超过阈值,则测试节流器221可以不允许该测试被执行,直到执行该测试不会超过该阈值为止。
结果管理器222可用于填充包括在辅助测试环境206中执行各测试的结果的数据结构。数据结构可包括返回代码数据结构227和日志数据结构228。结果管理器222可通过以下方式来填充该数据结构:从已完成的各测试处获取返回代码以及从这些测试处获取日志条目;以及,将返回代码和日志条目分别放置在返回代码数据结构227和日志数据结构228中。返回代码可包括由测试抛出的各个异常以及由测试返回的各个值。
通知管理器223可生成正在或将在辅助测试环境206中执行的各测试的状态。具体来说,通知管理器223可生成以下事件:诸如,测试已排队等待、测试正执行、测试已完成、测试已成功、测试已失败、其他事件等等。可将与这些事件相对应的数据放置在通知数据结构229中,以供辅助监视器215使用。
图4-5是根据此处所描述的主题的各方面的概括地表示可发生的示例性动作的流程图。为解释简明起见,结合图4-5来描述的方法被描绘和描述为一系列动作。可以理解和明白,此处所描述的主题的各方面不受所示出的各动作和/或各动作次序的限制。在一个实施例中,各动作以如下描述的次序发生。然而,在其它实施例中,各动作可以并行地发生、以另一次序发生、和/或与此处未呈现和描述的其它动作一起发生。此外,并非所有示出的动作都是实现根据此处所描述的主题的各方面的方法所必需的。另外,本领域的技术人员将了解和明白,该方法也可以替代地经由状态图而被表示为一系列相互相关联的状态或者被表示为事件。
转向图4,在框405处,动作开始。在框410处,获取被配置为要在测试环境中执行的各测试的测试标识符。例如,参考图2,测试管理器220可从测试提供者212处获取测试列表数据结构225。被配置为要在测试环境中执行意味着测试管理器210被配置为要执行各测试。这种配置可涉及(例如,经由用户接口来)向测试管理器210指示各测试。
在框415处,获取各测试中的一个或多个测试的测试代码。例如,参考图2,测试管理器220可使用之前获取的标识符来从代码提供者213处获取测试代码数据结构226。测试代码数据结构226可包括与各测试相对应的代码。在一个实施例中,测试管理器220可在执行测试的代码的前一刻获取该测试的代码。在另一实施例中,测试管理器220可一次或者在获取各标识符以后的某一时刻获取所有测试的代码。在又一实施例中,测试管理器220可获取代码以及标识符。换言之,代码和标识符可一起从主测试环境205处得来。在又一实施例中,可获取测试但不获取标识符,并且可忽略框410的动作。获取测试的测试代码可涉及获取该测试代码的副本、或者使用指针来访问该测试代码等。
在框420处,执行测试,并按需进行节流。例如,参考图2,测试管理器220可选择一测试,并与测试节流器221协商该测试是否可被执行。在另一实施例中,测试管理器220可选择一测试,并使该测试排队等待执行。然后,测试控制器221可在执行该测试不会超过阈值时,允许该测试执行(例如,配置一线程来执行该测试)。在该意义上,可认为测试节流器221限制测试中的多少被允许在辅助测试环境206中并行执行。
在一个实施例中,测试节流器221可限制被分配来(例如,可用于)执行测试的线程的数目。如果所分配的线程都正在执行测试,则可以不分配另一线程,直到在这些线程中的一个已完成执行测试为止。
在另一实施例中,测试节流器221可限制正并行执行的测试的计数。如果测试的数目等于或超过阈值,则在正执行的测试的数目降到该阈值以下之前,可等待开始另一测试。
在框425处,从一个或多个测试处获取结果。测试的结果可在该测试执行时以及在该测试完成(成功、失败、和/或抛出异常)时获取。例如,参考图2,结果管理器222可从在辅助测试环境206中执行的测试处获取结果。在一个实施例中,可通过执行以下动作来获取测试的结果,包括:
1.调用测试的初始化代码(如果有的话);
2.在尝试/捕获框中调用(例如,执行)测试,并获取从尝试/捕获框处返回的任何代码;以及
3.调用测试的清除代码(如果有的话)。
还可通过捕捉由测试生成的日志数据来获取这些结果。
在框430处,可将这些结果放置在主测试环境的进程可访问的数据结构中。该进程可使用这些结果来确定被指示的测试是否已经在辅助测试环境中被执行,并且如果是,则还确定从中获取了什么结果。
可重复进行(以及并行地执行)与框415-430相关联的动作,直到所有测试已经被执行为止。在一个实施例中,辅助测试环境中的测试管理器可检查以查看测试当前是否正在主测试环境中执行。如果情况是这样的,则辅助测试环境中的测试管理器可跳过在辅助测试环境中执行测试。
在框435处,可以执行其他动作(如果有的话)。
在框440处,可生成状态事件。如之前所描述地,可生成状态事件,使得辅助监视器能够确定在辅助测试环境中将执行的、正在执行的、或者已经执行的测试的状态。状态事件可例如在测试排队等待执行时、在测试开始执行时、在测试完成执行时等生成。框435中的各动作可结合在框410-435中指示出的各动作在各种时刻发生。
转向图5,在框505处,动作开始。在框510处,将被配置为要在主测试环境中执行的各测试的集合发送至辅助测试环境。例如,参考图2,测试提供者212可经由测试列表数据结构225来将测试的集合发送至测试管理器220。
在框515处,可将测试代码提供给辅助测试环境。例如,参考图2,代码提供者213可将这些测试中的一个或多个测试的测试代码提供给测试管理器220。可响应于来自测试管理器220的请求而提供测试代码,或者可将测试代码放置在测试代码数据结构226中以由测试管理器220按需使用,或者可以其他方式来递送测试代码而不偏离在此描述的主题的精神或范围。
在框520处,确定要在主测试环境中执行的测试。例如,参考图2,测试管理器210可选择被配置为要在主测试环境205中执行的各测试的集合中的一测试。
在框525处,确定该测试是否已经在辅助测试环境中执行。例如,参考图2,测试结果检测器211可以(例如,通过检查标志来)确定该测试是否已经在辅助测试环境206中执行。
在框530处,如果该测试已在辅助测试环境中执行,则动作在框540处继续;否则,动作在框535处继续。
在框535处,由于该测试尚未在辅助测试环境中执行,则可发生各种动作。例如,如果该测试尚未在辅助测试环境中执行,则可发生等待该测试在辅助测试环境中执行。在该测试完成以后,可随后获取结果。例如,参考图2,主测试环境205中的组件(例如,测试结果检测器211、结果管理器215、或其他组件)可等待该测试在辅助测试环境206中被执行。
作为另一示例,如果该测试尚未在辅助测试环境中执行,则在主测试环境中执行该测试。例如,参考图2,在主测试环境205中执行该测试。在该示例中,可忽略通过在辅助测试环境中执行该测试而获取的该测试的结果(如果存在任何这种结果的话)。
在框540处,可从由辅助测试环境中的进程来填充的数据结构处获取这些测试结果。例如,参考图2,结果管理器215可从返回代码数据结构227和日志数据结构228处获取这些结果,并可使用之前描述的技术来将这些结果结合到主测试环境205中。
可多次重复进行与框520-540相关联的动作,直到所有测试的结果已被获取为止。
在框545处,可以执行其他动作(如果有的话)。视器215可周期性地从通知数据结构229处检索事件,并将这些事件作为批量消息而张贴在窗口300中。
如从上述详细描述中可以看到,已经描述了关于测试执行的各方面。尽管此处所描述的主题的各方面易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而,应当理解,并不旨在将所要求保护主题的各方面限制于所公开的具体形式,而是相反地,目的是要覆盖落入此处所描述的主题的各方面的精神和范围之内的所有修改、替换构造和等效方案。
Claims (9)
1.一种至少部分地由计算机实现的测试执行方法,所述方法包括:
获取(410,415)计划要在主测试环境中执行的测试,所述测试涉及软件代码;
与在所述主测试环境中执行所述测试中的一个或多个测试相并行地在辅助测试环境中执行(420)所述测试中的一个或多个测试;
将在所述辅助测试环境中执行所述一个或多个测试的结果放置(430)在所述主测试环境的进程能访问的数据结构中,以用来至少确定被指示的测试是否已经被执行;以及
经由所述主测试环境的进程通过在所述主测试环境的进程内抛出异常来返回在所述辅助测试环境中执行所述一个或多个测试的所述结果,所述异常与所述数据结构所指示的异常相对应。
2.如权利要求1所述的方法,其特征在于,还包括基于一阈值来限制在任何给定时刻允许所述一个或多个测试中的多少测试并行地执行。
3.如权利要求1所述的方法,其特征在于,还包括通过执行以下动作来获取执行测试的结果,包括:
在存在所述测试的初始化代码时,调用所述测试的初始化代码;
在尝试/捕获框中调用所述测试,并获取从尝试/捕获框处返回的任何代码;以及
在存在所述测试的清除代码时,调用所述测试的清除代码。
4.如权利要求1所述的方法,其特征在于,还包括生成指示并行地执行所述一个或多个测试的状态的事件,以及将所述事件放置在所述测试环境的进程能访问的数据结构中。
5.如权利要求1所述的方法,其特征在于,还包括确定测试是否正在或已经在所述测试环境中执行,以及如果是,则制止在所述测试环境的外部执行所述测试。
6.一种测试执行方法,包括:
向辅助测试环境发送(510,515)被配置为要在主测试环境中执行的测试的集合;
确定(520)测试要在所述主测试环境中执行;
确定(525)所述测试是否已经在所述辅助测试环境中执行;以及
在所述测试已经在所述辅助测试环境中执行时,从由所述辅助测试环境的进程来填充的数据结构处获取(540)所述测试的结果,所述进程用于基于通过在所述辅助测试环境中执行所述测试而返回的数据来填充所述数据结构;
所述方法还包括在所述测试已经在所述辅助测试环境中执行时,经由所述主测试环境的进程通过执行包括以下各项中的一个或多个的动作来返回所述结果:
在所述进程内抛出异常,所述异常与所述数据结构所指示的异常相对应;
向所述主测试环境的所述进程返回返回代码,所述返回代码与所述数据结构所指示的返回代码相对应;以及
经由所述进程将条目写入所述主测试环境的日志文件中,所述条目与所述数据结构所指示的条目相对应。
7.如权利要求6所述的方法,其特征在于,还包括在所述测试尚未在所述辅助测试环境中执行时,等待所述测试在所述辅助测试环境中执行,以及随后从所述数据结构处获取所述结果。
8.如权利要求6所述的方法,其特征在于,还包括在所述测试尚未在所述辅助测试环境中执行时,在所述主测试环境中执行所述测试,并且在存在通过在所述辅助测试环境中执行所述测试而获取的任何结果时,忽略所述结果。
9.一种在计算环境中的系统,包括:
主测试环境和辅助测试环境,
所述主测试环境包括:
第一测试管理器,它用于执行所述辅助测试环境中的测试,所述测试涉及软件代码;
测试提供者,它用于向所述辅助测试环境提供所述测试的指示;
代码提供者,它用于向所述辅助测试环境提供对所述测试的代码;
测试结果检测器,它用于确定被指示的测试是否已经在所述辅助测试环境中执行;以及
结果管理器,它用于在所述被指示的测试已经在所述辅助测试环境中执行的情况下从数据结构处获取所述被指示的测试的结果,所述数据结构能从所述主测试环境和所述辅助测试环境两者处访问,在所述被指示的测试已经在所述辅助测试环境中执行的情况下,所述结果管理器能用于在所述主测试环境的进程内抛出异常,所述异常与所述数据结构所指示的异常相对应;
所述辅助测试环境包括:
第二测试管理器,它用于在所述辅助测试环境中,与在所述主测试环境中执行所述测试中的一个或多个测试相并行地执行所述测试中的一个或多个测试;
结果管理器,它用于用通过在所述辅助测试环境中执行所述测试中的一个或多个测试而获取的结果来填充所述数据结构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/911,739 US20120102462A1 (en) | 2010-10-26 | 2010-10-26 | Parallel test execution |
US12/911,739 | 2010-10-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102419729A CN102419729A (zh) | 2012-04-18 |
CN102419729B true CN102419729B (zh) | 2014-12-17 |
Family
ID=45944148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110354661.0A Active CN102419729B (zh) | 2010-10-26 | 2011-10-25 | 并行测试执行 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120102462A1 (zh) |
CN (1) | CN102419729B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425572B (zh) * | 2012-05-24 | 2016-04-13 | 腾讯科技(深圳)有限公司 | 代码分析方法及代码分析系统 |
CN103713991B (zh) * | 2012-10-08 | 2017-08-04 | 腾讯科技(深圳)有限公司 | 一种在安卓设备上测试应用程序的方法和装置 |
EP2746976B1 (en) * | 2012-12-21 | 2017-12-13 | F. Hoffmann-La Roche AG | Analysis system for analyzing biological samples with multiple operating environments |
US9703679B2 (en) | 2013-03-14 | 2017-07-11 | International Business Machines Corporation | Probationary software tests |
US9886374B1 (en) * | 2014-03-26 | 2018-02-06 | Amazon Technologies, Inc. | Virtual device farm for software testing |
US9727365B2 (en) | 2015-04-12 | 2017-08-08 | At&T Intellectual Property I, L.P. | End-to-end validation of virtual machines |
US9632137B2 (en) * | 2015-04-22 | 2017-04-25 | Apple Inc. | Serial wire debug bridge |
US9672139B2 (en) * | 2015-07-21 | 2017-06-06 | Successfactors, Inc. | Debugging in a production environment |
US9632921B1 (en) | 2015-11-13 | 2017-04-25 | Microsoft Technology Licensing, Llc | Validation using scenario runners |
US10083102B2 (en) * | 2016-07-28 | 2018-09-25 | FedEx Supply Chain Logistics & Electronics, Inc. | Systems and methods to service an electronic device |
CN107193747B (zh) * | 2017-05-27 | 2022-01-11 | 北京金山安全软件有限公司 | 代码测试方法、装置和计算机设备 |
CN110162466B (zh) * | 2019-04-19 | 2021-02-09 | 平安国际智慧城市科技股份有限公司 | 自动测试方法、装置、计算机设备和存储介质 |
CN111124905B (zh) * | 2019-12-17 | 2023-07-18 | 中国银联股份有限公司 | 并行测试方法、装置、设备及存储介质 |
US11647178B2 (en) * | 2020-02-07 | 2023-05-09 | Sony Corporation | Digital television rendering verification |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030098879A1 (en) * | 2001-11-29 | 2003-05-29 | I2 Technologies Us, Inc. | Distributed automated software graphical user interface (GUI) testing |
EP1610135A1 (en) * | 2003-03-31 | 2005-12-28 | Advantest Corporation | Test device and test method |
CN101120262A (zh) * | 2005-02-17 | 2008-02-06 | 株式会社爱德万测试 | 用于在并行测试系统中调度测试的方法和系统 |
CN101853201A (zh) * | 2010-05-24 | 2010-10-06 | 南京航空航天大学 | 一种基于着色petri网的软件并行测试方法及工具 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477665B1 (en) * | 1999-08-31 | 2002-11-05 | Accenture Llp | System, method, and article of manufacture for environment services patterns in a netcentic environment |
US6701514B1 (en) * | 2000-03-27 | 2004-03-02 | Accenture Llp | System, method, and article of manufacture for test maintenance in an automated scripting framework |
US20010039497A1 (en) * | 2000-03-30 | 2001-11-08 | Hubbard Edward A. | System and method for monitizing network connected user bases utilizing distributed processing systems |
US7082474B1 (en) * | 2000-03-30 | 2006-07-25 | United Devices, Inc. | Data sharing and file distribution method and associated distributed processing system |
US6865731B2 (en) * | 2001-05-30 | 2005-03-08 | International Business Machines Corporation | Method and computer program product for testing application program software |
US7502811B2 (en) * | 2004-07-08 | 2009-03-10 | International Business Machines Corporation | Defer container-managed persistence operations on transactional objects |
US20080091806A1 (en) * | 2006-10-11 | 2008-04-17 | Jinmei Shen | Dynamic On-Demand Clustering |
US8352498B2 (en) * | 2008-05-16 | 2013-01-08 | Ricoh Company, Ltd. | Managing to-do lists in a schedule editor in a project management system |
US8359604B2 (en) * | 2009-01-22 | 2013-01-22 | Microsoft Corporation | Propagating unobserved exceptions in a parallel system |
US8893133B2 (en) * | 2010-09-01 | 2014-11-18 | International Business Machines Corporation | Dynamic test scheduling by ordering tasks for performance based on similarities between the tasks |
US8799875B2 (en) * | 2010-09-30 | 2014-08-05 | Oracle International Corporation | Streamlining unit testing through hot code swapping |
US9092280B2 (en) * | 2011-12-22 | 2015-07-28 | Sybase, Inc. | Method and system for data exchange and exception handling in a data processing environment |
-
2010
- 2010-10-26 US US12/911,739 patent/US20120102462A1/en not_active Abandoned
-
2011
- 2011-10-25 CN CN201110354661.0A patent/CN102419729B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030098879A1 (en) * | 2001-11-29 | 2003-05-29 | I2 Technologies Us, Inc. | Distributed automated software graphical user interface (GUI) testing |
EP1610135A1 (en) * | 2003-03-31 | 2005-12-28 | Advantest Corporation | Test device and test method |
CN101120262A (zh) * | 2005-02-17 | 2008-02-06 | 株式会社爱德万测试 | 用于在并行测试系统中调度测试的方法和系统 |
CN101853201A (zh) * | 2010-05-24 | 2010-10-06 | 南京航空航天大学 | 一种基于着色petri网的软件并行测试方法及工具 |
Also Published As
Publication number | Publication date |
---|---|
CN102419729A (zh) | 2012-04-18 |
US20120102462A1 (en) | 2012-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102419729B (zh) | 并行测试执行 | |
US8910172B2 (en) | Application resource switchover systems and methods | |
RU2571726C2 (ru) | Система и способ проверки целесообразности установки обновлений | |
CN104102643B (zh) | 一种进行页面快照的方法和装置 | |
US20120331449A1 (en) | Device, method and computer program product for evaluating a debugger script | |
US8225142B2 (en) | Method and system for tracepoint-based fault diagnosis and recovery | |
Xu et al. | Adam: Identifying defects in context-aware adaptation | |
US7984332B2 (en) | Distributed system checker | |
US20080320336A1 (en) | System and Method of Client Side Analysis for Identifying Failing RAM After a User Mode or Kernel Mode Exception | |
Agarwal et al. | Diagnosing mobile applications in the wild | |
CN102736954B (zh) | 通过禁用应用来解决系统退化 | |
US20110161063A1 (en) | Method, computer program product and apparatus for providing an interactive network simulator | |
CN102834806A (zh) | 系统结构管理设备、系统结构管理方法和程序 | |
CN105359109A (zh) | 基于次计算机中的存储器错误移动主计算机中的对象 | |
US20140173349A1 (en) | Method and apparatus for determining relevance of assignments in combinatorial models | |
Agarwal et al. | There’s an app for that, but it doesn’t work. Diagnosing mobile applications in the wild | |
JP2012208752A (ja) | ライセンス管理装置、ライセンス管理方法、及びプログラム | |
US9646252B2 (en) | Template clauses based SAT techniques | |
JP5840290B2 (ja) | ソフトウェア操作性サービス | |
TWI362002B (en) | Method and computer program product for automated generation of message exchange pattern simulation code | |
Montrucchio et al. | Software-implemented fault injection in operating system kernel mutex data structure | |
CN114996955A (zh) | 一种云原生混沌工程实验的靶场环境构建方法及装置 | |
CN114546823B (zh) | 用于重现逻辑系统设计的调试场景的方法及相关设备 | |
US20230088318A1 (en) | Remotely healing crashed processes | |
JP5972455B2 (ja) | 情報を削除する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150421 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150421 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |