CN105247493A - 从静态收集的数据中标识受影响的测试 - Google Patents
从静态收集的数据中标识受影响的测试 Download PDFInfo
- Publication number
- CN105247493A CN105247493A CN201480025911.8A CN201480025911A CN105247493A CN 105247493 A CN105247493 A CN 105247493A CN 201480025911 A CN201480025911 A CN 201480025911A CN 105247493 A CN105247493 A CN 105247493A
- Authority
- CN
- China
- Prior art keywords
- test
- code
- dependence
- data
- product
- 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
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/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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供用于从静态收集的数据中标识受影响的测试的方法、系统和计算机程序产品。一般而言,可能用一些动态数据扩充的静态依赖关系数据被用于寻找针对代码改变受影响的测试的适当集合。在一些实施例中,静态依赖关系分析被用于标识受代码改变影响的测试。试探可被用于协助标识受影响的测试的适当集合以针对代码改变来运行。动态数据可被用于扩充静态依赖关系数据以标识受影响的测试的更优化的集合以针对代码改变来运行。
Description
背景技术
1.背景和相关技术
计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前人工执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机系统和/或多个不同的计算环境中。
通常,软件和硬件计算机两者相关组件在向公众发布之前均被测试。取决于组件的类型,组件可经历各种不同的测试来帮助确保其如预期的那样运行。测试还可揭露组件缺陷,这些缺陷在发布之前纠正要便宜得多并且简单得多。
在测试软件时,测试可包括向软件提交各种类型的输入来确定软件如何进行响应。即使在软件被发布后,测试可随着对软件作出进一步的改变(例如,更新、打补丁等)而继续。在一些实施例中,大量的测试集被创建来测试尽可能多的场景。这在发布之前是有益的,因为软件的每个方面可能都需要被测试。
然而,对于开发者而言,随着作出的每个改变来运行所有测试是不方便的。另一方面,当作出对现有软件的改变时,可能希望将测试针对在其中改变被作出的代码。由此,开发者通常基于他们对改变和测试床的理解来选择要运行的测试的子集。替换地,开发者可发起运行完整的测试集。开发者可允许测试运行达某个时间量以取得关于改变的反馈,潜在地在反馈被接收到后停止测试。不幸的是,这些方法导致针对作出的改变要么过少要么过多的测试被运行。
由此,一些测试技术尝试以更自动化的方式来标识相关测试的子集。例如,测试技术可使用来自先前测试运行的动态数据。然而,使用动态数据要求测试运行被工具化或采样,导致(潜在地显著地)更慢的运行。许多开发者不愿意为每个测试运行来处理这些延迟,因为这减慢了反馈回路。此外,与这些延迟相关联的总的时间可在开发的过程中相加。
简要概述
本发明涉及用于从静态收集的数据中标识受影响的测试的方法、系统和计算机程序产品。响应于代码的一部分被改变,该代码的一部分的依赖关系数据被访问。该代码的一部分要被测试以确定在该代码的一部分被执行后包括该代码的产品是否留在适当的状态中。静态依赖关系分析被执行以从多个测试中标识受对该代码的改变影响的一个或多个测试。对于多个测试中的每个测试,源自该测试的向外依赖关系链路的传递闭包被遍历。任选地,一个或多个其他技术(诸如例如,更先进的静态分析、试探、动态数据等)可被用于更改传递闭包。向外依赖关系链路的(可能经更改的)传递闭包的反向映射被用于推断对代码的改变是否潜在地影响测试。一个或多个测试被包括在用于测试产品的测试集之中。
本概述被提供以便以简化形式介绍概念的选集,所述概念将在以下详细描述中进一步描述。该概述不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在被用来帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。
附图简述
为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中:
图1示出促进从静态收集的数据中标识受影响的测试的示例计算机体系结构。
图2示出了用于从静态收集的数据中标识受影响的测试的示例方法的流程图。
图3示出了包括接口的示例代码样本。
图4示出了用于使用试探来标识潜在地影响测试的方法的示例计算机体系结构。
图5示出了包括方法的动态调用的示例代码样本。
图6示出了用于将链路添加到依赖关系数据的示例计算机体系结构。
图7示出了包括条件语句的示例代码样本。
图8示出了用于从依赖关系数据中修剪方法的示例计算机体系结构。
详细描述
本发明涉及用于从静态收集的数据中标识受影响的测试的方法、系统和计算机程序产品。响应于代码的一部分被改变,该代码的一部分的依赖关系数据被访问。该代码的一部分要被测试以确定在该代码的一部分被执行后包括该代码的产品是否留在适当的状态中。静态依赖关系分析被执行以从多个测试中标识受对该代码的改变影响的一个或多个测试。对于多个测试中的每个测试,源自该测试的向外依赖关系链路的传递闭包被遍历。任选地,一个或多个其他技术(诸如例如,更先进的静态分析、试探、动态数据等)可被用于更改传递闭包。向外依赖关系链路的(可能经更改的)传递闭包的反向映射被用于推断对代码的改变是否潜在地影响测试。一个或多个测试被包括在用于测试产品的测试集之中。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(“SSD”)(如基于RAM)、闪存、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。硬连线连接可包括但不限于,具有金属导体和/或光纤的线。传输介质可以包括可以用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的网络和/或数据链路。上述的组合应当也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机系统组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
本发明的各实施例还可以在云计算环境中实现。在该描述和下面的权利要求书中,“云计算”被定义为用于允许对可配置计算资源的共享池的按需网络访问的模型。例如,云计算机可被部署于市场以提供对可配置计算资源的共享池的普遍存在且方便的按需访问。可配置计算资源的共享池可经由虚拟化而被快速地供应,并可利用低管理努力或服务提供商交互来释放,并随后相应被缩放。
云计算模型可由各种特性组成,诸如举例来说按需自服务、广泛网络访问、资源池、快速灵活性、测定的服务等。云计算模型还可展现各种服务模型,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)以及基础结构即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在该描述和权利要求书中,“云计算环境”是其中采用了云计算的环境。
一般而言,可能用一些动态数据扩充的静态依赖关系数据被用于寻找针对代码改变受影响的测试的适当集合。在一些实施例中,静态依赖关系分析被用于标识受代码改变影响的测试。试探可被用于协助标识受影响的测试的适当集合以针对代码改变来运行。动态数据可被用于扩充静态依赖关系数据以标识受影响的测试的更优化的集合以针对代码改变来运行。
图1示出促进从静态收集的数据中标识受影响的测试的示例计算机体系结构100。参考图1,计算机体系结构100包括依赖关系分析器101、构建差异108和测试数据库109。依赖关系分析器101、构建差异108和测试数据库109中的每一个可通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网等网络(或作为网络的一部分)彼此连接。因此,依赖关系分析器101、构建差异108和测试数据库109以及任何其他连接的计算机系统和它们的组件都能够创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或使用其他非数据报协议)。
一般而言,依赖关系分析器101被配置成确定哪些方法潜在地影响测试。如描绘的,依赖关系分析101包括遍历模块102、映射模块103、试探104、动态代码检测器106和修剪模块107。
可通过静态分析来确定潜在地影响测试的方法。遍历模块102被配置成遍历源自测试方法的向外依赖关系链路的传递闭包。映射模块103被配置成将所遍历的方法反向映射到测试方法。例如,考虑:
TestMethod1(测试方法1)--calls(调用)-->Method1(方法1)--calls(调用)-->Method2(方法2)--calls(调用)-->Method3(方法3),
遍历模块102可遍历调用来推断TestMethod1潜在地被{Method1,Method2,Method3}集影响。映射模块103可生成反向映射,该反向映射指示对Method3、Method2或Method1中任意的改变影响TestMethod1。反向映射可被用于标识并运行相关测试(例如,来自存储在测试数据库109中的测试)。即,如果TestMethod1潜在地命中Method1(即,具有到Method1的向外依赖关系),则Method1可潜在地被TestMethod1调用。由此,反向映射进一步指示Method1中的改变可影响TestMethod1。
即,如果TestMethod1潜在地命中Method1(即,具有到Method1的向外依赖关系),则Method1可潜在地被TestMethod1调用。如此,反向映射进一步指示Method1中的改变可影响TestMethod1。由于Method1可潜在地命中Method2并且Method2可潜在地命中Method3,相应的映射还进一步指示Method2中的改变或Method2可影响TestMethod1。
试探104被配置成作出关于潜在地影响测试的方法的更智能的决定。例如,虚拟方法和接口实现的使用可模糊方法是否潜在地影响测试。由此,试探104可被配置成确定当测试调用接口或虚拟方法时,将导出类中所有的实现虚拟方法或接口的所有具体实例中的接口方法作为潜在地影响测试的方法来包括是可以的。
依赖关系分析器101可执行以产品122为目标的测试。在产品122的执行期间,动态代码检测器106和/或修剪模块107可收集关于测试如何训练产品122的动态数据。所收集的动态数据可被用于动态分析。
在运行时期间,动态代码检测器106被配置成取决于动态代码调用(例如,反射、LoadLibrary(加载库)、依赖关系注入等)来推断方法之间的链路。所推断的链路可以是动态数据中不在静态数据中的链路。所推断的链路可被持久保存在测试数据库109中。后续的分析可在确定依赖关系数据时使用所推断的链路。并且,在运行时期间,修剪模块107被配置成修剪出在运行时实际没有被测试调用的方法。修剪出的方法的指示可被存储在测试数据库109中。后续的分析可在确定依赖关系数据时使用修剪出的方法的指示。
因此,在一些实施例中,动态数据可被用于扩充通过静态分析来确定的依赖关系数据。动态数据可被保留在测试数据库109中,直到另一动态运行被执行或某物沿着代码流路径改变。用动态数据来扩充依赖关系数据促进对用于针对代码改变来运行的测试集的更准确的选择。
测试数据库109被配置成存储用于测试代码112的测试。测试111A—111N被存储在测试数据库109中。依赖关系分析器101可分析经改变的方法(代码112中)以从测试111A—111N中标识潜在地受经改变的方法影响的测试。依赖关系分析器101可将所标识的测试包括在适当的测试集中。代码112可以是源代码或二进制文件,诸如例如,动态链接库(DLL)和可执行代码。
构建差异108可被配置成标识代码改变所导致的经改变的方法。构建差异108可将经改变的代码与该代码的先前构建进行比较以标识经改变的方法。构建差异108还可比较代码内的用户类型。
图2示出了用于从静态收集的数据中标识受影响的测试的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
用户121可作出对代码112的代码改变113。构建差异108可将具有代码改变113的代码112与先前构建119中的一个或多个进行比较。从比较中,构建差异108可标识经改变的方法114。代码112可以是产品122的一部分。产品122可以是软件产品,诸如例如,文字处理产品、电子表格管理产品、帐目管理产品、电子邮件产品、因特网浏览产品等。
方法200包括访问与产品相关联的代码的一部分的依赖关系数据,该代码的一部分要被测试来确定该产品在该代码的一部分被执行后是否留在适当的状态中,响应于该代码的一部分已经被改变来访问依赖关系数据(201)。例如,依赖关系分析器101可访问代码112的经改变的方法114。经改变的方法114可被测试来确定在包括经改变的方法114在内的代码122被执行后产品122是否留在适当的状态中。经改变的方法114可响应于用户121作出对代码112的代码改变113而被访问。
方法200包括执行静态依赖关系分析以从多个测试中标识受对代码的改变影响的一个或多个测试(202)。例如,依赖关系分析器101可执行静态依赖关系分析来标识测试111C(包括在111A—111N中)被经改变的方法114影响。
执行静态依赖关系分析包括,对于多个测试中的每个测试,遍历源自该测试的向外依赖关系链路的传递闭包(203)。例如,对于测试111A—111N中的每一个,遍历模块102可针对经改变的方法114中的任意来遍历源自测试111A—111N的向外依赖关系链路的传递闭包。向外依赖关系链路可包括调用、引用等。
执行静态依赖关系分析任选地包括(如由虚线指示的),对于多个测试中的每个测试,使用一个或多个其他技术来更改传递闭包(204)。例如,依赖关系分析器101可使用以下中的一个或多个来更改测试111A—111N的传递闭包:更先进的静态分析、试探、动态数据等。在一些实施例中,试探104、动态代码检测器106和修剪模块107中的一个或多个更改测试的传递闭包。
执行静态依赖关系分析包括,对于多个测试中的每个测试,使用向外依赖关系链路的(可能经更改的)传递闭包的反向映射来推断对代码的改变是否潜在地影响测试(205)。例如,对于测试111A—111N中的每一个,映射模块103可反向映射源自测试111A—111N的依赖关系链路的传递闭包。从反向映射中,依赖关系分析器101可推断经改变的方法114以及被经改变的方法114调用的其他方法是否潜在地影响测试111A—111N。
反向映射可作为映射表格被维护在测试数据库109中。
方法200包括将该一个或多个测试包括在用于测试产品的测试集之中(206)。例如,依赖关系分析器101可将测试111C包括在测试集117中。测试集117可包括用于测试产品122的测试。
在一些实施例中,试探104可被用于更准确地标识用于包括在测试集117中的测试。例如,试探104可被用于协助标识接口的具体实现以及标识虚拟方法。
转向图3,图3示出了包括接口在内的示例代码样本300。如描绘的,在行301定义接口IFoo。在行302定义接口类型IFoo的类MyFoo。在行303定义方法MyFoo.Beep。在行304定义TestMethod1。TestMethod1()包括行305,其返回MyFoo的具体实例。
试探104可作为用于寻找影响方法的传递遍历的部分来被包括。由此对于代码样本300而言,可以存在从TestMethod1到{IFoo.Bar(),MyFoo.Bar()}的链路,其进而可导致MyFoo.Beep被找到并被包括在影响方法列表中。
如描述的,动态代码检测器106和修剪模块107中的一个或两者可被用于以动态数据来扩充静态收集的数据。依赖关系分析器101可具有动态运行(例如,使用代码会聚、IntellitraceTM、测试影响等)并将该信息注入到受影响的测试数据。例如,动态代码检测器106可推断在运行时被调用的方法之间的链路。依赖关系分析器101可将这些推断出的链路作为inferredlinks(推断出的链路)116保存在测试数据库109中。类似地,修剪模块107可修剪出在运行时不被实际调用的方法。依赖关系分析器101可将这些修剪出的方法的指示存储为经修剪的方法124。推断出链路和修剪出的方法两者可被用于细化测试集117的内容。
图4示出了用于使用试探来标识潜在地影响测试的方法的示例计算机体系结构400。如描绘的,IFoo.Bar()307潜在地影响测试TestMethod1304(例如,如通过静态分析检测的)。代码改变还可包括对MyFoo.Bar()308的改变。试探104可确定MyFoo.Bar()308还潜在地影响测试TestMethod1304。因此,MyFoo.Bar()308可被包括在TestMethod1304的传递闭包中。
图5示出了包括方法的动态调用的示例代码样本500。代码样本500包括行501处的Method(方法)DoSomething、行502处的Method(方法)DoDynamicLoading以及行504处的Method(方法)Test1。串504“DoDynamicLoading(进行动态加载)”被包括在MethodDoSomething()中。动态代码检测器106可推断在运行时与DoDynamicLoading相关联的额外链路(相比于静态数据而言)。动态代码检测器106可推断方法DoDynamicLoading和Test1之间的链路。由此,当DoDynamicLoading被改变时,Test1可作为潜在地受影响的测试被包括。
图6示出了用于将链路添加到依赖关系数据的示例计算机体系结构600。如描绘的,方法602潜在地影响测试601(例如,如通过静态分析检测的)。代码改变还可包括对可动态调用的方法603的改变。方法602可在运行时调用可动态调用的方法603。由此,动态代码检测器106可在运行时推断方法602和可动态调用的方法603之间的链路604。链路604可被用在后续的分析中以确定可动态调用的方法603还潜在地影响测试601。通过使用链路604,可动态调用的方法603可被包括在测试601的传递闭包中。
图7示出了包括条件语句的示例代码样本700。代码样本700包括行701处的方法DoSomething、行702处的方法DoThing1以及行704处的方法Test。在行706处,Test1被配置成用“true(真)”值来调用DoSomthing。由此,当Test1被使用时,行707处的条件语句总是被满足并且DoThing1在行708处被调用。另一方面,行709处的else(否则)语句从不到达并且DoThing2从不在行711处被调用。因此,对DoThing2的改变不影响Test1。修剪模块107可检测到DoThing2从不被调用。因此,修剪模块107可将DoThing2指示为要从Test1的传递闭包中修剪的方法。由此,当DoThing2被改变时,Test1不作为潜在地受影响的测试被包括。此外,DoThing2从test1704的传递闭包中排除。
图8示出了用于从依赖关系数据中修剪方法的示例计算机体系结构800。如描绘的,测试801引用方法802。方法802进而引用方法803和804。由此,测试801潜在地被方法802、803和804中的任意影响。然而,修剪模块107可检测到,在运行时,方法804不被调用。由此,修剪模块107可指示方法804要从潜在影响测试801的方法中被修剪。该指示可被用在后续分析中来确定方法804不影响测试801。通过使用该指示,方法804可从测试801的传递闭包中移除。
动态数据的收集是可被配置的以调节要花费来收集动态数据的时间和资源。在一些实施例中,动态数据以指定的运行时间间隔被收集,诸如例如,每第10个运行。在其他实施例中,动态数据针对测试子集(例如,测试中的10%)随每次运行来被收集。在这个其他实施例中,动态数据被增量式地收集,而不消耗大量的资源和/或时间。在进一步的实施例中,静态依赖关系分析被用于检测潜在地被代码改变命中的测试。动态数据针对作为影响运行的一部分的测试集来收集。由此,通过运行测试的较小的子集,动态数据扩充当前具有改变。
动态数据可使用初始基线被预先计算。将预先计算与针对潜在地被代码改变命中的测试的动态数据收集相组合帮助确保所花费的资源和时间被限于针对改变来收集动态数据。例如,如果开发者作出小的改变,则适当的动态数据可用少量的动态测试运行来被收集。在一些环境中,预先计算与针对潜在地被代码改变命中的测试的动态数据收集的组合提供静态和动态策略之间的适当平衡。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
Claims (10)
1.在计算机系统处,一种用于从静态收集的数据中标识受影响的测试的方法,所述计算机系统包括测试数据库,所述测试数据库存储用于测试产品的多个测试,所述方法包括:
访问与产品相关联的代码部分的依赖关系数据,所述代码部分要被测试来确定在所述代码部分被执行后所述产品是否留在适当的状态中,所述依赖关系数据响应于所述代码的所述部分已经被改变而被访问;
执行静态依赖关系分析以从所述多个测试中标识受对所述代码的所述改变影响的一个或多个测试,对于所述多个测试中的每个测试而言包括:
遍历源自所述测试的向外依赖关系链路的传递闭包;以及
使用所述向外依赖关系链路的所述传递闭包的反向映射来推断对所述代码的所述改变是否潜在地影响所述测试;以及
将所述一个或多个测试包括在用于测试所述产品的测试集之中。
2.如权利要求1所述的方法,其特征在于,进一步包括:
使用试探以基于被标记用于测试所述代码部分的所述一个或多个测试来确定对所述代码部分的所述改变潜在地影响一个或多个附加的测试;以及
在所述测试数据库中将所述附加的一个或多个测试标记为用于测试所述代码部分。
3.如权利要求1所述的方法,其特征在于,进一步包括:
执行所述产品;
在所述产品的执行期间推断从所述代码的另一部分到所述代码部分的一个或多个链路;以及
指示到所述代码的所述另一部分的链路要被包括在后续的传递闭包遍历计算中。
4.如权利要求1所述的方法,其特征在于,进一步包括:
执行所述产品;
检测到从所述一个或多个测试中选择的一测试在所述产品的执行期间不受影响;以及
从所述测试集中修剪该测试。
5.如权利要求1所述的方法,其特征在于,访问依赖关系数据包括从所述产品的一个或多个二进制文件中收集依赖关系数据。
6.如权利要求1所述的方法,其特征在于,访问依赖关系数据包括从所述产品的源代码中收集依赖关系数据。
7.一种供在计算机系统处使用的计算机程序产品,所述计算机系统包括测试数据库,所述测试数据库存储用于测试产品的多个测试,所述计算机程序产品用于实现一种用于从静态收集的数据中标识受影响的测试的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储设备,所述指令在处理器处执行时,使得所述计算机系统执行所述方法,包括以下:
访问与产品相关联的代码部分的依赖关系数据,所述代码部分要被测试来确定在所述代码部分被执行后所述产品是否留在适当的状态中,所述依赖关系数据响应于所述代码的所述部分已经被改变而被访问;
执行静态依赖关系分析以从所述多个测试中标识受对所述代码的所述改变影响的一个或多个测试,对于所述多个测试中的每个测试而言包括:
遍历源自所述测试的向外依赖关系链路的传递闭包;以及
使用所述向外依赖关系链路的所述传递闭包的反向映射来推断对所述代码的所述改变是否潜在地影响所述测试;以及
将所述一个或多个测试包括在用于测试所述产品的测试集之中。
8.如权利要求7所述的计算机程序产品,其特征在于,进一步包括在被执行时使所述计算机系统执行以下动作的计算机可执行指令:
使用试探来确定以下中的一个或多个:
潜在地影响用于测试所述接口的具体实现的一个或多个测试的对接口的改变;以及
潜在地影响用于测试所述虚拟方法的导出类的一个或多个测试的对虚拟方法的改变;以及
在所述测试数据库中将任意经改变的测试标记为用于测试所述代码部分。
9.如权利要求7所述的计算机程序产品,其特征在于,进一步包括在被执行时使所述计算机系统执行以下动作的计算机可执行指令:
执行所述产品;
在所述产品的执行期间推断从所述代码的另一部分到所述代码部分的一个或多个链路;
指示到所述代码的所述另一部分的链路要被包括在后续的传递闭包遍历计算中;
检测到从所述一个或多个测试中选择的一测试在所述产品的执行期间不受影响;以及
从所述测试集中修剪该测试。
10.一种计算机系统,所述计算机系统包括:
一个或多个处理器;
系统存储器;
测试数据库,所述测试数据库存储用于测试软件产品的多个测试;
一个或多个计算机存储设备,所述一个或多个计算机存储设备具有存储在其上的表示用于标识受对所述产品的代码改变影响的测试的依赖关系分析器的计算机可执行指令,所述依赖关系分析器包括遍历模块、映射模块、试探、动态代码检测器以及修剪模块,其中所述遍历模块被配置成:
对于所述多个测试中的每一个,遍历源自所述测试的向外依赖关系链路的传递闭包;
其中所述映射模块被配置成:
对于所述多个测试中的每一个,使用所述向外依赖关系链路的所述传递闭包的反向映射来推断代码改变是否潜在地影响所述测试;
其中所述试探被配置成:
细化所述多个测试以更准确地包括受所述代码改变影响的测试;
其中所述动态代码检测器被配置成:
推断在运行时与方法相关联的链路;以及
将被动态地调用的方法的链路添加到所述测试数据库中以用在后续的计算中;以及
其中所述修剪模块被配置成:
检测所述代码改变内在运行时不实际引用的方法;
将指示所述方法是经修剪的方法的指示添加到所述测试数据库,所述指示用在后续的计算中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/887,384 | 2013-05-06 | ||
US13/887,384 US9389986B2 (en) | 2013-05-06 | 2013-05-06 | Identifying impacted tests from statically collected data |
PCT/US2014/036722 WO2014182581A1 (en) | 2013-05-06 | 2014-05-05 | Identifying impacted tests from statically collected data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105247493A true CN105247493A (zh) | 2016-01-13 |
CN105247493B CN105247493B (zh) | 2019-11-26 |
Family
ID=50884535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480025911.8A Active CN105247493B (zh) | 2013-05-06 | 2014-05-05 | 从静态收集的数据中标识受影响的测试 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9389986B2 (zh) |
EP (1) | EP2994835B1 (zh) |
CN (1) | CN105247493B (zh) |
WO (1) | WO2014182581A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110554954A (zh) * | 2019-07-19 | 2019-12-10 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
CN111989896A (zh) * | 2018-04-20 | 2020-11-24 | 阿姆Ip有限公司 | 设备的网络中的依赖控制 |
CN114491424A (zh) * | 2021-12-31 | 2022-05-13 | 西安电子科技大学 | 基于模糊测试的二进制代码裁剪方法 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9389986B2 (en) * | 2013-05-06 | 2016-07-12 | Microsoft Technology Licensing, Llc | Identifying impacted tests from statically collected data |
US10007594B2 (en) | 2015-07-21 | 2018-06-26 | International Business Machines Corporation | Proactive cognitive analysis for inferring test case dependencies |
US9720813B2 (en) * | 2015-08-13 | 2017-08-01 | Ca, Inc. | Method and apparatus for recommending regression tests |
US9892029B2 (en) * | 2015-09-29 | 2018-02-13 | International Business Machines Corporation | Apparatus and method for expanding the scope of systems management applications by runtime independence |
US10146673B2 (en) * | 2015-11-04 | 2018-12-04 | Sap Portals Israel Ltd. | Source code change resolver |
US10838849B2 (en) * | 2016-03-08 | 2020-11-17 | International Business Machines Corporation | Analyzing software test failures using natural language processing and machine learning |
EP3497574A4 (en) | 2016-08-09 | 2020-05-13 | Sealights Technologies Ltd. | SYSTEM AND METHOD FOR THE CONTINUOUS EXAMINATION AND PROVISION OF SOFTWARE |
US10230712B2 (en) * | 2016-09-12 | 2019-03-12 | Microsoft Technology Licensing, Llc | Binary experimentation on running web servers |
US10621077B2 (en) | 2018-05-16 | 2020-04-14 | Servicenow, Inc. | Dependency mapping between program code and tests to rapidly identify error sources |
US11055081B2 (en) | 2018-09-17 | 2021-07-06 | International Business Machines Corporation | Recommending software project dependency upgrades |
US11086759B2 (en) | 2018-09-27 | 2021-08-10 | SeaLights Technologies LTD | System and method for probe injection for code coverage |
US10733087B2 (en) | 2018-10-17 | 2020-08-04 | Servicenow, Inc. | Environment for continuous testing and integration of software |
US11573885B1 (en) | 2019-09-26 | 2023-02-07 | SeaLights Technologies LTD | System and method for test selection according to test impact analytics |
CN113360363B (zh) * | 2020-03-04 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 微服务系统的测试方法、装置、设备和计算机存储介质 |
US11144435B1 (en) | 2020-03-30 | 2021-10-12 | Bank Of America Corporation | Test case generation for software development using machine learning |
US11036613B1 (en) | 2020-03-30 | 2021-06-15 | Bank Of America Corporation | Regression analysis for software development and management using machine learning |
US11513944B1 (en) * | 2021-07-26 | 2022-11-29 | EMC IP Holding Company LLC | Ranking tests based on code change and coverage |
US11983097B2 (en) | 2021-07-26 | 2024-05-14 | EMC IP Holding Company LLC | Ranking tests based on code change and coverage |
CN113656290B (zh) * | 2021-08-04 | 2024-07-05 | 支付宝(杭州)信息技术有限公司 | 一种mock点自动识别方法、装置以及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916222A (zh) * | 2010-08-09 | 2010-12-15 | 哈尔滨工程大学 | 基于控制流图遍历和切片前向遍历相结合的软件测试方法 |
US7900193B1 (en) * | 2005-05-25 | 2011-03-01 | Parasoft Corporation | System and method for detecting defects in a computer program using data and control flow analysis |
EP2333669A1 (en) * | 2009-12-10 | 2011-06-15 | Sap Ag | Bridging code changes and testing |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6002869A (en) | 1997-02-26 | 1999-12-14 | Novell, Inc. | System and method for automatically testing software programs |
AU2215201A (en) * | 1999-12-20 | 2001-07-03 | Headway Research Limited | System and method for computer-aided graph-based dependency analysis |
US6708290B2 (en) * | 2000-03-02 | 2004-03-16 | Texas Instruments Incorporated | Configurable debug system with wire list walking |
AU2001264713A1 (en) * | 2000-05-19 | 2001-12-03 | Wu-Hon Francis Leung | Methods and apparatus for preventing software modifications from invalidating previously passed integration tests |
DE10118502C1 (de) * | 2001-04-12 | 2002-08-08 | Siemens Ag | Verfahren zur Erfassung und Aufzeichnung von Systeminformationen und Abläufen in verteilten nebenläufigen komponentenbasierten Softwaresystemen |
US7581103B2 (en) | 2001-06-13 | 2009-08-25 | Intertrust Technologies Corporation | Software self-checking systems and methods |
CA2359862A1 (en) * | 2001-10-24 | 2003-04-24 | Ibm Canada Limited - Ibm Canada Limitee | Using identifiers and counters for controlled optimization compilation |
US7028290B2 (en) * | 2002-04-29 | 2006-04-11 | Microsoft Corporation | Method and apparatus for prioritizing software tests |
US7167870B2 (en) * | 2002-05-08 | 2007-01-23 | Sun Microsystems, Inc. | Software development test case maintenance |
US20040060038A1 (en) * | 2002-09-25 | 2004-03-25 | Duncan Johnston-Watt | Verifiable processes in a heterogeneous distributed computing environment |
US7665071B1 (en) * | 2003-12-11 | 2010-02-16 | Sun Microsystems, Inc. | Management object model for performing management of a computer system |
US7673293B2 (en) * | 2004-04-20 | 2010-03-02 | Hewlett-Packard Development Company, L.P. | Method and apparatus for generating code for scheduling the execution of binary code |
US7506320B2 (en) * | 2004-09-09 | 2009-03-17 | International Business Machines Corporation | Generating sequence diagrams using call trees |
US20060168565A1 (en) * | 2005-01-24 | 2006-07-27 | International Business Machines Corporation | Method and system for change classification |
US7620941B1 (en) * | 2005-04-08 | 2009-11-17 | Sun Microsystems, Inc. | Mechanism for lossless user-level tracing on an architecture supporting PC-relative addressing |
US7958486B2 (en) * | 2005-04-22 | 2011-06-07 | Sap Ag | Methods and systems for data-focused debugging and tracing capabilities |
US7752606B2 (en) | 2005-08-10 | 2010-07-06 | Capital One Financial Corporation | Software development tool using a structured format to generate software code |
US8332817B2 (en) * | 2005-11-08 | 2012-12-11 | Red Hat, Inc. | Certifying a software application based on identifying interface usage |
US7945898B1 (en) * | 2006-03-16 | 2011-05-17 | Avaya Inc. | Handling loops in programs and examining feasible software behavior for detecting malicious code |
US8332827B2 (en) * | 2006-12-01 | 2012-12-11 | Murex S.A.S. | Produce graph oriented programming framework with scenario support |
US8713513B2 (en) * | 2006-12-13 | 2014-04-29 | Infosys Limited | Evaluating programmer efficiency in maintaining software systems |
US8219980B2 (en) * | 2007-01-10 | 2012-07-10 | International Business Machines Corporation | Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data |
WO2008155779A2 (en) | 2007-06-20 | 2008-12-24 | Sanjeev Krishnan | A method and apparatus for software simulation |
WO2009022302A1 (en) * | 2007-08-15 | 2009-02-19 | Nxp B.V. | Profile based optimization of processor operating points |
US8117598B2 (en) | 2007-09-27 | 2012-02-14 | Oracle America, Inc. | Method and apparatus to automatically identify specific code changes to probabilistically exclude from regression |
US8286143B2 (en) | 2007-11-13 | 2012-10-09 | International Business Machines Corporation | Method and system for monitoring code change impact on software performance |
US8627287B2 (en) * | 2007-11-29 | 2014-01-07 | Microsoft Corporation | Prioritizing quality improvements to source code |
US8489474B2 (en) * | 2007-12-31 | 2013-07-16 | Software Ag | Systems and/or methods for managing transformations in enterprise application integration and/or business processing management environments |
US8543998B2 (en) * | 2008-05-30 | 2013-09-24 | Oracle International Corporation | System and method for building virtual appliances using a repository metadata server and a dependency resolution service |
US8276123B1 (en) * | 2008-07-22 | 2012-09-25 | Juniper Networks, Inc. | Adaptive regression test selection within testing environments |
US8347272B2 (en) * | 2008-07-23 | 2013-01-01 | International Business Machines Corporation | Call graph dependency extraction by static source code analysis |
US9026997B2 (en) * | 2008-12-16 | 2015-05-05 | Sap Ag | Systems and methods for executing object-oriented programming code invoking pre-existing objects |
US8527956B2 (en) * | 2008-12-23 | 2013-09-03 | International Business Machines Corporation | Workload performance projection via surrogate program analysis for future information handling systems |
US20110258421A1 (en) * | 2010-04-19 | 2011-10-20 | International Business Machines Corporation | Architecture Support for Debugging Multithreaded Code |
US8739128B1 (en) * | 2010-08-22 | 2014-05-27 | Panaya Ltd. | Method and system for automatic identification of missing test scenarios |
CA2716770C (en) * | 2010-10-06 | 2012-03-13 | Ibm Canada Limited - Ibm Canada Limitee | Application services source refactoring |
US8826239B2 (en) * | 2010-10-06 | 2014-09-02 | International Business Machines Corporation | Asynchronous code testing in integrated development environment (IDE) |
US8584079B2 (en) | 2010-12-16 | 2013-11-12 | Sap Portals Israel Ltd | Quality on submit process |
US8473916B2 (en) | 2011-01-25 | 2013-06-25 | Verizon Patent And Licensing Inc. | Method and system for providing a testing framework |
US8543991B2 (en) * | 2011-03-10 | 2013-09-24 | Microsoft Corporation | Profile driven multicore background compilation |
US9032370B2 (en) * | 2011-12-29 | 2015-05-12 | Tata Consultancy Services Limited | Automated test cycle estimation system and method |
US8832662B2 (en) * | 2012-05-08 | 2014-09-09 | Siemens Aktiengesellschaft | Rules engine for architectural governance |
US8819642B2 (en) * | 2012-05-17 | 2014-08-26 | Cognizant Technology Solutions India Pvt. Ltd. | Method and system for generating and processing black box test cases |
US8887138B2 (en) * | 2012-05-25 | 2014-11-11 | Telefonaktiebolaget L M Ericsson (Publ) | Debugging in a dataflow programming environment |
US9032376B2 (en) * | 2012-09-28 | 2015-05-12 | Synopsys, Inc. | Static analysis of computer code to determine impact of change to a code component upon a dependent code component |
US8843901B2 (en) * | 2013-02-12 | 2014-09-23 | Concurix Corporation | Cost analysis for selecting trace objectives |
US8924941B2 (en) * | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US9842044B2 (en) * | 2013-02-13 | 2017-12-12 | Sugarcrm Inc. | Commit sensitive tests |
US20140282421A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Distributed software validation |
US9389986B2 (en) * | 2013-05-06 | 2016-07-12 | Microsoft Technology Licensing, Llc | Identifying impacted tests from statically collected data |
US8966438B2 (en) * | 2013-06-02 | 2015-02-24 | Mark Spencer Chamberlain | System and methods for end-users to graphically program and manage computers and devices |
US9569345B2 (en) * | 2013-12-27 | 2017-02-14 | International Business Machines Corporation | Architectural failure analysis |
US9251045B2 (en) * | 2013-12-27 | 2016-02-02 | International Business Machines Corporation | Control flow error localization |
US9600396B2 (en) * | 2014-03-11 | 2017-03-21 | Citrix Systems, Inc. | Computer-implemented methods and systems for determining application matching status |
-
2013
- 2013-05-06 US US13/887,384 patent/US9389986B2/en active Active
-
2014
- 2014-05-05 EP EP14728047.3A patent/EP2994835B1/en active Active
- 2014-05-05 CN CN201480025911.8A patent/CN105247493B/zh active Active
- 2014-05-05 WO PCT/US2014/036722 patent/WO2014182581A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7900193B1 (en) * | 2005-05-25 | 2011-03-01 | Parasoft Corporation | System and method for detecting defects in a computer program using data and control flow analysis |
EP2333669A1 (en) * | 2009-12-10 | 2011-06-15 | Sap Ag | Bridging code changes and testing |
CN101916222A (zh) * | 2010-08-09 | 2010-12-15 | 哈尔滨工程大学 | 基于控制流图遍历和切片前向遍历相结合的软件测试方法 |
Non-Patent Citations (3)
Title |
---|
HARRY M. SNEED: ""Reverse engineering of test cases for selective regression testing"", 《SOFTWARE MAINTENANCE AND REENGINEERING》 * |
JERRY GAO等: ""A Systematic Regression Testing Method and Tool For Software Components "", 《30TH ANNUAL INTERNATIONAL COMPUTER DOFTWARE AND APPLICATIONS CONFERENCE COMPSAC 2006》 * |
缪力: ""依赖性分析及其在软件测试中的应用"", 《中国优秀博士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111989896A (zh) * | 2018-04-20 | 2020-11-24 | 阿姆Ip有限公司 | 设备的网络中的依赖控制 |
CN110554954A (zh) * | 2019-07-19 | 2019-12-10 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
CN114491424A (zh) * | 2021-12-31 | 2022-05-13 | 西安电子科技大学 | 基于模糊测试的二进制代码裁剪方法 |
CN114491424B (zh) * | 2021-12-31 | 2024-05-03 | 西安电子科技大学 | 基于模糊测试的二进制代码裁剪方法 |
Also Published As
Publication number | Publication date |
---|---|
US9389986B2 (en) | 2016-07-12 |
WO2014182581A1 (en) | 2014-11-13 |
CN105247493B (zh) | 2019-11-26 |
EP2994835A1 (en) | 2016-03-16 |
EP2994835B1 (en) | 2020-11-18 |
US20140331206A1 (en) | 2014-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105247493A (zh) | 从静态收集的数据中标识受影响的测试 | |
US8433554B2 (en) | Predicting system performance and capacity using software module performance statistics | |
US20130282545A1 (en) | Marketplace for Monitoring Services | |
US20140013308A1 (en) | Application Development Environment with Services Marketplace | |
CN105144118A (zh) | 应用测试和分析 | |
US20140013306A1 (en) | Computer Load Generator Marketplace | |
US9946628B2 (en) | Embedding and executing trace functions in code to gather trace data | |
US8918762B2 (en) | Generating test plans and test cases from service-oriented architecture and process models | |
Yin et al. | On representing resilience requirements of microservice architecture systems | |
CN110196809B (zh) | 接口测试方法及装置 | |
JP2006048702A (ja) | トランザクションベースの性能モデルの自動構成 | |
Panigrahi et al. | An approach to prioritize the regression test cases of object-oriented programs | |
Eilam et al. | Towards a Methodology and Framework for AI Sustainability Metrics | |
Yang et al. | Efficient validation of self-adaptive applications by counterexample probability maximization | |
US9892010B2 (en) | Persistent command parameter table for pre-silicon device testing | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理系统 | |
CN111679924B (zh) | 构件化软件系统可靠性仿真方法、装置及电子设备 | |
US20220122038A1 (en) | Process Version Control for Business Process Management | |
Kakkar et al. | Risk analysis in mobile application development | |
Wienke et al. | Continuous regression testing for component resource utilization | |
Chandra et al. | How to the smash next billion mobile app bugs? | |
US20200278861A1 (en) | Refining a software system using live documentation mapping | |
Herrmann et al. | Configuration of inter-process communication with probabilistic model checking | |
KR102666383B1 (ko) | 멀티 디바이스 사용자에 대한 이석 감지 방법 및 시스템 | |
Jägemar | Utilizing hardware monitoring to improve the performance of industrial systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |