CN103324568A - 用于测试程序的方法和装置 - Google Patents
用于测试程序的方法和装置 Download PDFInfo
- Publication number
- CN103324568A CN103324568A CN2013100870310A CN201310087031A CN103324568A CN 103324568 A CN103324568 A CN 103324568A CN 2013100870310 A CN2013100870310 A CN 2013100870310A CN 201310087031 A CN201310087031 A CN 201310087031A CN 103324568 A CN103324568 A CN 103324568A
- Authority
- CN
- China
- Prior art keywords
- configuration
- computing platform
- parameter
- configurations
- computer
- 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
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示出根据本公开主题的某些示例性实施例的用于在多个配置中自动测试程序的装置的组件的框图。
具体实施方式
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本公开主题。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机、被测试处理器或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以将这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的非瞬时性计算机可读介质中,这样,存储在非瞬时性计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的制品。
也可以将计算机程序指令加载到设备、计算机或其他可编程数据处理装置上,使得在计算机或其他可编程数据装置上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
与本公开主题有关的一个技术问题是由于程序或其他软件组件可能在一个计算机配置中呈现错误,而在另一配置中不呈现该错误,因此可能需要在多个计算平台配置上测试程序。
例如,许多计算机应用为多进程或多线程应用,其中在某些系统中,多进程和多线程可以通过相同的方式实现,并且在某些程序中,差别可能与程序所解决的问题无关。在多线程环境中,线程可通过多种方法并根据不同的协议相互通信,例如共享内存、套接字、文件或其他。问题的正确执行依赖于线程之间的同步,尤其是当访问共享资源时。串行程序一般在给定输入上确定地执行。但是,由于线程之间的计时问题,并行程序可能在给定输入上正确地运行,但是在同一输入上的下一运行时失败。例如,可将线程A写入线程B所读取的文件。编程者可以假设线程A始终在线程B读取之前写入,这在编程者所用的开发环境中是适用的。但是,当在其他计算机上(例如在客户的场所处)测试程序时,程序可能失败,因为线程A的执行速度慢于线程B,并且线程B未在读取之前检验文件存在并包含有效数据。
需要指出,在多个计算机系统上测试应用可能不是理想的解决方案。例如,就硬件、不动产、维护成本以及其他成本而言,此类任务的代价非常高昂,甚至不切实际,并且可能需要复杂的管理来确保程序在所有相关环境上执行。
有些公知的技术使用插入应用的命令(例如,向线程引入不同延迟的命令)模拟一个或多个线程的不同行为。但是,这不能确保测试所有在配置之间可能不同的参数,此外这可能引入其他错误。
一种技术解决方案包括自动修改处理器参数,具体地说,修改执行被测试软件的计算设备的硬件参数,其中参数可通过软件设置或可以通过不同方式自动设置。硬件参数可以包括—但不限于—以下任意一项或多项:处理器数、每个处理器的线程数、每个线程的优先级、启用或禁用预取、高速缓存大小、页大小等。
然后针对每个此类参数或特征集合在计算设备上执行被测试软件。这样,针对多种配置测试软件的正确性,每种配置可被视为模拟不同的计算平台,并可展示不同的行为。如果程序在所有配置上均正确地执行,则相对于在一个或几个可用配置上的传统测试,可以以较高置信度假设该程序没有错误。
例如,某些处理器的特定属性可通过软件控制。例如,在PowerTM指令集架构(ISA)中,处理器核心的同步多线程(SMT)级别可被更改。Power7TM处理器包含八个核心,每个核心可执行四个线程。因此,最多可同时运行32个线程。通过更改核心上的SMT级别,同时执行的线程数可以在1和32之间变化,这可更改线程的计时。其他可更改的属性包括有效导致某些线程运行变慢的每个线程的优先级;导致更多或更少页面错误,从而更改应用计时的默认页大小;自动预取的启用/禁用;通过将数据锁入某些高速缓存行有效减小高速缓存大小;页大小等。在某些处理器中,例如在x86TM ISA中,还可通过降低处理器电压和禁用缓存来改变处理器速度。
在某些实施例中,已用高速缓存大小可以更改。多线程程序有时通过共享内存进行通信。因此,常见的是两个或更多线程读写同一变量。程序的正确执行可依赖于编程者对这些变量的访问和更新实施排序,其中未执行此操作可导致程序错误。但是,如果变量副本位于与处理核心物理接近的高速缓存中,并在SRAM(L1高速缓存)中实现且更新迅速,则错误的程序有时可以正确地执行。通过锁定高速缓存行(即,即使程序不使用数据,也将数据存入高速缓存)并且现在允许替换数据,可降低处理器上L1高速缓存的有效大小。
在某些实施例中,可创建各种配置,并且程序可以在任意数量的配置上执行。在每次执行之后,如果程序失败,则可进行调试。如果成功,便可通过更改配置参数模拟下一配置,并且可以使用更新后的配置执行程序。可以预先创建或枚举配置,也可以在运行中创建或枚举配置,从而在一个配置上测试软件之后,再创建另一配置。
如果程序在这些配置的任何一个或多个上失败时,可以进一步探查错误。如果错误在一个或多个配置上出现,而在其他配置上未出现,这可以为编程者提供有关错误种类的线索。编程者可使用此信息对程序进行调试。
本公开主题的一个技术效果涉及在计算设备的不同硬件配置上测试程序或另一可执行组件的方法和装置,其中并不在不同物理设备上执行程序,而是仅更改计算设备的那些可由软件更改的特性。
所公开主题提供涉及不同配置的更彻底的测试,没有购买和维护不同设备的负担,并且没有与在多个设备上执行关联的管理复杂性。
所述方法和装置可更改任何参数并针对包括一个或多个此类参数的任何配置测试软件,所述参数包括可通过软件访问的硬件参数,可以设置参数值来直接更改这些参数,也可以以其他方式操纵这些参数。
现在参考图1,其中示出在使用单个计算设备的多个硬件配置上自动测试软件的方法步骤的流程图。
在步骤100,程序可以在默认设置(例如,开发者的计算机)上执行,在假设可用于多数用户的优选计算平台配置上执行,等等。
在步骤104,可判定在步骤100执行的程序是否失败。可通过检查错误代码、检查程序输出、检查异常等做出此判定。
在某些示例性实施例中,可以将程序的输出与预定的预期正确输出相比较,与预期输出的任何偏差都指示错误。作为补充或替代,可记录程序的不同执行(即,使用不同配置)的输出并使用此记录比较下面的执行。不同的输出可指示其中一个执行中的错误。在某些示例性实施例中,可判定针对提供不同输出的执行数而言,哪次执行失败。例如,如果一次执行提供输出X,而其他十次执行提供输出Y,则可以判定此次执行失败。作为另一实例,由于程序的不确定性方面(例如并发性),如果十次执行提供输出X,十次执行提供输出Y,则可认为两个输出都是合法结果。在某些示例性实施例中,根据对输出的统计分析,可判定每次执行是否呈现错误。例如,如果在执行中,输出的出现小于预定百分比(例如,百分之十),则可判定输出呈现错误。也可使用其他统计分析方法,例如涉及输出分布的统计分析方法。
如果程序失败,则在步骤108,所述方法结束并提供失败通知。在某些示例性实施例中,可手动或自动调试被测试程序。
将理解,如果已在某些默认设置上测试程序并认为程序按预期执行,则可以在诸如系统测试、集成等高级阶段省略步骤100、104和108。
如果程序通过,则在步骤112,可确定或以其他方式获得用于测试的相关配置集合。所述配置可以包括指示与测试程序的计算设备相关的任何一个或多个可更改参数,包括—但不限于—处理器数、每个处理器的线程数、每个线程的优先级、启用或禁用预取、高速缓存大小、页大小等。
可创建配置以涵盖所有可能的配置、一些有代表性的配置,例如测试优先级为X的线程A和优先级为Y的线程B而不是相反,等等。还可以以互不相关的方式(orthogonal manner)创建配置,例如,在第二参数或参数集固定的情况下,测试第一参数或参数集的所有可能性,然后使用第一参数或参数集的单个配置测试第二参数或参数集的所有可能性。在某些实施例中,可指示某些参数的重要性大于其他参数,从而相对于其他参数而言,测试重要性较大的参数的更多可能值。在某些实施例中,可限制配置集大小,以便最多创建预定数量的配置。
在步骤116,更改一个或多个配置参数以根据所述配置来配置执行程序的计算设备。参数可被直接设置,例如通过设置注册表项、环境变量等。其他参数可被间接地更改。例如,高速缓存大小可通过调用实用工具来有效地更改,该实用工具使用汇编指令将数据锁入某些高速缓存行,从而减少实际处理的高速缓存行。
在步骤118,程序在具有更新后的配置的计算设备上执行。在某些示例性实施例中,通过具有更新后的配置的计算设备执行程序模拟指定计算设备的执行。
在步骤120,可判定在步骤118执行的程序是否失败。检查程序是否失败可通过类似于步骤104描述的方式执行。
如果程序失败,则在步骤124,所述方法可以输出失败通知,例如写入文件,执行操作等。失败通知还可包括任何可用信息,例如错误代码、存储器映像等,这些信息可提供更多输入以供以后的调试。
然后可以在步骤128判定是否满足停止准则。停止准则可涉及先前的执行失败、发现错误、程序发出错误指示等,还涉及已在步骤112创建的所有配置上测试程序、是否达到预定执行次数、是否已经过预定执行时间或其他任何停止准则。
如果满足停止准则,则在步骤132,所述方法可以结束。如果步骤124未针对任何配置输出任何失败指示,则所述方法结束并提供成功指示。
如果不满足停止准则,则执行可以返回到步骤116,可将计算设备设置为采取另一配置并再次执行程序。
将理解,可以省略步骤112并且可在运行中生成配置,使得在程序针对特定配置成功执行之后,确定下一配置。如果省略创建所有配置,则在步骤112仅可确定第一配置,并且可在从步骤128返回到步骤116时确定每个其他配置。
还将理解,图1的方法可通过计算机程序或将计算设备设置为所需配置并执行所述程序的脚本来实现。计算机程序可实现为具有图形用户接口,用户借助此接口提供有关所需参数及其值或设置的指示,并且此接口可提供有关测试过程进度和状况的可视指示或其他指示。在其他实施例中,所述方法可实现为命令行程序,例如后台进程等。
现在参考图2,其中示出用于测试事务的装置的组件的框图。
所述环境包括计算设备200,计算设备200可包括一个或多个处理器204。任何处理器204均可以是中央处理单元(CPU)、微处理器、电子电路、集成电路(IC)等。备选地,计算设备200可实现为针对诸如数字信号处理器(DSP)或微控制器之类的特定处理器编写或移植到此类处理器的固件,也可实现为硬件或可配置硬件,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。处理器204可用于执行计算设备200或其任何子组件所需的计算。
在某些实施例中,计算设备200可包括输入/输出(I/O)设备212,例如终端、显示器、键盘和输入设备等,以便与系统交互、调用系统以及接收结果。但是将理解,系统可在没有人工操作和没有I/O设备212的情况下工作。
计算设备200可包括一个或多个存储设备220,存储设备220用于存储可执行组件,并且还可包含执行一个或多个组件期间的数据。存储设备220可以是永久性或易失性的。例如,存储设备220可以是闪盘、随机存取存储器(RAM)、存储芯片、诸如CD、DVD或激光盘之类的光存储设备;诸如磁带之类的磁存储设备、硬盘、存储区域网络(SAN)、网络连接存储(NAS)等;诸如闪存设备、记忆棒等之类的半导体存储设备。在某些示例性实施例中,存储设备220可以存储程序代码,所述程序代码可操作以导致任何处理器204执行与上述图1所示的任何步骤关联的操作,例如确定配置、设置配置、执行被测试程序等。
所述环境还可以包括测试计算设备244,将在该设备的不同配置上测试程序。测试计算设备244可以包括一个或多个处理器204'、I/O设备212'或存储设备220',它们与针对计算设备200描述的设备类似。
存储设备220可以包括一个或多个配置存储区域224,用于存储在上面测试程序的配置,或存储用于设置此类配置的指令或可执行代码。
下面详细描述的组件可实现为一个或多个相关计算机指令集,这些指令集被加载到存储设备220并且例如由任何处理器204或另一处理器执行。所述组件可布置为一个或多个可执行文件、动态库、静态库、方法、函数、服务等,可使用任何编程语言并在任何计算环境下对这些组件编程。
在某些实施例中,所加载的组件可以包括配置生成组件228,其用于生成被测试计算设备224的一个或多个配置,如结合图1中的步骤112描述的那样。
所加载的组件还可包括配置设置组件232,其用于根据特定配置设置被测试计算设备244,如结合图1中的步骤116描述的那样。将理解,配置设置组件232可备选地存储在被测试设备244的存储设备220'上,或者与分别存储在两个存储设备上的协作组件结合。
另一组件可以是数据和控制流管理组件236,其用于处理测试流,方式为:例如根据上面针对图1详细描述的方法来生成配置、启动根据配置设置测试计算设备244的配置、启动在测试计算设备244上执行程序,以及接收执行结果。
再一组件可以是用户接口组件238,其用于接收用户输入(例如,设置哪些参数),以及向用户提供输出(例如,程序在哪些配置上通过,在哪些配置上失败)。
所加载的组件还可包括通信组件240,其用于与测试计算设备244通信以设置配置,指示测试计算设备244执行程序、接收执行结果等。
测试计算设备的存储设备220'可以包括程序或配置存储器248,其用于存储待执行的程序,并且还包括通信组件240',该组件被设计为与计算设备200的通信组件240进行通信。
将理解,在某些实施例中,计算设备200和测试计算设备244可以是同一计算设备,这样,计算设备便可更改自己的参数并执行被测试程序。在此类设置中,除其他必要的更改以外,可以省略通信组件240和240'。
还将理解,可通过激励诸如机械臂之类的致动器来设置某些硬件参数(可通过物理地添加、移除或替换组件来更改这些参数),所述致动器用于完成所需设置,例如方式为:物理地添加或移除处理器,替换存储设备等。
本公开的方法和装置用于根据包括参数(某些参数为硬件参数)的设置来自动设置计算平台,以及针对多个设置测试程序,从而无需获取和维护具有多个配置(例如硬件配置)的多个计算平台的负担。使用所述方法和装置,足以使编程者开发程序来获取一个计算平台(优选地为具有多个选项(例如,多个处理器、大型高速缓存等)的高端计算平台),并且在多个不同配置上模拟程序执行,从而模拟多个计算设备。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图中的每个方框和框图中的某些方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
此处使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的那样,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定存在声明的特征、整数、步骤、操作、元素和/或组件,但是并不排除存在或增加一个或多个其他特征、整数、步骤、操作、元素、组件和/或它们构成的组。
本技术领域的技术人员知道,所公开的主题可以实现为系统、方法或计算机程序产品。因此,所公开的主题可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,本公开还可以实现为在任何有形表达介质中包含的计算机程序产品的形式,该计算机程序产品具有包含在介质中的计算机可用程序代码。
可以采用一个或多个计算机可用或计算机可读介质的任意组合。计算机可用或计算机可读介质例如可以是—但不限于—任何非瞬时性计算机可读介质、电、磁、光、电磁、红外线、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CDROM)、光存储设备、支持因特网或内联网之类的传输介质、或磁存储设备。需要指出,计算机可用或计算机可读介质甚至可以是上面能打印程序的纸介或其他适当的介质,从而能够例如通过光扫描纸介或其他介质,以电子的方式捕获程序,然后以适当的方式编译、解译或处理程序,并在必要时将程序存储在计算机存储器中。在本文件中,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输程序的介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可用介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可用程序代码。这种计算机可用程序代码可以使用任何适当的介质传输,包括—但不限于—无线、电线、光缆、RF等等。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言,另外也包括诸如Perl、Python、Ruby之类的脚本编写语言,或者其他任何程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要将本发明限定到所表述的形式。对于本领域的技术人员,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使本领域的技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
Claims (21)
1.一种由计算机化设备执行的计算机实现的方法,所述方法包括:
获得计算平台的至少两个配置;
对于所述至少两个配置中的每个配置:
根据该配置设置所述计算平台;以及
在使用该配置的所述计算平台上执行计算机程序,
由此测试所述计算机程序以便由各种计算机化装置正确执行。
2.根据权利要求1的计算机实现的方法,还包括在满足停止准则的情况下,停止所述设置和执行。
3.根据权利要求2的计算机实现的方法,其中从包括以下项的组选择所述停止准则:已针对所述至少两个配置执行所述计算机程序;已达到最大执行数;以及已达到最大执行持续时间。
4.根据权利要求2的计算机实现的方法,其中所述停止准则为:已发现与执行有关的错误。
5.根据权利要求1的计算机实现的方法,其中每个配置与所述计算平台的至少一个参数关联。
6.根据权利要求5的计算机实现的方法,其中所述至少一个参数为硬件参数,并且其中所述计算平台可被自动配置为修改所述硬件参数。
7.根据权利要求5的计算机实现的方法,其中从包括以下项的组选择所述至少一个参数:处理器数;每个处理器的线程数;线程的优先级;自动预取的启用或禁用;高速缓存大小;以及页大小。
8.根据权利要求1的计算机实现的方法,其中根据该配置设置所述计算平台包括从包含以下项的组选择的操作:设置注册表项;设置环境变量;以及锁定高速缓存行。
9.根据权利要求1的计算机实现的方法,其中根据该配置设置所述计算平台包括执行计算机指令。
10.根据权利要求1的计算机实现的方法,其中根据该配置设置所述计算平台包括物理地添加、移除或替换所述计算平台的组件。
11.一种具有处理单元和存储设备的装置,所述装置包括:
配置生成组件,用于确定计算平台的至少两个配置;
配置设置组件,用于根据所述至少两个配置中的一个配置设置所述计算平台;以及
数据和控制流管理组件,用于启动根据所述一个配置设置所述计算平台,并且启动在使用所述一个配置的所述计算平台上执行计算机程序,从而测试所述计算机程序以便由各种计算机化装置正确执行。
12.根据权利要求11的装置,其中所述数据和控制流管理组件针对多重的所述至少两个配置重复所述设置和执行。
13.根据权利要求12的装置,其中所述数据和控制流管理组件在满足停止准则的情况下,停止重复。
14.根据权利要求13的装置,其中从包括以下项的组选择所述停止准则:已针对所述至少一个配置中的全部配置执行所述计算机程序;已达到最大执行数;以及已达到最大执行持续时间。
15.根据权利要求13的装置,其中所述停止准则为:已发现与执行有关的错误。
16.根据权利要求11的装置,其中所述至少一个配置与所述计算平台的至少一个参数关联。
17.根据权利要求16的装置,其中所述至少一个参数为硬件参数,并且其中所述计算平台可被自动配置为修改所述硬件参数。
18.根据权利要求16的装置,其中从包括以下项的组选择所述至少一个参数:处理器数;每个处理器的线程数;线程的优先级;自动预取的启用或禁用;高速缓存大小;以及页大小。
19.根据权利要求11的装置,其中根据所述至少一个配置设置所述计算平台包括从包含以下项的组选择的操作:设置注册表项;设置环境变量;以及锁定高速缓存行。
20.根据权利要求11的装置,其中根据所述至少一个配置设置所述计算平台包括执行计算机指令。
21.根据权利要求11的装置,还包括用于物理地添加、移除或替换所述计算平台的组件的致动器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/425,431 US20130254747A1 (en) | 2012-03-21 | 2012-03-21 | Method and apparatus for testing programs |
US13/425,431 | 2012-03-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103324568A true CN103324568A (zh) | 2013-09-25 |
Family
ID=49193327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100870310A Pending CN103324568A (zh) | 2012-03-21 | 2013-03-19 | 用于测试程序的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130254747A1 (zh) |
CN (1) | CN103324568A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899369A (zh) * | 2015-06-01 | 2015-09-09 | 浪潮集团有限公司 | 一种利用perl脚本的仿真器多线程运行方法 |
CN107293330A (zh) * | 2017-06-12 | 2017-10-24 | 北京东土军悦科技有限公司 | 对随机存取存储器ram进行仿真验证的方法和仿真验证系统 |
CN108683567A (zh) * | 2018-05-30 | 2018-10-19 | 郑州云海信息技术有限公司 | 一种基于mcs和服务器的交换机端口故障测试方法及系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725889B2 (en) * | 2013-08-28 | 2020-07-28 | Micro Focus Llc | Testing multi-threaded applications |
JP2016039518A (ja) * | 2014-08-08 | 2016-03-22 | 株式会社日立製作所 | 管理計算機、管理方法、および管理プログラム |
EP3376442A1 (en) * | 2017-03-16 | 2018-09-19 | Siemens Aktiengesellschaft | Apparatus and method for a reusable functional failure test for a specific technical system |
US10846080B2 (en) * | 2018-09-06 | 2020-11-24 | International Business Machines Corporation | Cooperative updating of software |
CN112988535B (zh) * | 2021-03-03 | 2023-12-22 | 北京百度网讯科技有限公司 | 数据推送服务的测试方法、设备、存储介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1755644A (zh) * | 2004-09-30 | 2006-04-05 | 微软公司 | 基于程序执行不稳定性状态为软件程序提供自定义产品支持的方法、系统和设备 |
CN101030164A (zh) * | 2006-02-28 | 2007-09-05 | 国际商业机器公司 | 用于隔离错误的软件程序组件的方法和系统 |
US20090055805A1 (en) * | 2007-08-24 | 2009-02-26 | International Business Machines Corporation | Method and System for Testing Software |
-
2012
- 2012-03-21 US US13/425,431 patent/US20130254747A1/en not_active Abandoned
-
2013
- 2013-03-19 CN CN2013100870310A patent/CN103324568A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1755644A (zh) * | 2004-09-30 | 2006-04-05 | 微软公司 | 基于程序执行不稳定性状态为软件程序提供自定义产品支持的方法、系统和设备 |
CN101030164A (zh) * | 2006-02-28 | 2007-09-05 | 国际商业机器公司 | 用于隔离错误的软件程序组件的方法和系统 |
US20090055805A1 (en) * | 2007-08-24 | 2009-02-26 | International Business Machines Corporation | Method and System for Testing Software |
Non-Patent Citations (1)
Title |
---|
RAZA ABBAS SYED等: "Does Hardware Configuration and Processor Load Impact Software Fault Observability?", 《2010 THIRD INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899369A (zh) * | 2015-06-01 | 2015-09-09 | 浪潮集团有限公司 | 一种利用perl脚本的仿真器多线程运行方法 |
CN107293330A (zh) * | 2017-06-12 | 2017-10-24 | 北京东土军悦科技有限公司 | 对随机存取存储器ram进行仿真验证的方法和仿真验证系统 |
CN108683567A (zh) * | 2018-05-30 | 2018-10-19 | 郑州云海信息技术有限公司 | 一种基于mcs和服务器的交换机端口故障测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20130254747A1 (en) | 2013-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324568A (zh) | 用于测试程序的方法和装置 | |
Utting et al. | Practical model-based testing: a tools approach | |
Davidson et al. | Universal interface of TAUOLA: technical and physics documentation | |
US8271950B2 (en) | Test generation from captured user interface status | |
Singh et al. | Software testing | |
US6385765B1 (en) | Specification and verification for concurrent systems with graphical and textual editors | |
US8918678B2 (en) | Functional testing of a processor design | |
US20030028856A1 (en) | Method and apparatus for testing a software component using an abstraction matrix | |
Balasubramanian et al. | Polyglot: modeling and analysis for multiple statechart formalisms | |
CN106909498A (zh) | 一种Java程序注入故障的方法和系统 | |
Cunha et al. | PETTool: a pattern-based GUI testing tool | |
US20140214396A1 (en) | Specification properties creation for a visual model of a system | |
Ganov et al. | Test generation for graphical user interfaces based on symbolic execution | |
CN101263498A (zh) | 用于集成电路设计仿真的断言的开发 | |
US9218273B2 (en) | Automatic generation of a resource reconfiguring test | |
Pingree et al. | Validation of mission critical software design and implementation using model checking [spacecraft] | |
CN111382065B (zh) | 基于测试模板的验证流程管理系统及其方法 | |
CA2738422C (en) | Examining concurrent system states | |
US10579761B1 (en) | Method and system for reconstructing a graph presentation of a previously executed verification test | |
Jovanovic | Designing dependable process-oriented software-a CSP-based approach | |
Hsieh et al. | On application of data mining in functional debug | |
de Matos et al. | BETA: AB based testing approach | |
Yuan et al. | Substra: A framework for automatic generation of integration tests | |
CN112306853B (zh) | 一种模糊测试方法、装置、设备及介质 | |
CN115176233A (zh) | 以确定性顺序执行测试 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130925 |