用于确定测试用例效率的方法和系统的制作方法

文档序号:10471042阅读:296来源:国知局
用于确定测试用例效率的方法和系统的制作方法
【专利摘要】提供一种计算机实现的方法、计算机程序产品和系统,用于确定测试用例效率。在实现方式中,方法可以包括:确定包括多个测试用例的测试套件中的测试用例执行的每个代码单元,其中,待测试产品包括多个代码单元。所述方法还可以包括:确定用于所述测试用例的执行时间。所述方法可以进一步包括:至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,计算所述测试用例的效率等级。
【专利说明】
用于确定测试用例效率的方法和系统
技术领域
[0001]本公开一般涉及测试软件,更具体地说,涉及确定测试用例效率。
【背景技术】
[0002]在开发周期期间的测试软件可能是有挑战性的。软件包越大,待测试的源和/或可执行模块越个别,问题可能变得越有挑战性。几千个测试可能被运行。随着时间逝去,随着添加新测试,被称为测试套件的测试集合可能增长。可能难以确定测试套件中的哪些测试对测试软件是最有效和有效率的以及哪些测试可能是冗余的。

【发明内容】

[0003]根据实现方式,一种计算机实现的方法可以包括:确定包括多个测试用例的测试套件中的测试用例执行的每个代码单元,其中,待测试产品包括多个代码单元。所述方法还可以包括:由所述处理器确定用于所述测试用例的执行时间。所述方法还可以包括:至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,计算所述测试用例的效率等级。
[0004]可以包括以下特征中的一个或多个。所述方法还可以包括:确定在所述测试套件中执行所述多个代码单元中的每一个的次数。所述方法还可以包括:至少部分地基于在所述测试套件中执行所述多个代码单元中的每一个的次数,生成代码单元分布模型。
[0005]所述方法还可以包括:至至少部分地基于所述测试用例的效率等级,生成所述测试套件的执行模型。所述方法还可以包括:至少部分地基于所述执行模型,定义所述多个测试用例的执行的顺序。所述方法还可以包括:至少部分地基于所述执行模型,执行所述测试套件的子集。
[0006]所述方法还可以包括:至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,确定用于所述多个测试用例中的每一个的明智等级。
[0007]根据另一实现方式,一种计算机程序产品包括具有其上所存储的多个指令的计算机可读介质。当由处理器执行时,所述指令可以使得所述处理器进行包括以下的操作:确定包括多个测试用例的测试套件中的测试用例执行的每个代码单元,其中,待测试产品包括多个代码单元。也可以包括指令,用于确定用于所述测试用例的执行时间。也可以包括指令,用于至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,计算所述测试用例的效率等级。
[0008]可以包括以下特征中的一个或多个。也可以包括指令:确定在所述测试套件中执行所述多个代码单元中的每一个的次数。还可以包括指令,用于至少部分地基于在所述测试套件中执行所述多个代码单元中的每一个的次数,生成代码单元分布模型。
[0009]可以包括指令,用于至少部分地基于所述测试用例的效率等级,生成所述测试套件的执行模型。还可以包括指令,用于至少部分地基于所述执行模型,定义所述多个测试用例的执行的顺序。还可以包括指令,用于至少部分地基于所述执行模型,执行所述测试套件的子集。
[0010]还可以包括指令,用于至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,确定用于所述多个测试用例中的每一个的明智等级。
[0011]根据另一实现方式,一种系统可以包括:至少一个处理器设备以及与所述至少一个处理器设备耦合的至少一个存储器架构。所述至少一个处理器设备可以被配置用于:确定包括多个测试用例的测试套件中的测试用例执行的每个代码单元,其中,待测试产品包括多个代码单元。所述至少一个处理器还可以被配置用于:确定用于所述测试用例的执行时间。所述至少一个处理器可以进一步被配置用于:至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,计算所述测试用例的效率等级。
[0012]可以包括以下特征中的一个或多个。所述至少一个处理器可以进一步被配置用于:确定在所述测试套件中执行所述多个代码单元中的每一个的次数。所述至少一个处理器还可以被配置用于:至少部分地基于在所述测试套件中执行所述多个代码单元中的每一个的次数,生成代码单元分布模型。
[0013]所述至少一个处理器可以进一步被配置用于:至少部分地基于所述测试用例的效率等级,生成所述测试套件的执行模型。所述至少一个处理器还可以被配置用于:至少部分地基于所述执行模型,定义所述多个测试用例的执行的顺序。所述至少一个处理器还可以被配置用于:至少部分地基于所述执行模型,执行所述测试套件的子集。
[0014]所述至少一个处理器可以进一步被配置用于:至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,确定用于所述多个测试用例中的每一个的明智等级。
[0015]在附图和以下描述中阐述一个或多个实现方式的细节。从描述、附图和权利要求,其它特征和优点将变得显然。
【附图说明】
[0016]图1是根据本公开实现方式的包括执行测试覆盖处理的计算设备的分布式计算网络的不意图;
[0017]图2是根据本公开实现方式的图1的测试覆盖处理的流程图;
[0018]图3图示性描述根据示例实施例的图1的测试覆盖处理的实现方式;
[0019]图4图示性描述根据示例实施例的图1的测试覆盖处理的实现方式;
[0020]图5图示性描述根据示例实施例的图1的测试覆盖处理的实现方式;
[0021]图6图示性描述根据示例实施例的图1的测试覆盖处理的实现方式;
[0022]图7是根据本公开实现方式的图1的计算设备的示意图。
[0023]各个附图中的相同标号指示相同要素。
【具体实施方式】
[0024]参照图1,示出测试覆盖处理10。关于以下讨论,意在要理解,可以各种方式实现测试覆盖处理10。例如,测试覆盖处理10可以实现为服务器侧处理、客户机侧处理或服务器侧/客户机侧处理。
[0025]例如,经由测试覆盖处理10s,测试覆盖处理10可以实现为纯服务器侧处理。替代地,经由客户机侧应用lOcl、客户机侧应用10c2、客户机侧应用10c3和客户机侧应用10c4中的一个或多个,测试覆盖处理10可以实现为纯客户机侧处理。还替代地,与客户机侧应用10cl、客户机侧应用10c2、客户机侧应用10c3以及客户机侧应用10c4组合,经由测试覆盖处理10s,测试覆盖处理10可以实现为服务器侧/客户机侧处理。在这样的示例中,测试覆盖处理1s可以进行测试覆盖处理10的至少一部分功能,并且客户机侧应用lOcl、10c2、10c3和10c4中的一个或多个可以进行测试覆盖处理10的至少一部分功能。
[0026]相应地,如本公开中所使用的测试覆盖处理10可以包括以下的任何组合:测试覆盖处理10s、客户机侧应用1cl、客户机侧应用10c2、客户机侧应用10c3和客户机侧应用10c4o
[0027]还参照图2,并且如以下将更详细地讨论的,测试覆盖处理10可以确定(100)包括多个测试用例的测试套件中的测试用例所执行的每个代码单元,其中,待测试产品包括多个代码单元。测试覆盖处理10也可以确定(102)用于测试用例的执行时间。至少部分地基于测试用例所执行的代码单元的数量以及用于测试用例的执行时间,测试覆盖处理10也可以计算(104)测试用例的效率等级。
[0028]测试覆盖处理1s可以是服务器应用,并且可以驻留在计算设备12上而且可以由计算设备12执行,计算设备12可以连接到网络14(如因特网或局域网)。计算设备12的示例可以包括但不限于:个人计算机、服务器计算机、一系列服务器计算机、迷你计算机、大型主机计算机或专用网络设备。
[0029]可以存储在耦合到计算设备12的存储设备16上的测试覆盖处理1s的指令集和子例程,可以由计算设备12内所包括的一个或多个处理器(未示出)和一个或多个存储器架构(未示出)执行。存储设备16的示例可以包括但不限于:硬盘驱动器;带驱动器;光驱;RAID设备;NAS设备、存储域网、随机存取存储器(RAM);只读存储器(ROM);以及所有形式的闪速存储器存储设备。
[0030]网络14可以连接到一个或多个次级网络(如网络18),其示例可以包括但不限于:例如,局域网;广域网;或内部网。
[0031]客户机侧应用10(31、10(:2、10(33、10(34的示例可以包括但不限于肥13浏览器或专用应用(例如在移动平台上运行的应用)。可以在(分别)耦合到客户机电子设备28、30、32、34的存储设备20、22、24、26上(分别)存储的客户机侧应用10(31、10(:2、10(33、10(34的指令集和子例程,可以由(分别)并入到客户机电子设备28、30、32、34中的一个或多个处理器(未不出)和一个或多个存储器架构(未示出)执行。存储设备20、22、24、26的示例可以包括但不限于:硬盘驱动器;带驱动器;光驱;RAID设备;随机存取存储器(RAM);只读存储器(ROM),以及所有形式的闪速存储器存储设备。
[0032]客户机电子设备28、30、32、34的示例可以包括但不限于个人计算机28、膝上型计算机30、移动计算设备32、笔记本计算机34、网本计算机(未示出)、服务器计算机(未示出)、游戏控制台(未示出)、启用数据的电视控制台(未示出)以及专用网络设备(未示出)。客户机电子设备28、30、32、34可以每个执行操作系统。
[0033]用户36、38、40、42可以直接通过网络14或通过次级网络18访问测试覆盖处理10。此外,可以经由链接线路44通过次级网络18访问测试覆盖处理1。
[0034]各个客户机电子设备(例如客户机电子设备28、30、32、34)可以直接或间接地耦合到网络14(或网络18)。例如,示出个人计算机28直接耦合到网络14。此外,示出膝上型计算机30经由膝上型计算机30与无线接入点(WAP)48之间所建立的无线通信信道44,无线地耦合到网络14。相似地,示出移动计算设备32经由移动计算设备32与蜂窝网络/桥50(其被示出直接耦合到网络14)之间所建立的无线通信信道46,无线地耦合到网络14 JAP 48可以是例如能够在膝上型计算机30与WAP 48之间建立无线通信信道44的IEEE 802.1la,802.1lb,802.118、802.1111^-?1和/或蓝牙设备。此外,示出个人计算机34经由硬连线网络连接直接耦合到网络18。
[0035]如以上参照图2—般讨论的,测试覆盖处理10可以确定(100)包括多个测试用例的测试套件中的测试用例执行的每个代码单元,其中,待测试产品包括多个代码单元。测试覆盖处理10也可以确定(102)用于测试用例的执行时间。至少部分地基于测试用例执行的代码单元的数量以及用于测试用例的执行时间,测试覆盖处理10也可以计算(104)测试用例的效率等级。
[0036]测试覆盖处理10可以确定(100)包括多个测试用例的测试套件中的测试用例所执行的每个代码单元,其中,待测试产品包括多个代码单元。测试覆盖处理10可以进一步确定
(102)用于测试用例的执行时间。测试套件可以包括多个测试用例。测试套件可用于测试待测试产品。待测试产品可以包括例如软件应用、软件模块、软件模块的套件和/或软件应用或软件应用的部分或甚至单个代码行的任何集合。测试用例可以测试待测试产品,例如,以识别缺陷(如bugs)(如操作故障和安全脆弱性)。多个测试用例可以一起提供测试套件,其可以测试待测试产品的各个不同方面,和/或可以通过不同方式和/或以不同程度测试待测试产品的各方面。受测试套件(和/或测试套件内的单独测试用例)测试的待测试产品的不同方面,可以包括例如不同部分(例如代码部分、功能部分等)、不同属性(例如缺陷的标识、操作故障的标识、安全脆弱性的标识)、功能测试等。至少测试套件中所包括的多个测试用例的子集可以测试待测试产品。待测试产品可以包括多个代码单元。通用代码覆盖工具可以在代码覆盖模式下运行测试用例,以产生描述测试用例执行待测试产品中的什么代码的原始数据。这可以通过以下算法来完成:
[0037]对于测试套件T0...μ中的每个测试用例1\:
[0038]?提取待测试产品中所执行的每个类集合
[0039]?按类名称对所提取的类的集合进行排序(C0...N,从而对于与测试用例i关联的类j,与特定测试用例关联的特定类可以引用为Clj)
[0040]?记录测试用例花费于运行的执行(运行MM^(R1)
[0041]虽然已经关于所执行的类描述了以上算法中所包括的代码单元,但算法可以不限于所执行的类。例如,待测试产品内所包括的代码单元可以包括但不限于类、编译单元、基本块、语句等。如上所述,测试覆盖处理10可以确定(100)测试套件Το...μ中的测试用例1\所执行的待测试产品的每个代码单元(例如每个类集合)。可以按代码单元名称C0...N对每个代码单元(例如每个类集合)进行排序。测试覆盖处理10还可以确定(102)并且记录用于测试用例!\运行的执行时间。执行时间可以是花费于测试用例从开始运行到结束的总时间。执行时间可以存储在包括但不限于数据文件、数据库等的数据存储中。
[0042]在实施例中,测试覆盖处理10可以确定(106)在测试套件中执行待测试产品的多个代码单元中的每一个的次数。如上所述,待测试产品可以包括多个代码单元。继续于以上算法,通过以下算法,测试覆盖处理10可以确定(106)在测试套件T0...M中执行多个代码单元中的每一个的次数:
[0043]?编译执行每个类的每个测试用例(T1)的完整列表
[0044]?按类名称(C0...N)对结果排序
[0045]?通过所排序的类名称数组迭代
[0046]?对每个类名称出现多少次计数
[0047]?创建命名的映射项Μ,其中,键是类名称,并且值是类名称执行计数
[0048]如上所述,测试覆盖处理10可以通过命名的查找表确定(106)在测试套件Το...μ中可以执行多个代码单元(例如,如在以上算法中所描述的类)中的每一个的次数,从而Mclass—_e可以返回执行c lass_name的测试用例的数量。
[0049]仅为了示例性的目的提供上述算法。算法不意图限制本公开,因为其它算法可以是可能的。例如,可以确定执行多个代码单元中的每一个的次数并且创建命名的映射项的任何算法可以替代上述算法。
[0050]至少部分地基于在测试套件中执行多个代码单元中的每一个的次数,测试覆盖处理10可以生成(108)代码单元分布模型。参照图3,测试覆盖处理可以生成(108)分布模型300,以显示在测试套件Το...μ中可以执行多个代码单元(例如类)中的每一个多少次。从测试用例重叠的观点来看,该数据可用于将测试套件的整体“质量”传送到测试套件拥有者或开发者。测试套件的质量可以至少部分地基于覆盖的程度(例如所覆盖的代码单元的百分比)和测试套件的各个测试用例所覆盖的代码单元中的重叠的程度中的一个或多个。例如,图3包括X轴上的18个测试用例和y轴上达800个代码单元。如图3所示,可以在一个、两个或三个测试用例中测试多个代码单元中的大部分,指示测试用例的重叠是合理地低的。分布模型300还包括小数量例外,指示这些测试用例可能值得进一步调查关于小数量例外存在并且跟其它测试用例不一致的原因。由于例外与待测试产品有关,因此可以花费进一步的时间探查它们,以便改进整体测试套件的效率。注意,分布模型300包括每个测试用例所执行的多个代码单元中的至少一个。这可以指示测试用具使用的基础架构代码单元(例如类)。可以排除这些测试用例,以提供代码单元分布的更精细的定义。虽然图3中示出条形图,但这仅是为了示例性的目的。分布模型可以是包括但不限于模型、曲线图、图表等的任何视觉显不O
[0051]至少部分地基于测试用例所执行的代码单元的数量以及用于测试用例的执行时间,测试覆盖处理10可以进一步计算(104)测试用例的效率等级。通过以下算法,测试覆盖处理10可以计算(104)测试用例(T1)的效率等级(E1):
[0052]?将速度(Vi)设置为O
[0053]?对于测试用例1\所执行的每个类,V1增量为在测试套件Το...μ中执行该类的次数的倒数
[0054]?将 Ei 设置为 Vi/Ri
[0055]如在以上算法中所描述的,测试覆盖处理10可以将初始速度(V1)分配为零(O)。对于测试用例!\所执行的每个代码单元,速度V1可以测试套件T0...μ执行代码单元的次数的倒数为增量。例如,如果测试套件中的五(5)个测试用例执行该特定代码单元,则速度¥1可以递增五分之一(1/5)。在另一示例中,如果测试套件中的一(I)个测试用例执行该特定代码单元,则速度1可以递增1/1。然后通过将速度1除以(如以上所计算出的)用于测试用例运行的执行时间R1,可以计算(104)效率等SE1。如果测试用例快速执行许多代码单元,并且仅在一个特定测试用例中测试代码单元,则其可以具有相对高的效率等级。如果测试用例执行几个公用代码单元并且花费长时间运行,则其可以具有相对低的效率等级。
[0056]如图4所示,至少部分地基于测试用例的效率等级,测试覆盖处理10可以生成
(110)测试套件的执行模型。测试覆盖处理10可以生成(110)执行模型400,以视觉地显示用于测试套件中所包括的多个测试用例中的每一个的效率等级。测试覆盖处理10可以从最高效率等级到低效率等级对每个测试用例排序,产生执行模型400,以显示可以最快覆盖用于待测试产品的最多代码的测试套件内所包括的多个测试用例中的每一个。如果一个测试用例快速执行许多代码单元,则该测试用例可以具有相对高的效率等级。如果一个测试用例缓慢地执行小数量代码单元,则该测试用例可以具有相对低的效率等级。执行模型400可以包括X轴上的测试套件中的每个测试用例名称以及y轴上的效率等级。对于执行模型400内所包括的每个测试用例,可以对特定测试用例所执行的代码单元402的数量以及用于该特定测试用例运行的执行时间404生成条形图。虽然图4中示出条形图,但这仅是为了示例性的目的。执行模型可以是包括但不限于模型、曲线图、图表等的任何视觉显示。
[0057]例如,如图4所示,恰第一测试用例(如CallHierarchy3)可以测试1775个代码单元中的1552个。在3个测试用例之后,该数量上升到1738个代码单元。要执行前3个测试用例的总时间在第一测试用例(如CallHierarchy3)之后是455秒,在前3个测试用例之后是1613秒,并且在运行全部18个测试用例之后是9871秒。通过运行3个最高效率测试用例,测试覆盖处理10可以在1613/9871 (16%)的时间中,覆盖待测试产品中的代码单元的1738/1775(97.9%)o
[0058]在实施例中,至少部分地基于执行模型,测试覆盖处理10可以定义(112)多个测试用例的执行顺序。至少部分地基于执行模型,测试覆盖处理10可以进一步执行(114)测试套件的子集。通过图示以上结果,通过用于评估可以不测试多少代码单元(例如类)以及运行测试用例的子集可以节省多少时间的能力,测试覆盖处理10可以运行原始测试套件的测试用例的子集。故此,作为用于快速确定待测试产品的版本的质量的方式,可以通过相对有效率的方式测试待测试产品,并且可以最早测试最常测试的代码。
[0059]图5包括以上效率数据的另一示例图。图5凸显运行超越来自图4的三个最高效率测试用例的附加测试用例的缩小返回。图5示出每个随后测试用例所测试的附加代码单元502以及其可能花费多少时间504添加每个测试用例。
[0060]至少部分地基于测试用例所执行的代码单元的数量以及用于测试用例的执行时间,测试覆盖处理10可以进一步确定(116)用于多个测试用例中的每一个的明智等级。明智等级可以例如提供给定测试用例每单位时间所测试的代码单元的数量的指示。测试覆盖处理10可以计算哪些测试用例运用公用代码单元。因为特定条待测试产品代码可能是有故障的,所以这对于确定大量测试用例是否可能失败是有用的。该测量可以被称为明智等级。通过以下算法,测试覆盖处理10可以确定(116)测试用例(T1)的明智等级(S1):
[0061]?将速度(Vi)设置为O
[0062]?对于测试用例1\所执行的每个类,V1增量为在测试套件Το...μ中执行该类的次数
[0063]?将 Si 设置为 Vi/Ri
[0064]如在以上算法中所描述的,测试覆盖处理10可以将初始速度(V1)分配为零(O)。对于测试用例!\所执行的每个代码单元(例如类),速度V1可以测试套件T0...μ执行代码单元的次数为增量(注意,为了计算以上效率等级(E1),速度(V1)递增测试套件T0...μ中执行类的次数的倒数)。例如,如果测试套件中的五(5)个测试用例执行该特定代码单元,则速度1可以递增五(5)。在另一示例中,如果测试套件中的一(I)个测试用例执行该特定代码单元,则速度Vi可以递增I。这可以对于多个代码单元中的每一个重复。然后通过将速度Vi除以(如以上所计算出的)用于测试用例运行的执行时间化,可以计算明智等级S1。如果测试用例快速执行许多代码单元,并且仅在一个特定测试用例中测试代码单元,则其可以具有非常高的明智等级。如果测试用例执行少数独特代码单元并且花费长时间运行,则其可以具有非常低的明智等级。
[0065]参照图6,至少部分地基于测试用例的明智等级,测试覆盖处理10可以生成测试套件的明智模型。测试覆盖处理10可以生成明智模型600,以视觉地显示用于测试套件中所包括的多个测试用例中的每一个的明智等级。测试覆盖处理10可以从最高明智等级到低明智等级对每个测试用例排序,产生明智模型600,以显示可以最快覆盖用于待测试产品的最多代码的测试套件内所包括的多个测试用例中的每一个。如果一个测试用例快速执行许多代码单元,则该测试用例可以具有高明智等级。如果一个测试用例缓慢地执行小数量代码单元,则该测试用例可以具有低明智等级。明智模型600可以包括X轴上的测试套件中的每个测试用例名称以及y轴上的效率等级。对于明智模型600内所包括的每个测试用例,可以对特定测试用例所执行的代码单元602的数量以及用于该特定测试用例运行的执行时间602生成条形图。虽然图6中示出条形图,但这仅是为了示例性的目的。明智模型可以是包括但不限于模型、曲线图、图表等的任何视觉显示。
[0066]例如,图6提供视觉显示,其测试用例可以被运行以非常快速测试代码单元的非常公用路径。如图6所示,通过运行单个测试用例(例如MovePropertyFi Ies)以在415秒中覆盖458个公用代码单元(例如类),测试覆盖处理10可以确定(116)高明智等级。
[0067]出于各种原因,测试覆盖处理10可以计算(104)每个测试用例的效率等级。例如,测试覆盖处理10可以计算(104)每个测试用例的效率等级,以定义(112)多个测试用例的执行顺序,从而可以通过最有效并且有效率的方式测试用于待测试产品的代码。此外,作为用于快速确定待测试产品的版本的质量的手段,测试覆盖处理10可以计算(104)每个测试用例的效率等级,以定义(112)多个测试用例的执行顺序,从而较早而非较迟测试用于待测试产品的最常测试的代码。测试覆盖处理10也可以计算(104)每个测试用例的效率等级,以通过分析跨越测试套件内所包括的多个测试用例所测试的代码的分布,理解测试套件的整体“质量”。
[0068]还参照图7,示出计算系统12的示意图。虽然该图中示出计算系统12,但这仅是为了说明的目的,并非意图限制本公开,因为其它配置是可能的。例如,能够整体地或部分地执行测试覆盖处理10的任何计算设备可以替代图7内的计算设备12,其示例可以包括但不限于客户机电子设备28、30、32、34。
[0069]计算系统12可以包括微处理器200,被配置为例如对测试覆盖处理10处理数据并且执行指令/代码。微处理器200可以耦合到存储设备16。如上所述,存储设备16的示例可以包括但不限于:硬盘驱动器;带驱动器;光驱;RAID设备;NAS设备、存储域网、随机存取存储器(RAM);只读存储器(ROM);以及所有形式的闪速存储器存储设备。1控制器202可以被配置为将微处理器200与各种设备(如键盘204、鼠标206、USB端口(未示出)以及打印机端口(未示出))耦合。显示器适配器208可以被配置为将显示器210(例如CRT或LCD监视器)与微处理器200耦合,而网络适配器212(例如以太网适配器)可以被配置为将微处理器200耦合到网络14(例如因特网或局域网)。
[0070]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0071]计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是一一但不限于一一电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0072]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0073]用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如Smalltalk、C++等,以及常规的过程式编程语言一诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0074]这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0075]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0076]也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0077]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现
[0078]在此所使用的术语仅用于描述特定实施例的目的,而并非意图限制本公开。如在此使用的,单数形式“一(a)”、“一(an)”以及“该”意图也包括复数形式,除非上下文另外清楚地指明。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,指定所声明的特征、整体(integer )、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组的存在或添加。
[0079]以下权利要求中的所有手段或步骤加功能元件的对应结构、材料、动作和等效物,意图包括用于结合如具体请求保护的其它所请求保护的元件来执行功能的任何结构、材料或动作。已经为了说明和描述的目的呈现了本公开的描述,但并非意图以所公开的形式穷尽或限制本公开。在不脱离本公开的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显然的。选取并且描述实施例以便最佳地解释本公开的原理和实际应用,并且使得本领域普通技术人员能够针对具有如适合于所预期的具体用途的各种修改的各种实施例理解本公开。
[0080]已经因此详细地并且通过参照其实施例描述了本申请的公开,将显然的是,在不脱离如权利要求所限定的本公开的范围的情况下,修改和变化是可能的。
【主权项】
1.一种计算机实现的方法,包括: 由处理器确定包括多个测试用例的测试套件中的测试用例执行的每个代码单元,其中,待测试产品包括多个代码单元; 由所述处理器确定用于所述测试用例的执行时间;以及 由所述处理器至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,计算所述测试用例的效率等级。2.如权利要求1所述的计算机实现的方法,还包括: 确定在所述测试套件中执行所述多个代码单元中的每一个的次数。3.如权利要求2所述的计算机实现的方法,还包括: 至少部分地基于在所述测试套件中执行所述多个代码单元中的每一个的次数,生成代码单元分布模型。4.如权利要求1所述的计算机实现的方法,还包括: 至少部分地基于所述测试用例的效率等级,生成所述测试套件的执行模型。5.如权利要求4所述的计算机实现的方法,还包括: 至少部分地基于所述执行模型,定义所述多个测试用例的执行的顺序。6.如权利要求4所述的计算机实现的方法,还包括: 至少部分地基于所述执行模型,执行所述测试套件的子集。7.如权利要求1所述的计算机实现的方法,还包括: 至少部分地基于所述测试用例执行的代码单元的数量以及用于所述测试用例的执行时间,确定用于所述多个测试用例中的每一个的明智等级。8.—种系统,包括被配置为进行如权利要求1至7中的任一所述的方法步骤的装置。
【文档编号】G06F11/36GK105824748SQ201610041647
【公开日】2016年8月3日
【申请日】2016年1月21日
【发明人】M.S.富尔顿, J.R.麦克米伦
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1