CN115176233A - 以确定性顺序执行测试 - Google Patents
以确定性顺序执行测试 Download PDFInfo
- Publication number
- CN115176233A CN115176233A CN202180017243.4A CN202180017243A CN115176233A CN 115176233 A CN115176233 A CN 115176233A CN 202180017243 A CN202180017243 A CN 202180017243A CN 115176233 A CN115176233 A CN 115176233A
- Authority
- CN
- China
- Prior art keywords
- attribute
- test
- value
- test case
- generating
- 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.)
- Granted
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/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/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/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
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)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
- Eye Examination Apparatus (AREA)
- Production Of Liquid Hydrocarbon Mixture For Refining Petroleum (AREA)
Abstract
用于检测和定位待测系统(SUT)中的故障的方法包括生成初始测试向量集,其提供减小的测试空间的完整n‑wise覆盖。方法还包括生成并执行初始测试用例集以获得第一执行结果集。方法还包括至少部分地基于第一组执行结果集来确定一个或多个测试用例执行失败。方法还包括从所选择的失败的测试用例生成新的测试用例集。方法还包括执行新的测试用例集以获得第二执行结果集。方法还包括至少部分地基于第二执行结果集来检测和定位故障。
Description
技术领域
本发明涉及计算机程序的测试,并且更具体地,涉及减少测试用例基础设施。
背景技术
计算机化装置控制我们生活的几乎每个方面,从写文档到控制交通灯。然而,新设计的计算机化装置常常容易出错,因此需要发现并校正错误的测试阶段。测试阶段被认为是设计计算机化装置时最困难的任务之一。全面的测试是重要的,取决于如何利用计算机化装置,没发现错误的成本可能是巨大的。用于检查软件的覆盖工具提供了被测试的软件在测试期间被运用得多好的度量,并且由此给出了软件高质量的保证水平。
发明内容
根据本发明的一个或多个实施例,用于检测和定位待测系统(SUT)中的故障的方法包括将对SUT的输入建模为属性值对(attribute-value pairs)的集合,并且向来自属性值对的集合的每个属性值对分配概率值。该方法还包括至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间。该方法还包括生成提供减小的测试空间的完整n-wise覆盖的初始测试向量集。该方法还包括从初始测试向量集生成初始测试用例集。该方法还包括执行初始测试用例集以获得第一执行结果集。该方法还包括至少部分地基于第一执行结果集确定一个或多个测试用例执行失败。该方法还包括从所选择的失败的测试用例生成新的测试用例集。该方法还包括执行新的测试用例集以获得第二执行结果集。该方法还包括至少部分地基于第二执行结果集来检测和定位故障。
在本发明的一个或多个实施例中,基于SUT的架构限制来进一步减小笛卡尔乘积空间。进一步,在本发明的一个或多个实施例中,架构限制包括以下至少一个:如果第二属性具有特定属性值则第一属性不能采取一个或多个候选属性值的要求;如果第二属性具有特定属性值则第一属性必须采取特定候选属性值的要求;或者如果第二属性具有特定属性值则引入第三属性的要求。
在本发明的一个或多个实施例中,以散列表示属性值对和对应的概率值。进一步,向要被测试的第一属性值对分配高于第二属性值对的第二概率值的第一概率值。
在本发明的一个或多个实施例中,至少部分地基于第二执行结果集来检测和定位故障包括确定导致故障的属性值的特定组合。至少部分地基于导致所述故障的属性值的所述特定组合来生成失败的测试用例的回归桶(regression bucket)。
技术方案还可以通过本发明的一个或多个实施例的系统、计算机程序产品、设备、机器、装置或其他实际应用来实现。
另外,在本发明的一个或多个实施例中,用于检测和定位待测系统(SUT)中的故障的方法包括将对SUT的输入建模为属性值对的集合。该方法还包括向来自属性值对的集合的每个属性值对分配概率值。该方法还包括至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间。该方法还包括生成提供减小的测试空间的完整n-wise覆盖的初始测试向量集。该方法还包括从初始测试向量集生成初始测试用例集。该方法还包括执行初始测试用例集以获得第一执行结果集。该方法还包括至少部分地基于第一执行结果集来确定一个或多个测试用例执行失败。该方法还包括:从所选择的失败的测试用例生成新的测试用例集,其中生成新的测试用例集包括:关于所选择的失败的测试用例中的每个属性,至少部分地通过将所选择的失败的测试用例中的属性的相应属性值改变为在执行失败的所述一个或多个测试用例中的任何测试用例中该属性不存在的每个其他候选属性值,来生成新的测试用例的相应子集。该方法还包括执行新的测试用例集以获得第二执行结果集。该方法还包括至少部分地基于第二执行结果集来检测和定位故障。
根据一个方面,提供了用于检测和定位待测系统(SUT)中的故障的方法,该方法包括:将对SUT的输入建模为属性值对的集合;向所述属性值对的集合中的每个属性值对分配概率值;至少部分地基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;生成提供减小的测试空间的完整n-wise覆盖的初始测试向量集;从初始测试向量集生成初始测试用例集;执行初始测试用例集以获得第一执行结果集;至少部分地基于第一执行结果集确定一个或多个测试用例执行失败;从所选择的失败的测试用例生成新的测试用例集;执行新的测试用例集以获得第二执行结果集;以及至少部分基于第二执行结果集来检测并定位故障。
根据另一方面,提供系统,包括:存储器;以及与存储器耦合的处理器,处理器被配置为执行用于检测和定位待测系统(SUT)中的故障的方法,方法包括:将对SUT的输入建模为属性值对的集合;向属性值对的集合中的每个属性值对分配概率值;至少部分地基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间缩减到缩减的测试空间;生成提供减小的测试空间的完整n-wise覆盖的初始测试向量集;从初始测试向量集生成初始测试用例集;执行初始测试用例集以获得第一执行结果集;至少部分地基于第一执行结果集确定一个或多个测试用例执行失败;从所选择的失败的测试用例生成新的测试用例集;执行新的测试用例集以获得第二执行结果集;以及至少部分基于第二执行结果集来检测并定位故障。
根据另一方面,提供了计算机程序产品,该计算机程序产品包括其上存储有计算机可执行指令的计算机可读存储介质,这些指令在由处理器执行时使处理器执行用于检测和定位SUT中的故障的方法,该方法包括:将对SUT的输入建模为属性值对的集合;向属性值对的集合中的每个属性值对分配概率值;至少部分地基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;生成提供减小的测试空间的完整n-wise覆盖的初始测试向量集;从初始测试向量集生成初始测试用例集;执行初始测试用例集以获得第一执行结果集;至少部分地基于第一执行结果集确定一个或多个测试用例执行失败;从所选择的失败的测试用例生成新的测试用例集;执行新的测试用例集以获得第二执行结果集;以及至少部分基于第二执行结果集来检测并定位故障。
根据另一方面,提供了用于检测和定位待测系统(SUT)中的故障的方法,该方法包括:将对SUT的输入建模为属性值对的集合;向属性值对的集合中的每个属性值对分配概率值;至少部分地基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;生成提供减小的测试空间的完整n-wise覆盖的初始测试向量集;从初始测试向量集生成初始测试用例集;执行初始测试用例集以获得第一执行结果集;至少部分地基于第一执行结果集确定一个或多个测试用例执行失败;从所选择的失败的测试用例生成新的测试用例集,其中生成新的测试用例集包括:关于所选择的失败的测试用例中的每个属性,至少部分地通过将所选择的失败的测试用例中的该属性的相应属性值改变成在执行失败的一个或多个测试用例中的任何测试用例中该属性的不存在的每个其他候选属性值,生成新的测试用例的相应子集;执行新测试用例集以获得第二执行结果集;以及至少部分基于第二执行结果集来检测并定位故障。
根据另一方面,提供了用于检测和定位待测系统(SUT)中的故障的方法,该方法包括:将对SUT的输入建模为属性值对的集合;至少部分基于对应的概率值,通过排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的测试空间减小至减小的测试空间;生成提供与属性值对的集合相关联的减小的测试空间的完整n-wise覆盖的初始测试向量集;从初始测试向量集生成初始测试用例集;执行初始测试用例集以获得第一执行结果集;至少部分地基于第一执行结果集确定一个或多个测试用例执行失败;从所选择的失败的测试用例生成新的测试用例集,其中生成新的测试用例集包括改变所选择的失败的测试用例中的相应属性值以生成每个新的测试用例;执行新测试用例集以获得第二执行结果集;以及至少部分基于第二执行结果集来检测并定位故障。
通过本发明的技术实现了附加技术特征和优点。在本文中详细描述了本发明的实施例和方面,并且这些实施例和方面被认为是所要求保护的主题的一部分。为了更好的理解,参考详细说明和附图。
附图说明
现在将仅通过示例并参考以下附图描述本发明的优选实施例:
图1示出了根据本发明的一个或多个实施例的计算机化环境的示意图;
图2是表示根据本发明的实施例的提供测试基础设施的模块的框图;
图3是示出了根据本发明的一个或多个示例实施例的使用组合测试设计(CTD)的故障检测和定位以及暴露所检测的故障的失败测试用例的回归桶的生成的示意性混合数据流/框图;
图4描绘了根据本发明的一个或多个实施例的示例CTD向量集;
图5描绘了根据本发明的一个或多个实施例的示例CTD向量;
图6是根据本发明的一个或多个示例实施例的用于使用CTD技术检测并定位n-wise故障并且生成暴露所检测的n-wise故障的失败的测试用例的回归桶的说明性方法的过程流程图;
图7描绘了根据本发明的一个或多个实施例的用于提供在测试基础设施中为待测系统运行的测试的确定性顺序的流程图;以及
图8描绘了根据本发明的一个或多个实施例的计算机系统。
此处所描绘的图是说明性的。在不偏离本发明的精神的情况下,可以对这里所描述的图或操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦接”及其变形描述了在两个元件之间具有通信路径并且并不暗示元件之间的直接连接而在其间没有中介元件/连接。所有这些变型被认为是说明书的一部分。
具体实施方式
本发明的示例性实施例涉及(除其他外)用于使用组合测试设计(CTD)技术来执行故障检测和定位并且用于生成暴露检测到的故障的测试用例的回归桶的装置、系统、方法、计算机可读介质、技术和方法。在本发明的示例性实施例中,所检测和定位的故障发生在待测试系统(SUT)中。SUT可以是硬件系统或软件系统。进一步,在本发明的示例性实施例中,可以在遵守关于SUT的架构限制的同时执行故障检测和定位。
另外,用于测试SUT的覆盖工具提供对SUT在测试期间运行得如何的测量,并且由此给出SUT具有高质量的保证水平。在本领域中已知多种类型的覆盖,诸如陈述覆盖、线路覆盖、条件覆盖、路径覆盖、方法覆盖等。一种附加的覆盖方法是功能覆盖。功能覆盖被设计成测量检查预定功能行为的测试的量、部分或类似度量。在测量了功能覆盖后,质量保证(QA)人员可以设计额外的测试以检查未测试的行为。
然而,在不连续优化产品、测试和环境的情况下,测试基础设施可能变得难以置信地昂贵并且每测试周期的成本增加。随着更多的测试被添加,运行更多的测试套件,并且支持服务的复杂性连同每个测试周期的成本增加。测试环境、测试依赖性和测试套件需要以与装运的产品(即,SUT)相同的严格性来管理。因此,管理测试基础设施是技术挑战,并且进而,测试基础设施的有效减少是技术挑战。应注意,测试基础设施的减少不暗示测试SUT的质量的降低。相反,技术挑战是随着测试基础设施的减少测试的质量将被提高。
本发明的实施例解决了这样的技术挑战。根据本发明的一个或多个实施例,在系统上执行针对SUT的减少的测试用例集。应注意,该系统不同于SUT;使用该系统执行SUT。可以使用组合测试设计(CTD)来生成减少的测试用例集。可以基于来自该减小的集的失败的测试的子集来识别错误。进一步,根据本发明的一个或多个实施例,使用逆CTD来定位系统中的故障。
根据本发明的一个或多个实施例,CTD是针对交互要求执行的,诸如成对交互、n元组交互或任何其他交互。测试计划可以提供确保满足交互要求的足够的覆盖任务。在一些示例性实施例中,测试计划基于使用功能覆盖模型对测试空间的建模。测试空间可表示输入、场景、配置、应用的内部状态、或可能需要测试的任何其他方面。功能覆盖模型可包括一组功能属性。在本发明的其他实施例中,覆盖模型可以包括本领域已知的多种覆盖类型中的一种,例如语句覆盖、线路覆盖、条件覆盖、路径覆盖、方法覆盖等。覆盖的类型不影响本文描述的减少测试基础设施技术。
进一步,关于测试计划,测试空间可以定义可以在SUT上执行的潜在测试。与覆盖任务相反,测试可以与准确一个潜在测试相关联。在本发明的一些示例性实施例中,若干不同的测试可以保持同一潜在测试。
在本发明的一些示例性实施例中,CTD方法的动机是大部分错误取决于少量功能属性之间的交互。CTD算法还可处理可扩展性问题。CTD算法可以假设组合空间太大而不能被显式地表示,并且它们使用不同技术来尝试生成优化的测试计划,而不显式地枚举所有可能的组合。该算法的示例可以是对正交阵列的减少或覆盖阵列问题。这些技术在它们对值组合所允许的限制类型中或者在所请求的交互级别的类型中受到限制,并且随着模型变量的数量增加,仍然遇到可扩展性问题。
在本发明的示例实施例中,对SUT的输入被建模为属性值对的集合。更具体地,到SUT的输入可以被建模为属性的集合,每个属性可以采用一个或多个对应的属性值。在本发明的示例实施例中,可以将包含属性值对的所有可能组合的整个笛卡尔乘积空间减小到提供整个测试空间的完整n-wise覆盖的较小的测试向量集。例如,如果假设建模了四个不同的属性A、B、C和D,并且如果进一步假设属性A可以采用四个不同的值;属性B可以采用三个不同的值;属性C可以采用三个不同的值;并且属性D可以采用两个不同的值,则属性值对的可能组合的总数将是4*3*3*2=72。因此,在该说明性示例中,整个笛卡尔乘积空间将包括72个不同的属性值对组合。如前所述,这72个不同的属性值对的组合可以被减小到仍然提供笛卡尔乘积空间的完整n-wise覆盖的较小的组合集。例如,参考上文介绍的相同示例,如果寻求完全的成对覆盖,则72个不同的组合可被减少到12个不同组合,其一起包括属性值的每个可能的成对交互。提供n-wise覆盖所需的减少数量的组合可以随着n增加而对数地增加。
在本发明的示例性实施例中,包括属性值对的所有组合的整个笛卡尔乘积空间被减小到更小的CTD测试向量集,该CTD测试向量集提供对于所期望的n的完整n-wise覆盖。在复杂的硬件或软件系统中,属性和对应的候选属性值的总数可能相当大,在这种情况下,构成整个笛卡尔乘积空间的属性值的可能组合的总数可能是天文数字般大的,使得在实践上测试所有可能的组合是不可行的。将整个笛卡尔乘积空间减小到仍然提供完整n-wise覆盖的实质上更少数量的CTD测试向量允许任何n-wise(或m-wise,其中m<n)故障将被检测到,而不必直接测试测试空间中的每个可能的组合。
在本发明的示例性实施例中,二进制决策图等可被用于执行减小并标识提供完整n-wise覆盖的减小的CTD向量集。在本发明的示例实施例中,所生成的每个CTD测试向量包括唯一的属性值的组合,并且CTD测试向量集一起包括属性值的每个可能的n-wise交互。具体地,每个CTD向量可具有与被建模的属性的数量相对应的维度,其中CTD向量的每个元素是对应属性的相应属性值。然而,所生成的CTD向量集可能不是唯一的。即,可以有多个不同CTD向量集,每个CTD向量集提供完整的n-wise覆盖。在本发明的示例实施例中,可以随机地选择CTD向量,同时仍然确保完全的n-wise覆盖。在其他示例实施例中,可以用记住的特定标准来选择初始CTD向量集,诸如例如,以增大或减小CTD向量集内的特定属性值的表示。
在本发明的示例性实施例中,在生成初始CTD测试向量集后,他们被用于生成对应的测试用例集。例如,可提供CTD测试向量集作为到测试用例生成工具的输入,该测试用例生成工具被配置成为每个CTD向量生成各自对应的测试用例。每个测试用例可以被设计为测试包括在对应的CTD向量中的属性值的特定组合之间的交互。
在本发明的示例性实施例中,然后执行测试用例。每个测试用例的执行导致成功的执行结果(其指示与测试用例相关联的属性值的组合不包含n-wise(或m-wise,其中m<n)错误)或失败的执行结果(其指示与测试用例相关联的属性值的组合包含n-wise(或m-wise,其中m<n)错误)。在本发明的示例性实施例中,然后选择特定的失败测试用例,并且将逆组合学应用到失败测试用例以产生能够暴露漏洞的新的测试用例集。在本发明的示例性实施例中,将逆组合学应用到所选择的失败的测试用例包括针对每个属性生成相应的新的测试用例。由此,所生成的新测试用例的数量可等于属性的数量。在本发明的示例性实施例中,在每个新的测试用例中,所选择的失败的测试用例中的对应的属性的属性值被改变为用于该属性的在任何失败的测试用例中不存在的属性值,并且用于每个其他属性的相应的属性值与在所选择的失败的测试用例中存在的属性值相比是不变的。
然后,可以评估那些产生成功执行结果的新测试用例,以检测和定位n-wise(或m-wise,其中m<n)错误。具体地,可以基于成功执行的那些新的测试用例而识别导致错误的特定属性值对。然后可以基于属性值对的错误产生组合来生成测试用例的回归桶。更具体地,例如,可以确定属性值(其包括被确定为导致错误的属性值)的每种可能的组合,并且可以输出用于测试这些组合的对应测试用例的回归桶以供手动测试者使用。具体地,在本发明的示例性实施例中,在回归桶中包含的所有测试用例在执行时将失败,直到错误被固定,之后所有回归桶测试用例将通过(即,产生成功的执行结果)。
在本发明的示例性实施例中,可对SUT应用架构限制。架构限制可包括对SUT的输入的各种限制中的任何限制。例如,示例限制可以是,如果给定属性具有特定属性值,则从具有某些属性值中排除一个或多个其他属性。另一示例架构限制可以是,如果给定属性具有特定属性值,则一个或多个其他属性必须具有某些属性值。又一示例架构限制可以是如果且仅当特定属性具有特定属性值时引入新属性。应当理解,以上架构限制的示例仅仅是说明性的而不是穷尽的。
在本发明的示例性实施例中,在执行将整个笛卡尔空间减小到提供所期望的完整n-wise覆盖的初始CTD向量集之前,考虑架构限制。即,在本发明的示例性实施例中,首先从笛卡尔乘积空间中排除违反任何架构限制的属性值的特定组合,然后执行到提供完整的期望的n-wise覆盖的CTD向量集的减少。这样,可以保证初始CTD向量集中不包括违反架构限制的属性值组合。进一步,在本发明的示例性实施例中,当对应于初始CTD向量的所选测试用例失败并且被选择用于扩展以获得被设计为检测和定位n-wise错误的新的测试用例集时,可以首先执行扩展,而不考虑任何架构限制。然后,可以排除违反架构限制的任何新测试用例。以此方式,可以确保该扩展提供了尽可能多的在失败的测试用例周围的邻域中的测试空间的覆盖。此外,在本发明的示例性实施例中,可以首先生成失败测试用例的回归桶而不考虑架构限制,然后可以从回归桶中排除违反架构限制的任何测试用例。也就是说,可以首先生成与整个笛卡尔乘积测试空间中的包括导致n-wise或更小阶错误的属性值的特定组合的所有可能组合相对应的测试用例,并且然后减少这些测试用例以排除违反限制的任何测试用例。可替代地,包括在回归桶中的测试用例可以从减小的笛卡尔空间(初始CTD向量集从其中选择)中选择,在这种情况下,生成回归桶以仅包括包含导致错误的属性值的子集并且不违反任何架构限制的属性值的那些组合。
本发明的示例性实施例包括产生为计算机技术提供各种改进的技术效果的各种技术特征。例如,本发明的示例性实施例包括逆组合学的技术特征,其用于从所选择的失败的测试用例中扩展测试用例集。该技术特征允许在扩展的单次迭代中检测和定位n-wise或更小阶的故障。该技术效果表示对除错和故障检测计算机技术的改进,因为它以专门设计为促进故障的检测和定位的方式使得创建在所选择的失败的测试用例周围的附加测试用例自动化。因此,根据本发明的示例性实施例的新测试用例的自动生成能够更有效地暴露故障并且使用与手动测试用例生成根本不同的方法。本发明的示例性实施例还包括以下技术特征:生成测试用例的回归桶,该测试用例测试包括导致n-wise故障的属性值的特定子集的属性值的每个可能的组合。因此,回归桶仅包括在校正故障之前全部失败并且在校正故障之后全部通过的测试用例。因此,根据本发明的示例实施例的失败的测试用例的回归桶的自动化生成提供对计算机技术的改进,通过为测试器或自动化测试算法提供测试用例集(确保其中每个测试用例都失败)从而使得测试器或自动化测试算法可以使用测试用例的回归桶来验证在执行除错之后所有测试用例最终通过时故障已经被校正。
使用采用CTD生成的测试的技术挑战是在生成测试程序的情况中需要对SUT执行动作的特定操作顺序。在这种情况下,使用本CTD技术减小测试空间是技术挑战。例如,考虑以下动作(A、B和C)可以在SUT上以任何顺序发生并且测试要求在每个动作内具有一组断点以在下一动作发生之前发生:
动作A<runToCompletion,StopBkpt1,StopBkpt2,StopBkpt3>
动作B<runToCompletion,StopBkpt4,StopBkpt5>
动作C<runToCompletion,StopBkpt6>
这里,动作A、B和C中的每个动作可以是可由SUT执行/在SUT上执行的操作。每个动作可以与至少一个属性相关联,并且可对每个测试的属性分配特定值。基于所分配的值,期望测试的期望结果。如果获得期望的结果,则认为测试通过,否则认为测试失败。例如,动作A可以与在第一测试中被分配了值a1、在第二测试中被分配了a2等的属性A-a相关联。在每个测试中分配给A-a的值可以是不同的。例如,a1、a2等的值被指定,a1=runToCompletion、a2=StopBkpt1、a3=StopBkpt2和a4=StopBkpt3。
现在,参考以上动作A、B和C,SUT的测试需要的是考虑动作的任何以下操作顺序:ABC、ACB、BAC、BCA、CAB和CBA。在任何这些操作顺序中,如果这些动作中的任何动作不运行至完成,而是在断点处停止,然后仅在已发生另一动作之后运行至完成,则操作的顺序可以像以下四个示例:
1.A<StopBkpt1>-B<runToCompletion>-A<runToCompletion>-C<runToCompletion>;
2.A<StopBkpt1>-B<runToCompletion>-C<runToCompletion>-A<runToCompletion>;
3.A<StopBkpt1>-B<runToCompletion>-A<StopBkpt3>-C<runToComplet ion>-A<runToCompletion>;以及
4.A<StopBkpt2>-B<StopBkpt4>-A<runToCompletion>-C<StopBkpt6>-B<runToCompletion>-C<runToCompletion>。
鉴于本CTD技术标识要在组合减小(combinatorial reduction)中使用的属性/值对,基于CTD的本测试基础设施制作多个模型以覆盖每种特定操作顺序的情况。这里,一个模型必须针对动作本身的顺序来创建,然后单独的第二模型必须表示每个动作的执行状态(即,为属性分配的值)。此外,必须覆盖模型以便识别要使用的测试空间。这不仅耗时,而且容易出错。
本发明的实施例解决了该技术挑战。根据本发明的一个或多个实施例,通过识别要求具有特定操作顺序的测试的属性并且进一步识别限制(例如,动作A必须在动作B之前发生)来解决技术挑战。更进一步,确定属性的唯一值的全笛卡尔乘积。然后使用笛卡尔乘积对该测试集应用组合减少和测试用例消减,以去除任何冗余测试。在本发明的一个或多个实施例中,可以在单个步骤中(即,使用单个模型)执行标识属性和限制以及创建笛卡尔乘积。
在本发明的一个或多个实施例中,关于排序的信息可以使用马尔可夫链(其被用作有效载荷)被存储到执行CTD减少和扩展以生成用于SUT的测试程序的系统中。马尔可夫链是描述一系列可能事件的随机模型,其中每个事件的概率仅取决于先前事件中获得的状态。
现在参考图1,其示出了根据本发明的实施例的计算机化环境的示意图。计算机化环境100可包括一个或多个计算机化工具。应注意,该描绘是一个可能的框图示例,并且为了清楚起见,可能不描绘一些组件。
在本发明的一个或多个实施例中,用户110(诸如开发者、QA工作人员、测试者、设计者、验证工程师等)可与计算机化环境100交互。用户110可利用人机界面(MMI)112,诸如终端、显示器、键盘、输入装置等。
在本发明的一些示例性实施例中,覆盖模型定义工具102可以用于定义测试覆盖模型,诸如功能覆盖模型等。在本发明的一些示例性实施例中,用户110可以定义待测试的属性,例如在测试功能覆盖的情况下的功能属性。在本发明的一些示例性实施例中,可以使用类似的工具来限定测试空间。在一些示例性实施例中,覆盖模型可适于用作测试模型。
在本发明的一些示例性实施例中,测试执行引擎108可以用于测试SUT。将注意的是,SUT可以是硬件、固件、软件、其组合、或任何其他类型的计算机化装置。测试执行引擎108可以是基于模拟的验证工具、测试生成平台等。测试执行引擎108可以操作性地耦合到测试计划工具106并且被配置为根据测试计划来执行测试。在一些示例性实施例中,测试计划工具106可以提供以供测试执行引擎108执行的测试。将注意的是,动态验证是比测试SUT更宽的概念,并且其进一步包括测试计划、覆盖分析等。测试执行引擎108提供可以在动态验证期间执行的操作的整个范围的仅一个方面并且不应被用来狭义地解释术语“动态验证”。
在本发明的一些示例性实施例中,覆盖分析工具104被配置为基于由测试执行引擎108执行的动态验证来测量SUT的测试空间的覆盖。例如,覆盖分析工具104可以是功能覆盖分析工具。覆盖分析工具104提供覆盖测量,诸如覆盖测试空间或所定义的测试计划的一部分,指示在由测试执行引擎108执行的动态验证期间被覆盖的覆盖任务。用户110可审阅覆盖测量和/或覆盖任务的列表。
在本发明的一些示例性实施例中,测试计划工具106可以定义要被覆盖的测试计划。在本发明的一些示例性实施例中,测试计划可以是要被覆盖的覆盖任务集。在本发明的一些示例性实施例中,测试计划工具106可以提供可能覆盖测试计划的测试,诸如基于存储在数据存储库中的测试基准,其包括以覆盖SUT的特定方面的已知/估计的测试。作为另一示例,测试计划工具106被配置为生成以覆盖覆盖任务的测试。用户110可审阅测试计划、所选择的测试等。在本发明的一些示例性实施例中,用户110可以提供测试计划工具106用于确定测试计划的目标的参数,诸如期望的交互水平。本发明的实施例使得能够消除所生成的测试中的任何冗余。
虽然图1中的描绘已经用包括覆盖模型定义工具102、覆盖分析工具104、测试计划工具106和测试执行引擎108的指定组件来描述,但是本发明的实施例不限于这些组件或系统配置,并且可以用采用更少或附加组件的其他系统配置来实现。
图2是表示根据本发明的实施例的提供测试基础设施的模块的框图。更具体地,基础设施包括测试生成器208。测试生成器208访问测试基础设施,诸如测试用例储存库202,其存储可用于验证SUT 214的正确性的测试用例的套件。每个测试用例指定要被应用于SUT214的输入和应当响应于该输入而返回的预期响应(以指示其正确操作)。通常,将测试用例组织成集(测试套件),例如针对SUT 214的不同组件的每个测试套件。
测试生成器208针对在SUT 214上的测试的每次运行而创建执行桶。桶指定针对以机器可读语言(诸如基于XML的)运行期望测试用例要执行的操作。具体地,在完全测试的情况下,在SUT 214的每个组件上执行所有可用的测试用例;相反,在回归测试的情况下,执行被限于所选择的测试用例的子集。这样获得的桶可以保存到文件中。
根据本发明的一个或多个实施例,测试生成器208接收事件排序信息220。事件排序信息220指示如本文描述的一组属性/操作的特定顺序。例如,事件排序信息220指示要测试的属性的预定序列顺序。在本发明的一个或多个实施例中,事件排序信息220可以马尔可夫链的形式来提供。测试生成器208基于事件排序信息220对桶212中的测试进行排序。
测试执行引擎108控制从文件读取的桶的执行。对于桶的每个测试用例,这涉及到SUT 214的对应输入的应用。响应于此,SUT 214将对应的输出返回到测试执行引擎108。测试执行引擎108通过将其输出与对应的期望响应(例如,从文件中提取的)进行比较来确定测试用例的结果。将测试用例的结果(即,当两个值匹配时是正的,否则是负的)保存到日志中。例如,这可以通过标准测试跟踪工具(TTT)来实现。测试的(当前)运行的结果在日志中可用,以供该结果的分析。
对于大的、复杂的SUT 214,测试用例基础设施202可以包含大量的重复测试动作/测试用例。根据本发明的某些实施例,一种被开发以解决这些挑战的技术结合了指纹储存库206的使用,指纹储存库206具有包括与存储在测试储存库202中的多个回归测试相对应的指纹集的信息存储。在一个实施例中,由指纹生成器204生成指纹。例如,指纹储存库206可包括存储在测试储存库202中的大部分(如果不是全部)测试的指纹以及对测试的副本位于测试基础设施的何处的引用,类似于书籍中的索引。每个指纹唯一地标识由对应的测试用例覆盖的特定代码路径。以这种方式,系统可以识别指纹(和对应的测试),其是冗余的并且在一些情况下是重复的。
根据本发明的实施例,处理由测试生成器208生成并由测试执行引擎108执行的回归测试的结果216可包括确定在每个生成的回归测试的执行期间所遍历的代码路径以及至少部分地基于代码路径针对每个执行的回归测试生成指纹。在本发明的一些实施例中,这些步骤可由指纹生成器204执行。
冗余分析器218将对应于由测试生成器208生成的所有测试用例的指纹与存储在指纹储存库206中的多个指纹进行比较。冗余分析器218提供由测试生成器208生成的具有与存储在指纹储存库206中的一个或多个指纹相匹配的指纹的回归测试用例的列表。该信息用于从测试储存库202选择并丢弃重复的测试用例(如下所述)。
图3是示出了根据本发明的一个或多个示例实施例的使用CTD技术的故障检测和定位以及暴露所检测的故障的失败测试用例的回归桶的生成的示意性混合数据流/框图。图6是根据本发明的一个或多个示例实施例的示意性方法600的过程流程图,该方法用于使用CTD技术检测并定位n-wise故障并且生成暴露所检测的n-wise故障的失败测试用例的回归桶。图6结合图1、图2和图3进行描述。
现在描述根据本发明的示例实施例的示意性方法和用于执行该方法的对应数据结构(例如,模块、单元和其他此类组件)。应注意,图6中所描绘的方法600和/或图7中所描绘的方法700的每一操作可由本文中所描述的一个或多个模块等执行。这些模块可以用如本文描述的硬件、软件和/或固件的任何组合来实现。在某些示例实施例中,这些模块中的一个或多个可以至少部分地被实现为包括计算机可执行指令的软件和/或固件模块,该计算机可执行指令在由处理电路执行时使得一个或多个操作被执行。本文中被描述为被配置为实现示例实施例的系统或装置可以包括一个或多个处理电路,每个处理电路可以包括一个或多个处理单元或节点。计算机可执行指令可以包括计算机可执行程序代码,该计算机可执行程序代码在由处理单元执行时可以使得包含在计算机可执行程序代码中或由计算机可执行程序代码引用的输入数据被访问和处理以产生输出数据。
结合图3参考图6,在本发明的示例性实施例中,在方法600的框602,到SUT 214的输入被建模为属性值对302的集合。任何数量的属性可用于对SUT输入进行建模,并且每个属性可以采用任何数量的候选属性值。在框604,执行一个或多个n-wise覆盖CTD向量生成模块304的计算机可执行指令以生成初始CTD向量集306,初始CTD向量集306提供与属性值对302的集合相关联的整个笛卡尔乘积空间的n-wise覆盖。
特别地,包含属性值对302的所有可能组合的整个笛卡尔乘积空间被减小到提供整个测试空间的完整n-wise覆盖的更小的CTD测试向量集306。在本发明的示例实施例中,CTD向量集306所提供的完整n-wise覆盖可以是完整成对覆盖。例如,如果假设建模了三个属性,即,如图4所示的“名字”属性、“颜色”属性和“形状”属性,并且如果进一步假设“名字”属性可以采用4个不同的属性(戴尔、瑞秋、安德鲁和瑞恩),“颜色”属性可以采用2个不同的属性(绿色、蓝色),“形状”属性可以采用3个不同的属性(圆形、正方形、三角形),则属性值对的可能组合的总数将是4*3*2=24。因此,在该示意性示例中,整个笛卡尔乘积空间将包括属性值对的24个不同组合。
属性值对的24个不同的组合可以被减少到更小的组合集(即,CTD向量集306),该更小的组合集仍然提供笛卡尔乘积空间的完整n-wise覆盖。例如,如果寻求完全的成对覆盖,则可以将24个不同组合减少到12个不同组合,这12个不同组合一起包括属性值的每个可能的成对交互。在图4中示出示例的CTD向量集400。示例的CTD集向量400包括属性“名字”、“颜色”和“形状”的属性值之间的所有成对交互。
二进制决策图等可被用于执行减小并标识减小的CTD向量集306,其提供完整n-wise覆盖。虽然CTD向量集306中的每个CTD向量包括唯一的属性值的组合,但是CTD向量集306本身可以不是唯一的。即,可以有多个不同CTD向量集,每个CTD向量集提供完整的n-wise覆盖。例如,虽然图4描绘了用于所描述的示例属性和属性值的示例CTD向量集400,但是可以理解,替换的CTD向量集(其包括不同的属性值的组合)也可以独立地提供完整的n-wise覆盖。还可理解,虽然示例CTD向量集400提供完全的成对覆盖和部分的3-wise覆盖,但是将需要更大数量的CTD向量来提供完全的3-wise覆盖。更一般地说,随着n增加,提供完整的n-wise覆盖所需的CTD向量的数量随着n对数地增加。
图5描绘了可以包括在CTD向量集306中的类型的示例CTD向量500。示例CTD向量500包括多个属性502。如前所述,属性502可以用于对SUT 214的输入进行建模。属性502可与属性值504相关联。具体地,每个属性502可以具有对应的属性值504,其可以是该属性被允许采用的一个或多个候选属性值中的一个属性值。
进一步,根据本发明的一个或多个实施例,n-wise覆盖CTD向量生成模块104通过标识和排除不遵守事件排序信息220的那些组合来减小与属性值对302的集合相关联的整个笛卡尔乘积空间。在本发明的一个或多个实施例中,事件排序信息220用于生成与SUT214相关联的架构限制。在减小整个笛卡尔乘积空间以排除不满足关于SUT 214的架构限制的组合之后,n-wise覆盖CTD向量生成模块304生成进一步减小的初始CTD向量集306。在本发明的示例实施例中,每个CTD向量306仅从被减小的测试空间中选择,该减小的测试空间排除违反关于SUT 214的结构限制的属性值的无效组合。此处,无效组合包括不匹配事件排序信息220的一系列属性。
因此,根据事件排序信息220,针对笛卡尔乘积空间创建特定第一属性必须在特定第二属性之前使用的架构限制。例如,无论如何,动作A都必须在动作B之前执行。架构限制可另外包含对SUT 214的输入的多种限制中的任一者。例如,示例限制可以是,如果给定属性具有特定属性值,则从具有某些属性值的属性中排除一个或多个其他属性。另一示例架构限制可以是,如果给定属性具有特定属性值,则一个或多个其他属性必须具有某些属性值。又一示例架构限制可以是,如果且仅当特定属性具有特定属性值时引入新属性。应当理解,以上示例架构限制仅仅是说明性的而不是穷尽的。
在本发明的示例实施例中,在方法600中,在执行将整个笛卡尔空间减小到提供所期望的完整n-wise覆盖的初始CTD向量集306之前,考虑架构限制。即,首先从笛卡尔乘积空间中排除违反任何架构限制的特定的属性值组合,然后执行减少到提供完全期望的n-wise覆盖的CTD向量集306。这样,可以保证初始CTD向量集306中不包括违反架构限制的属性值的组合。
再次参见图6,在方法600的框606,在本发明的示例性实施例中,可以执行测试用例生成模块208以从初始CTD测试向量集306生成对应的测试用例集202,然后由测试用例执行模块108执行该测试用例集202以产生每个测试用例的执行结果(通过或失败)。
例如,CTD测试向量集306可以作为输入被提供给测试用例生成工具208,该测试用例生成工具208针对每个CTD向量生成相应的对应测试用例。测试用例集202中的每个测试用例测试在CTD向量集306的对应CTD向量中所包括的属性值的特定组合之间的交互。可理解,CTD向量集及其对应的测试用例在本文中有时可以互换地描述和/或描绘。例如,图4中描绘的示例CTD向量集400可以互换地被认为是对应的测试用例集,其测试由CTD向量集400表示的属性值的特定组合。
此外,根据本发明的一个或多个实施例,测试生成器208接收事件排序信息220。事件排序信息220指示如本文描述的一组属性/操作的特定顺序。在本发明的一个或多个实施例中,事件排序信息220可以马尔可夫链的形式来提供。测试生成器208基于事件排序信息220对桶212中的测试进行排序。
在方法600的框608,执行测试用例执行模块108的计算机可执行指令以确定测试用例集202中的任何测试用例是否失败。在本发明的示例实施例中,每个测试用例202的执行导致成功的执行结果(其指示包括在对应的CTD向量306中的属性值的组合不包含n-wise(或m-wise,其中m<n)错误)或失败的执行结果(其指示包括在对应的CTD向量306中的属性值的组合包含n-wise(或m-wise,其中m<n)错误)。
参考图4中描绘的示例,在框606执行对应于示例CTD向量集400的测试用例,以产生针对每个测试用例的相应的执行结果。具体地,图4中说明性地描绘两个测试用例402和404导致失败。失败测试层402测试以下属性值的组合:戴尔、蓝色、三角形,其分别对应于属性名字、颜色和形状。失败测试用例404测试以下属性值的组合:戴尔、蓝色、圆形,其分别对应于属性名字、颜色和形状。虽然“戴尔”和“蓝色”在对应于失败测试用例402的CTD向量和对应于失败测试用例404的CTD向量两者中均存在,但是在此阶段并不清楚“戴尔”和“蓝色”是否产生成对错误;“戴尔”和(“三角形”或“圆形”)是否产生成对错误;或者“蓝色”和(“三角形”或“圆形”)是否产生成对错误。方法600的后续操作可以利用逆组合学来扩展在所选择的失败测试用例周围的测试空间,以检测和定位导致n-wise错误(在图4中描绘的示例的情况下的成对错误)的属性值的特定组合。
响应于在框608处的否定确定,因为初始测试用例集202中没有失败,所以方法600可结束。因为初始CTD向量集306(测试用例集202基于该初始CTD向量集306而生成)提供了完全的n-wise覆盖,所以可以确保不存在n-wise或更小阶的错误。然而,初始测试用例集202中的所有测试用例的成功执行并不确保更高阶错误(k-wise,其中k>n)不存在。
另一方面,响应于在框608处指示测试用例集202的执行导致一个或多个失败测试用例314的肯定判定,方法600包括使用逆CTD测试用例生成模块316来执行和选择特定的失败测试用例314,并对所选择的失败测试用例314应用逆组合学以产生新的测试用例集318,新的测试用例集318能够被用于检测和定位导致n-wise或更小阶错误的属性值的组合。
在本发明的示例实施例中,对所选择的失败的测试用例314应用逆组合学包括:针对每个属性生成相应的新的测试用例318。由此,所生成的新测试用例的数量可等于属性的数量。在示例实施例中,在每个新的测试用例318中,将对应属性的所选择的失败的测试用例314中的属性值改变为该属性在任何其他失败的测试用例中不存在的属性值,并且每个其他属性的相应属性值与在所选择的失败的测试用例314中存在的属性值不变。
再次参考图4中描绘的示例,假设在框610处选择了失败的测试用例402,则可以生成示例的新的测试用例集406。在本发明的示例实施例中,可以通过将所选择的失败的测试用例402中的对应属性的属性值改变成在任何其他失败的测试用例中不存在的不同值来生成每个示例新测试用例406。例如,通过将失败测试用例402中的“名字”属性的属性值从“戴尔”改变为“安德鲁”同时保持其他属性的属性值与失败测试用例402中的属性值相同,获得与CTD向量<安德鲁,蓝色,三角形>对应的第一新测试用例。类似地,通过将失败测试用例402中的“颜色”属性的属性值从“蓝色”改变为“绿色”同时保持其他属性的属性值与失败测试用例402中的属性值相同,获得与CTD向量<戴尔,绿色,三角形>对应的第二新测试用例。最后,通过将失败测试用例402中的“形状”属性的属性值从“三角形”改变为“正方形”同时保持其他属性的属性值与失败测试用例402中的属性值相同,获得与CTD向量<戴尔,蓝色,正方形>对应的第三新测试用例。
可以理解,被改变以获得每个新的测试用例406的相应属性值显然在所选择的失败的测试用例402中不存在。此外,每个改变的属性值也不存在于任何其他失败的测试用例(例如,失败的测试用例404)中。具体地,第一新测试用例的被改变的属性值“安德鲁”在任何失败的测试用例中均不存在;第二新测试用例的被改变的属性值“绿色”在任何失败的测试用例中不存在;并且第三新测试用例的被改变的属性值“正方形”任何失败的测试用例中不存在。
在通过对所选择的失败的测试用例314执行逆组合来生成新的测试用例集318之后,在方法600的框612,(多个)测试用例执行模块108用于执行新的测试用例318。进一步,在框614处,一个或多个n-wise错误定位模块322基于所选择的失败测试用例314中的属性及其对应的原始失败的属性值来检测和定位n-wise或更小阶的错误,该属性和其对应的原始失败的属性值在被改变时导致新的测试用例通过。具体地,执行(多个)n-wise错误定位模块322的计算机可执行指令以评估新测试用例集318的执行结果320,以基于产生成功执行结果的那些新测试用例来检测和定位n-wise或更小阶错误。如本文所使用的,假定CTD向量集306完全n-wise覆盖,则更小阶错误是指m-wise错误,其中m<n。
再次参考图4所示的假设成对错误的检测和定位的示例,执行新测试用例集406导致对应于CTD向量<安德鲁,蓝色,三角形>的第一新测试用例通过;对应于CTD向量<戴尔,绿色,三角形>的第二新测试用例通过;对应于CTD向量<戴尔,蓝色,正方形>的第三新测试用例失败。在示例实施例中,n-wise错误定位模块322基于第三新测试用例的失败的执行结果来确定“形状”属性不贡献成对错误,因为将属性值从失败测试402中的“三角形”改变成第三新测试用例中的“正方形”依旧导致失败。
另一方面,n-wise错误定位模块322可以确定其属性值被改变以获得通过执行的新测试用例的属性贡献成对错误。具体地,在本发明的示例性实施例中,基于对应于CTD向量<安德鲁,蓝色,三角形>的第一新测试用例的成功执行结果,n-wise错误定位模块322确定“名字”属性和原始失败属性值“戴尔”贡献成对错误。类似地,在示例实施例中,基于对应于CTD向量<戴尔,绿色,三角形>的第二新测试用例的成功执行结果,n-wise错误定位模块322确定“颜色”属性和原始失败属性值“蓝色”也贡献成对错误有。
因此,基于该组新的测试用例318的执行结果320,n-wise错误定位模块322可以确定,在图4中描绘的示例中,分别具有属性值“戴尔”和“蓝色”的属性“名字”和“颜色”是造成成对错误的原因。更一般地说,n-wise错误定位模块322可以基于对新用例集318的执行结果320的评估,并且更具体地,基于在所选择的失败的测试用例中被改变以获得通过的新测试用例的原始属性值,来确定导致n-wise或更小阶错误的特定属性值对。
图4中描绘的示例假设提供完全成对覆盖的初始CTD向量集400,在这种情况下,可以在对所选择的失败测试用例应用逆组合以获得新的测试用例集318的单次通过中检测和定位成对或更小阶的错误(例如,导致错误的单个属性值)。通常,如果初始CTD向量集306提供n-wise覆盖,则对所选择的失败测试用例应用逆组合的单次通过揭示n-wise或更小阶的错误。虽然可以使用提供完全n-wise覆盖的初始CTD向量集来检测k>n的k-wise错误,但是这不是保证,因为初始CTD向量集306不包括所有k-wise交互。然而,提供完整n-wise覆盖(例如,完整成对覆盖)的初始CTD向量集306可以提供某种程度的k-wise覆盖,其中k>n(例如,3-wise覆盖),并且因此,基于所选择的特定CTD向量,方法600可以在对所选择的失败测试用例应用逆组合的单次或多次通过后揭示k-wise错误。
再次参考图6,在方法600的框616处,执行一个或多个回归桶生成模块326的计算机可执行指令以生成并输出失败测试用例的回归桶212,其包括笛卡尔乘积空间中包括原始失败属性值对的所有可能组合。在本发明的示例实施例中,回归桶生成模块326接收属性值对的错误产生子集324的指示作为输入,并且确定并输出回归桶212,回归桶212仅包括对应于笛卡尔乘积空间中的包括导致所检测的错误的特定属性值的所有可能组合的那些测试用例。
再次参考图4的示例,回归桶生成模块326接收导致成对错误的属性“名字”和“颜色”以及相应属性值“戴尔”和“蓝色”作为输入,确定笛卡尔乘积空间中所有包括“戴尔”和“蓝色”的属性值组合,并且使用对应于所有这些组合的测试用例填充回归桶212。在该示例中,回归桶212包括以下测试用例:(戴尔,蓝色,三角形);(戴尔,蓝色,圆形);以及(戴尔,蓝色,正方形)。因为回归桶212中的每个测试用例分别包括属性“名字”的属性值“戴尔”和属性“颜色”的属性值“蓝色”,其一起贡献所检测的成对错误,所以回归桶212中的每个测试用例确保失败。在本发明的示例实施例中,可以输出回归桶212以供手动测试器或另一自动化检错算法使用。失败的测试用例的回归桶212可以用于验证所检测到的错误是否已经被校正,因为包含在回归桶212中的所有测试用例将仅在错误被固定时通过。因此,尽管对SUT214进行了修改以尝试纠正错误,如果回归桶212中的任何测试用例继续失败,则这指示错误未被完全解决。
测试基础设施的另一技术挑战在于,当验证SUT 214的质量时,必须使用多样且稳健的测试序列来充分覆盖SUT 214可能经受的尽可能多的场景。如本文所描述的,某些场景需要发生特定顺序的事件来保证给定服务或路径被运用。一些场景可能不需要发生特定顺序的事件。对于要测试的这些场景,技术挑战是向测试系统中引入更多的随机性以表示SUT214可能在其中操作的生产环境。
本发明的一个或多个实施例通过使用马尔可夫链解决这样的技术挑战。马尔可夫链是用于基于在SUT 214处于给定状态时发生特定事件的随机概率对SUT 214中的状态变化进行建模的数学构造。事件在任何给定状态发生的概率可以被调谐以控制SUT 214将由测试基础设施执行的测试用例经受多少顺序或随机性。
图7描绘了根据本发明的一个或多个实施例的用于提供在测试基础设施中针对SUT 214运行的测试的确定性顺序的流程图。所描绘的方法700在框702包括对用于测试的属性值对建模。建模类似于在方法600中执行的建模。该方法进一步包括在框704处向属性值对分配概率因子。在本发明的一个或多个实施例中,向每个属性值对分配相应的概率值。
概率值指示属性值被选择用于生成测试用例的概率。替换地或附加地,概率值指示与该属性值相关联的测试用例被选择在测试的桶212中执行的概率。可由测试工程师手动配置概率值以促进测试特定属性值的更高(或更低)机会。在示例中,将概率值设置为‘1’确保属性值对被测试。相反,将概率值设置为‘0’确保属性值对不被测试。
在本发明的一个或多个实施例中,在框706处,以散列值的形式存储所选择的属性值对及其相应的所分配的概率值。换言之,散列表示属性值对以及分配给该对的概率值。在本发明的一个或多个实施例中,为每个属性值对及其概率值生成唯一的散列。在本发明的一个或多个实施例中,为了确保唯一的散列质数模数、乘法等,可使用运算。属性值对和对应的概率值被对应地存储为具有散列表,从而便于处理器使用诸如二进制决策图等技术来执行减小,以标识提供完整n-wise覆盖的减小的CTD向量集306。可如本文其他各处所描述地应用二进制决策图。
在方法700的框708,n-wise覆盖CTD向量生成模块304通过标识和排除不遵守与SUT 214相关联的架构限制的那些组合来减小与属性值对302的集合相关联的整个笛卡尔乘积空间。例如,事件排序信息220、关于属性的特定值的限制、和其他类型的架构限制可以与一个或多个属性值对相关联。
在整个笛卡尔乘积空间被减小以排除不满足SUT 214上的架构限制的组合之后,在方法700的框710处,n-wise覆盖CTD向量生成模块304生成进一步减小的初始CTD向量集306。在示例实施例中,每个CTD向量306仅从排除了违反SUT 214的架构限制的属性值的无效组合的减小的测试空间中选择。CTD向量306基于被分配有属性值对的概率值来选择。为了便于概率值在属性值对的选择中起作用,使用马尔可夫链来将每个选择表示为状态。马尔可夫链的数学构造然后基于当系统处于给定状态(即,当前选择的属性值对)时特定事件发生(即,选择特定属性值对)的概率来对状态改变建模。
在方法700的框712,初始测试用例集202从初始CTD向量集306生成并类似于方法600的框606被执行。在框714处,类似于方法600的框608处的确定,确定测试用例202中的任一者是否失败。响应于在框714处的否定确定,因为没有测试用例202产生失败的执行结果,方法700结束。另一方面,响应于在框714的肯定判定,方法700前进到框716,其中逆CTD测试用例生成模块316从所选择的失败的测试用例生成新的测试用例318。
在本发明的一个或多个实施例中,对于每个属性通过将该属性在所选择的失败的测试用例中的属性值改变成该属性在任何失败的测试用例中不存在的每个其他候选属性值,来生成相应的新测试用例集。例如,针对所选择的失败的测试用例中的每个属性,通过将属性的属性值改变成属性合适具有并且在任何失败的测试用例中不存在的另一属性值,来生成单个新的测试用例。虽然可能对于属性存在多个在任何失败测试用例中不存在的属性值,但是每个新的测试用例仅测试一个该属性值,并且因此在创建新测试的该技术中,可以通过将所选择的失败测试用例中的对应属性值振荡为不存在于任何失败测试用例中的一个其他属性值来简单地生成每个新的测试用例。
可替换地,在本发明的一个或多个实施例中,针对所选择的失败测试用例中的每个属性,针对该属性的在任何失败测试用例中不存在的每个可能属性值生成新的测试用例。因此,根据该第二技术,如果存在针对属性的在任何失败的测试用例中不存在的多个属性值,则针对每个该属性值生成新的测试用例。
在图4所示的示例中,例如,根据以上第一技术,将逆组合学应用到失败的测试用例402以获得新的测试用例集406。即,单个新的测试用例被示为针对所选择的失败的测试用例402中的每个属性通过将所选择的失败的测试用例402中的属性的对应属性值改变成在任何失败的测试用例中不存在的另一候选属性值而生成。另一方面,如果替代地根据以上第二技术生成新的测试用例集406,则新的测试用例集406包括以下另外的测试用例:(瑞恩,蓝色,三角形)和(瑞秋,蓝色,三角形),因为属性值“瑞恩”和“瑞秋”在任何失败的测试用例中不存在。
进一步,逆CTD测试用例生成模块316排除违反SUT 214的架构限制的任何新测试用例。通过排除(并且不执行)违反一个或多个架构限制的一个或多个新测试用例,经由逆组合扩展获得的新测试用例集318相应地被减少到更小的集。特别地,当与初始CTD向量306对应的所选择的测试用例失败并且被选择用于扩展以获得新的测试用例集318(该新的测试用例集318被设计为检测和定位n-wise错误)时,可以首先执行扩展,而不考虑任何架构限制。然后,可以从新测试用例集318中排除从违反架构限制的扩展生成的任何新测试用例。以此方式,可以确保该扩展提供了测试空间在失败的测试用例周围的邻域中的尽可能多的覆盖。
进一步,类似于方法600的框612,方法700包括在框718处执行减小的新测试集318。类似于方法600的框614,在方法700的框720处,至少部分地基于在所选择的失败测试用例中被改变时产生通过的新测试用例的属性及其对应的属性值来检测和定位n-wise错误。进一步,类似于方法600的框616,在框722处,生成失败测试用例的回归桶212。回归桶212中的每个测试用例对应于包括属性值对324的故障产生子集的属性值的特定组合,使得回归桶212覆盖遵守SUT 214的架构限制并包括故障产生属性值的属性值对的所有可能的组合。此外,在框724,可以从回归桶212中排除违反架构限制的任何失败测试用例。
因此,方法700促进在不考虑架构限制的情况下生成失败测试用例的回归桶212,然后可以从回归桶212中排除违反架构限制的任何测试用例。即,可以首先生成与整个笛卡尔乘积测试空间中的包括导致n-wise或更小阶错误的属性值的特定组合的所有可能组合相对应的测试用例,并且可以将其包括在回归桶212中,然后可以减小回归桶212以排除违反限制的任何测试用例。在可替换示例实施例中,回归桶212中所包括的测试用例可以从减小的笛卡尔空间(初始CTD向量集从该减小的笛卡尔空间中选择)中选择,在这种情况下,回归桶212将被生成为仅包括包含引起错误的属性值的子集并且不违反任何架构限制的属性值的那些组合。
此外,所选择的测试基于针对每个属性值对调整的概率值。因此,具有更高概率值的第一属性值对比具有低于第一属性值对的概率值的概率值的第二属性值对具有更高的被测试机会。测试工程师可以相应地控制基于CTD的测试基础设施中的测试的选择。
现在转向图8,概括地示出了根据本发明的实施例的计算机系统800。计算机系统800可以是包括和/或采用利用不同通信技术的任何数量和组合的计算装置和网络的电子计算机框架,如本文所描述的。计算机系统800可以容易地扩展、可扩展和模块化,具有改变成不同服务或独立于其他特征重新配置某些特征的能力。计算机系统800可以是例如服务器、台式计算机、膝上型计算机、平板计算机或智能电话。在一些示例中,计算机系统800可以是云计算节点。可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述计算机系统800。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统800可在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理装置执行。在分布式云计算环境中,程序模块可以位于包括存储器存储装置的本地和远程计算机系统存储介质中。
如图8所示,计算机系统800具有一个或多个中央处理单元(CPU)801a、801b、801c等(统称为或通称为(多个)处理器801)。处理器801可以是单核处理器、多核处理器、计算群集或任意数量的其他配置。处理器801(也称为处理电路)经由系统总线802耦合到系统存储器803和不同其他组件。系统存储器803可以包括只读存储器(ROM)804和随机存取存储器(RAM)805。ROM 804耦接至系统总线802并且可包括基本输入/输出系统(BIOS),其控制计算机系统800的某些基本功能。RAM是耦合至系统总线802以供处理器801使用的读写存储器。系统存储器803为该指令在操作期间的操作提供临时存储器空间。系统存储器803可包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储器系统。
计算机系统800包括耦合到系统总线802的输入/输出(I/O)适配器806和通信适配器807。I/O适配器806可以是与硬盘808和/或任何其他类似组件通信的小型计算机系统接口(SCSI)适配器。I/O适配器806和硬盘808在本文中统称为大容量存储器810。
在计算机系统800上执行的软件811可存储在大容量存储器810中。大容量存储器810是可由处理器801读取的有形存储介质的示例,其中,软件811被存储为用于由处理器801执行以使计算机系统800操作的指令,诸如在下文中相对于各个附图所描述的。本文中更详细地论述计算机程序产品和该指令的执行的示例。通信适配器807将系统总线802与网络812互连,网络812可以是外部网络,使得计算机系统800能够与其他此类系统通信。在一个实施例中,大容量存储器810和系统存储器803的一部分共同存储操作系统,它可以是任何适当的操作系统,例如来自IBM公司的z/OS或AIX操作系统,以协调图8中所示的不同组件的功能。
附加输入/输出装置被示为经由显示适配器815和接口适配器816连接到系统总线802。在一个实施例中,适配器806、807、815和816可连接到经由中间总线桥(未示出)连接到系统总线802的一个或多个I/O总线。显示器819(例如,屏幕或显示监视器)通过显示适配器815连接到系统总线802,显示适配器815可包括用以改进图形密集型应用的性能的图形控制器和视频控制器。键盘821、鼠标822、扬声器823等可以经由接口适配器816互连到系统总线802,接口适配器816可以包括例如将多个装置适配器集成到单个集成电路中的超级I/O芯片。用于连接诸如硬盘控制器、网络适配器和图形适配器的外围装置的合适的I/O总线通常包括诸如外围组件互连(PCI)的公共协议。因此,如图8中配置的,计算机系统800包括处理器801形式的处理能力,以及包括系统存储器803和大容量存储器810的存储能力、诸如键盘821和鼠标822的输入装置以及包括扬声器823和显示器819的输出能力。
在一些实施例中,通信适配器807可以使用任何合适的接口或协议(诸如互联网小型计算机系统接口等)来传输数据。网络812可以是蜂窝网络、无线电网络、广域网(WAN)、局域网(LAN)或互联网等。外部计算装置可通过网络812连接到计算机系统800。在一些示例中,外部计算装置可以是外部网络服务器或云计算节点。
可理解,图8的框图不旨在指示计算机系统800将包括图8中所示的所有组件。相反,计算机系统800可包括图8中未示出的任何合适的更少或额外组件(例如,额外存储器组件、嵌入式控制器、模块、额外网络接口等)。进一步,本文关于计算机系统800描述的实施例可用任何合适的逻辑来实现,其中如本文所提及的逻辑可包括任何合适的硬件(例如,处理器、嵌入式控制器、或专用集成电路等)、软件(例如,应用等)、固件、或者硬件、软件和固件的任何合适的组合。
在本发明的一个或多个实施例中,计算机系统800可以是具有由计算机系统800使用的硬件组件或计算机程序的SUT的环境100。在本发明的一个或多个实施例中,计算机系统800可以是SUT 214,其为服务器群集的一部分。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括以下各项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、机械编码装置(例如,穿孔卡或槽中的具有记录于其上的指令的凸起结构),以及前述各项的任何合适组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理装置,或者下载到外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言的任何组合编写的源代码或目标代码,这些编程语言包括面向对象的编程语言(诸如Smalltalk、C++等)和过程编程语言(诸如“C”编程语言或类似编程语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,可以由计算机可读程序指令实现流程图和/或框图的每个框以及流程图和/或框图中各框的组合。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框或多个框中指定的功能/动作的装置。也可以将这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他装置以特定方式工作,从而其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图或多个框中指定的功能/动作的方面的指令的制造品。
也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他装置上,使得在计算机、其他可编程装置或其他装置上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他装置上执行的指令实现流程图和/或框图中的或多个框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的部分、模块或段,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些可替换实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行指定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
已经出于说明的目的呈现了本发明的各种实施方式的描述,但并不旨在是详尽的或者限于所公开的实施方式。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。本文使用的术语被选择来最好地解释实施例的原理、实际应用或针对市场中发现的技术的技术改进,或者使得本领域普通技术人员能够理解本文描述的实施例。
本文参考相关附图描述了本发明的各种实施例。在不脱离本发明的范围的情况下,可设计本发明的替代实施例。在以下描述和附图中,在元件之间阐述了各种连接和位置关系(例如,上方、下方、相邻等)。除非另有规定,否则这些连接和/或位置关系可以是直接或间接的,并且本发明在此方面并不旨在是限制性的。因此,实体的连接可以指直接的或间接的连接,并且实体之间的位置关系可以是直接的或间接的位置关系。此外,本文描述的各种任务和过程步骤可以并入具有本文未详细描述的附加步骤或功能的更全面的程序或过程中。
以下定义和缩写将用于解释权利要求书和说明书。如在此使用的,术语“包括”、“包含”、“包括”、“包括”、“具有”、“具有”、“含有”或“含有”或其任何其他变体旨在涵盖非排他性的包括。例如,包含一系列要素的组合物、混合物、工艺、方法、物品或装置不必仅限于那些要素,而是可以包括未明确列出的其他要素或这种组合物、混合物、工艺、方法、物品或装置固有的其他要素。
此外,术语“示例性的”在本文中用于表示“用作实例、示例或例证”。本文中描述为“示例性”的任何实施例或设计不一定被解释为优于或更有利于其他实施方式或设计。术语“至少一个”和“一个或多个”可以被理解为包括大于或等于一的任何整数,即。一个、两个、三个、四个等。术语“多个”可以被理解为包括大于或等于二的任何整数,即,两个、三个、四个、五个等。术语“连接”可以包括间接“连接”和直接“连接”两者。
术语“约”、“基本上”、“大致”及其变型旨在包括与基于提交申请时可用的装置的特定量的测量相关联的错误程度。例如,“约”可以包括给定值的±8%或5%、或2%的范围。
为了简洁起见,在本文中可以或可以不详细描述涉及制造和使用本发明的方面的常规技术。具体地,用于实现本文所描述的不同技术特征的计算系统和特定计算机程序的各个方面是众所周知的。因而,为了简洁起见,许多常规实施细节在本文中仅简要提到或完全省略,而不提供众所周知的系统和/或过程细节。
Claims (28)
1.一种用于检测和定位待测系统(SUT)中的故障的方法,所述方法包括:
将对所述SUT的输入建模为属性值对的集合;
向来自所述属性值对的集合的每个属性值对分配概率值;
至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;
生成初始测试向量集,其提供所述减小的测试空间的完整n-wise覆盖;
从所述初始测试向量集生成初始测试用例集;
执行所述初始测试用例集以获得第一执行结果集;
至少部分地基于所述第一执行结果集来确定一个或多个测试用例执行失败;
从所选择的失败的测试用例生成新的测试用例集;
执行所述新的测试用例集以获得第二执行结果集;以及
至少部分地基于所述第二执行结果集来检测并定位所述故障。
2.根据权利要求1所述的方法,其中,基于所述SUT的架构限制来进一步减小所述笛卡尔乘积空间。
3.根据权利要求2所述的方法,其中,所述架构限制包括以下中的至少一个:在第二属性具有特定属性值的情况下第一属性不能采取一个或多个候选属性值的要求;在所述第二属性具有特定属性值的情况下所述第一属性必须采取特定候选属性值的要求;或者在所述第二属性具有特定属性值的情况下引入第三属性的要求。
4.根据权利要求1所述的方法,其中,属性值对和对应的概率值以散列表示。
5.根据权利要求1所述的方法,其中,向要被测试的第一属性值对分配第一概率值,所述第一概率值高于第二属性值对的第二概率值。
6.根据权利要求1所述的方法,其中,至少部分地基于所述第二执行结果集来检测并定位所述故障包括确定导致所述故障的属性值的特定组合。
7.根据权利要求6所述的方法,进一步包括至少部分地基于导致所述故障的属性值的所述特定组合来生成失败的测试用例的回归桶。
8.根据权利要求1所述的方法,其中,生成所述新的测试用例集包括:与所选择的失败的测试用例中的每个属性相关地,至少部分地通过将所述属性在所选择的失败的测试用例中的相应属性值改变为所述属性在执行失败的所述一个或多个测试用例中的任何测试用例中不存在的每个其他候选属性值,来生成新的测试用例的相应子集。
9.根据权利要求1所述的方法,其中,生成所述初始测试向量集包括:生成提供与所述属性值对的集合相关联的所述减小的测试空间的完整n-wise覆盖的初始测试向量集,并且其中,从所选择的失败的测试用例生成新的测试用例集包括:改变所选择的失败的测试用例中的相应属性值以生成每个新的测试用例。
10.一种系统,包括:
存储器;以及
与所述存储器耦合的处理器,所述处理器被配置为执行用于检测和定位待测系统(SUT)中的故障的方法,所述方法包括:
将对所述SUT的输入建模为属性值对的集合;
向来自所述属性值对的集合的每个属性值对分配概率值;
至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;
生成初始测试向量集,其提供所述减小的测试空间的完整n-wise覆盖;
从所述初始测试向量集生成初始测试用例集;
执行所述初始测试用例集以获得第一执行结果集;
至少部分地基于所述第一执行结果集来确定一个或多个测试用例执行失败;
从所选择的失败的测试用例生成新的测试用例集;
执行所述新的测试用例集以获得第二执行结果集;以及
至少部分地基于所述第二执行结果集来检测并定位所述故障。
11.根据权利要求10所述的系统,其中,基于所述SUT的架构限制来进一步减小所述笛卡尔乘积空间。
12.根据权利要求11所述的系统,其中,所述架构限制包括以下中的至少一个:在第二属性具有特定属性值的情况下第一属性不能采取一个或多个候选属性值的要求;在所述第二属性具有特定属性值的情况下所述第一属性必须采取特定候选属性值的要求;或者在所述第二属性具有特定属性值的情况下引入第三属性的要求。
13.根据权利要求10所述的系统,其中,属性值对和对应的概率值以散列表示。
14.根据权利要求10所述的系统,其中,向要被测试的第一属性值对分配第一概率值,所述第一概率值高于第二属性值对的第二概率值。
15.根据权利要求10所述的系统,其中,至少部分地基于所述第二执行结果集来检测并定位所述故障包括确定导致所述故障的属性值的特定组合。
16.根据权利要求15所述的系统,其中,所述方法进一步包括至少部分地基于导致所述故障的属性值的所述特定组合来生成失败的测试用例的回归桶。
17.一种计算机程序产品,包括其上存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在由处理器执行时使所述处理器执行用于检测和定位SUT中的故障的方法,所述方法包括:
将对所述SUT的输入建模为属性值对的集合;
向来自所述属性值对的集合的每个属性值对分配概率值;
至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;
生成初始测试向量集,其提供所述减小的测试空间的完整n-wise覆盖;
从所述初始测试向量集生成初始测试用例集;
执行所述初始测试用例集以获得第一执行结果集;
至少部分地基于所述第一执行结果集来确定一个或多个测试用例执行失败;
从所选择的失败的测试用例生成新的测试用例集;
执行所述新的测试用例集以获得第二执行结果集;以及
至少部分地基于所述第二执行结果集来检测并定位所述故障。
18.根据权利要求17所述的计算机程序产品,其中,基于所述SUT的架构限制来进一步减小所述笛卡尔乘积空间。
19.根据权利要求18所述的计算机程序产品,其中,所述架构限制包括以下中的至少一个:在第二属性具有特定属性值的情况下第一属性不能采取一个或多个候选属性值的要求;在所述第二属性具有特定属性值的情况下所述第一属性必须采取特定候选属性值的要求;或者在所述第二属性具有特定属性值的情况下引入第三属性的要求。
20.根据权利要求17所述的计算机程序产品,其中,属性值对和对应的概率值以散列表示。
21.根据权利要求17所述的计算机程序产品,其中,向要被测试的第一属性值对分配第一概率值,所述第一概率值高于第二属性值对的第二概率值。
22.根据权利要求17所述的计算机程序产品,其中,至少部分地基于所述第二执行结果集来检测并定位所述故障包括确定导致所述故障的属性值的特定组合。
23.根据权利要求22所述的计算机程序产品,其中,所述方法进一步包括至少部分地基于导致所述故障的属性值的所述特定组合来生成失败的测试用例的回归桶。
24.一种用于检测和定位待测系统(SUT)中的故障的方法,所述方法包括:
将对所述SUT的输入建模为属性值对的集合;
向来自所述属性值对的集合的每个属性值对分配概率值;
至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的笛卡尔乘积空间减小到减小的测试空间;
生成初始测试向量集,其提供所述减小的测试空间的完整n-wise覆盖;
从所述初始测试向量集生成初始测试用例集;
执行所述初始测试用例集以获得第一执行结果集;
至少部分地基于所述第一执行结果集来确定一个或多个测试用例执行失败;
从所选择的失败的测试用例生成新的测试用例集,其中生成所述新的测试用例集包括:与所选择的失败的测试用例中的每个属性相关地,至少部分地通过将所述属性在所选择的失败的测试用例中的相应属性值改变为所述属性在执行失败的所述一个或多个测试用例中的任何测试用例中不存在的每个其他候选属性值,来生成新的测试用例的相应子集;
执行所述新的测试用例集以获得第二执行结果集;以及
至少部分地基于所述第二执行结果集来检测并定位所述故障。
25.根据权利要求24所述的方法,其中,属性值对和对应的概率值以散列表示。
26.一种用于检测和定位待测系统(SUT)中的故障的方法,所述方法包括:
将对所述SUT的输入建模为属性值对的集合;
至少部分地通过基于对应的概率值来排除属性值对的一个或多个组合,将包括属性值对的所有可能组合的测试空间减小到减小的测试空间;
生成初始测试向量集,其提供与属性值对的所述集合相关联的所述减小的测试空间的完整n-wise覆盖;
从所述初始测试向量集生成初始测试用例集;
执行所述初始测试用例集以获得第一执行结果集;
至少部分地基于所述第一执行结果集来确定一个或多个测试用例执行失败;
从所选择的失败的测试用例生成新的测试用例集,其中生成所述新的测试用例集包括改变所选择的失败的测试用例中的相应属性值以生成每个新的测试用例;
执行所述新的测试用例集以获得第二执行结果集;以及
至少部分地基于所述第二执行结果集来检测并定位所述故障。
27.根据权利要求26所述的方法,其中,属性值对和对应的概率值以散列表示。
28.一种计算机程序,包括程序代码装置,当在计算机上运行程序时,所述程序代码装置适于执行权利要求1至9中任一项或权利要求24至27中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/804,164 | 2020-02-28 | ||
US16/804,164 US11182282B2 (en) | 2020-02-28 | 2020-02-28 | Executing tests in deterministic order |
PCT/IB2021/051033 WO2021171117A1 (en) | 2020-02-28 | 2021-02-09 | Executing tests in deterministic order |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115176233A true CN115176233A (zh) | 2022-10-11 |
CN115176233B CN115176233B (zh) | 2023-07-21 |
Family
ID=77463096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180017243.4A Active CN115176233B (zh) | 2020-02-28 | 2021-02-09 | 以确定性顺序执行测试 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11182282B2 (zh) |
JP (1) | JP2023514999A (zh) |
KR (1) | KR20220116330A (zh) |
CN (1) | CN115176233B (zh) |
AU (1) | AU2021227739B2 (zh) |
DE (1) | DE112021000240T5 (zh) |
GB (1) | GB2609110A (zh) |
WO (1) | WO2021171117A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442839B2 (en) * | 2020-03-10 | 2022-09-13 | International Business Machines Corporation | Runtime metrics based test ordering |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140266243A1 (en) * | 2013-03-14 | 2014-09-18 | National Instruments Corporation | Power leveling of a system under test |
US20150234007A1 (en) * | 2014-02-20 | 2015-08-20 | International Business Machines Corporation | Generation device, generation method, and program |
US20160154728A1 (en) * | 2009-09-11 | 2016-06-02 | International Business Machines Corporation | System and method for resource modeling and simulation in test planning |
US20170097882A1 (en) * | 2015-10-06 | 2017-04-06 | Ca, Inc. | Generating Tests for Testing Software Applications |
CN109726093A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 用于执行测试用例的方法、设备和计算机程序产品 |
US10338993B1 (en) * | 2018-04-22 | 2019-07-02 | Sas Institute Inc. | Analysis of failures in combinatorial test suite |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7024589B2 (en) * | 2002-06-14 | 2006-04-04 | International Business Machines Corporation | Reducing the complexity of finite state machine test generation using combinatorial designs |
US10754764B2 (en) * | 2018-04-22 | 2020-08-25 | Sas Institute Inc. | Validation sets for machine learning algorithms |
US8397104B2 (en) * | 2009-04-22 | 2013-03-12 | International Business Machines Corporation | Creation of test plans |
US9665350B1 (en) | 2009-05-29 | 2017-05-30 | The Mathworks, Inc. | Automatic test generation for model-based code coverage |
US8271950B2 (en) | 2009-07-06 | 2012-09-18 | Microsoft Corporation | Test generation from captured user interface status |
US8627295B2 (en) | 2009-10-09 | 2014-01-07 | General Electric Company | Methods and apparatus for testing user interfaces |
US8732299B2 (en) | 2010-08-23 | 2014-05-20 | Intuit Inc. | Scalability breakpoint calculator for a software product |
US8260826B2 (en) * | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US8832839B2 (en) | 2011-01-04 | 2014-09-09 | Siemens Aktiengesellschaft | Assessing system performance impact of security attacks |
US8756460B2 (en) * | 2011-04-05 | 2014-06-17 | International Business Machines Corporation | Test selection based on an N-wise combinations coverage |
US8649995B2 (en) | 2011-04-07 | 2014-02-11 | Infosys Technologies, Ltd. | System and method for efficient test case generation using input dependency information |
US9262307B2 (en) * | 2011-10-05 | 2016-02-16 | International Business Machines Corporation | Modeling test space for system behavior with optional variable combinations |
US9244819B2 (en) | 2011-10-31 | 2016-01-26 | International Business Machines Corporation | Attribute value properties for test selection with cartesian product models |
US8887112B2 (en) * | 2012-11-14 | 2014-11-11 | International Business Machines Corporation | Test validation planning |
US8990626B2 (en) * | 2012-12-17 | 2015-03-24 | International Business Machines Corporation | Method and apparatus for determining relevance of assignments in combinatorial models |
US9122801B2 (en) * | 2013-08-07 | 2015-09-01 | International Business Machines Corporation | Test planning with order coverage requirements |
US9454466B2 (en) * | 2013-10-02 | 2016-09-27 | Globalfoundries Inc. | Explaining partially illegal combinations in combinatorial models |
US9740505B2 (en) | 2014-07-15 | 2017-08-22 | The Mathworks, Inc. | Accurate static dependency analysis via execution-context type prediction |
GB2530516A (en) | 2014-09-24 | 2016-03-30 | Ibm | Intelligent Software Test Augmenting |
KR20190080872A (ko) | 2016-11-17 | 2019-07-08 | 베스텔 일렉트로닉 사나이 베 티카레트 에이에스 | 시스템 시험 방법 및 시스템 시험 키트 |
US10489280B2 (en) * | 2017-11-21 | 2019-11-26 | International Business Machines Corporation | Method and apparatus for test modeling |
US11061811B2 (en) * | 2017-12-15 | 2021-07-13 | International Business Machines Corporation | Optimizing software testing via group testing |
US20190327330A1 (en) * | 2018-04-20 | 2019-10-24 | Facebook, Inc. | Building Customized User Profiles Based on Conversational Data |
-
2020
- 2020-02-28 US US16/804,164 patent/US11182282B2/en active Active
-
2021
- 2021-02-09 DE DE112021000240.6T patent/DE112021000240T5/de active Pending
- 2021-02-09 GB GB2214168.3A patent/GB2609110A/en active Pending
- 2021-02-09 JP JP2022548937A patent/JP2023514999A/ja active Pending
- 2021-02-09 AU AU2021227739A patent/AU2021227739B2/en active Active
- 2021-02-09 KR KR1020227026550A patent/KR20220116330A/ko unknown
- 2021-02-09 WO PCT/IB2021/051033 patent/WO2021171117A1/en active Application Filing
- 2021-02-09 CN CN202180017243.4A patent/CN115176233B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160154728A1 (en) * | 2009-09-11 | 2016-06-02 | International Business Machines Corporation | System and method for resource modeling and simulation in test planning |
US20140266243A1 (en) * | 2013-03-14 | 2014-09-18 | National Instruments Corporation | Power leveling of a system under test |
US20150234007A1 (en) * | 2014-02-20 | 2015-08-20 | International Business Machines Corporation | Generation device, generation method, and program |
US20170097882A1 (en) * | 2015-10-06 | 2017-04-06 | Ca, Inc. | Generating Tests for Testing Software Applications |
CN109726093A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 用于执行测试用例的方法、设备和计算机程序产品 |
US10338993B1 (en) * | 2018-04-22 | 2019-07-02 | Sas Institute Inc. | Analysis of failures in combinatorial test suite |
Also Published As
Publication number | Publication date |
---|---|
DE112021000240T5 (de) | 2022-09-22 |
US20210271592A1 (en) | 2021-09-02 |
GB202214168D0 (en) | 2022-11-09 |
CN115176233B (zh) | 2023-07-21 |
JP2023514999A (ja) | 2023-04-12 |
AU2021227739B2 (en) | 2023-11-23 |
WO2021171117A1 (en) | 2021-09-02 |
AU2021227739A1 (en) | 2022-07-07 |
GB2609110A (en) | 2023-01-25 |
KR20220116330A (ko) | 2022-08-22 |
US11182282B2 (en) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11132273B1 (en) | System testing infrastructure with hidden variable, hidden attribute, and hidden value detection | |
US11636028B2 (en) | Stress test impact isolation and mapping | |
US11194703B2 (en) | System testing infrastructure for analyzing soft failures in active environment | |
US11836060B2 (en) | System testing infrastructure with hidden variable, hidden attribute, and hidden value detection | |
US11023368B1 (en) | Reduction of testing space for system testing infrastructure using combinatorics | |
US11113167B1 (en) | System testing infrastructure with hidden variable, hidden attribute, and hidden value detection | |
US11379352B1 (en) | System testing infrastructure with hidden variable, hidden attribute, and hidden value detection | |
US11132286B1 (en) | Dynamic reordering of test case execution | |
US11675009B2 (en) | Converting formal verification testbench drivers with nondeterministic inputs to simulation monitors | |
US11086768B1 (en) | Identifying false positives in test case failures using combinatorics | |
US11194704B2 (en) | System testing infrastructure using combinatorics | |
CN115176233B (zh) | 以确定性顺序执行测试 | |
US11182279B1 (en) | Optimizing test case execution | |
US11609842B2 (en) | System testing infrastructure for analyzing and preventing soft failure in active environment | |
US11593256B2 (en) | System testing infrastructure for detecting soft failure in active environment | |
US11442839B2 (en) | Runtime metrics based test ordering | |
US10970195B2 (en) | Reduction of test infrastructure | |
US11645142B1 (en) | Use sequential set index for root cause location and problem verification | |
US10572624B2 (en) | Modified design debugging using differential trace back | |
CN109800155B (zh) | 一种基于Probe的QTE联锁应用软件测试方法及装置 | |
US20230229581A1 (en) | Identifying regression test failures |
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 |