CN103678110A - 提供修改相关信息的方法和装置 - Google Patents
提供修改相关信息的方法和装置 Download PDFInfo
- Publication number
- CN103678110A CN103678110A CN201210364163.9A CN201210364163A CN103678110A CN 103678110 A CN103678110 A CN 103678110A CN 201210364163 A CN201210364163 A CN 201210364163A CN 103678110 A CN103678110 A CN 103678110A
- Authority
- CN
- China
- Prior art keywords
- modification item
- modification
- information
- item
- amendment record
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/368—Test management for test version control, e.g. updating test cases to a new software version
Abstract
本发明公开了一种用于提供修改相关信息的方法和装置。所述方法包括:获取对软件源代码进行修改的修改记录的信息,其中修改记录包括修改项;从修改项中识别出导致源代码的执行发生改变的初步备选修改项;在源代码中与初步备选修改项对应的位置插入测试探针,使得在使用测试用例对源代码进行测试的过程中可以输出与测试用例相关的备选修改项的信息;以及,组合将所述修改记录的信息与所述备选修改项的信息进行结合和分析,由此提供修改相关信息。所述装置与上述方法对应。利用上述方法和装置提供的修改相关信息能够示出有可能导致软件回归的修改记录及其中的修改项的信息,从而用于软件回归的识别和消除。
Description
技术领域
本发明涉及软件回归测试,更具体而言,涉及提供修改相关信息用于回归识别的方法和装置。
背景技术
在软件开发过程中,开发人员针对软件要实现的功能编写出源代码,然后测试人员利用测试用例对基于源代码构建的软件进行测试。一般来说,源代码的编写是逐步完成的。开发人员(对于大型软件来说,通常是多个开发人员)不断地向源代码提交修改记录(track),从而对源代码进行修改、补充和完善。于是,存在这样一种情况:基于某个版本的源代码所构建的软件可以通过测试用例的测试,但是在添加了若干修改记录之后,软件不能正常运行,无法通过同样的测试用例的测试。这种现象称为软件回归(regression)。为了消除软件回归,开发人员需要找出导致软件回归的修改记录,这称为回归识别。导致软件回归的修改记录通常也称为缺陷性修改记录。
现有技术中采用多种方式来识别缺陷性修改记录,也就是进行回归识别。在一种方案中,对于添加的多个修改记录依次进行测试。如果在某个修改记录i处软件可以通过测试但在下一修改记录(i+1)处不能通过测试,那么可以将修改记录(i+1)处识别为回归点,将修改记录(i+1)识别为缺陷性修改记录。该方案可以与二分法相结合来提高识别效率。例如,对于n个修改记录,从n/2处开始进行测试。如果在n/2处测试通过,则进一步在n/2与n的中点处进行测试;如果2/n处测试没有通过,则进一步在修改记录1与修改记录n/2的中点处进行测试,直到识别出如上所定义的缺陷性记录。在这样的方案中,回归识别所花费的时间依赖于修改记录的数目n,每次构建花费的时间b和测试花费的时间t。平均来说,识别出回归点所花费的时间为n/2*(b+t)。对于大型软件的开发与测试,b和t都可能花费较长时间,因此,这样的识别过程要花费很长时间。
在另一种方案中,每提交一个修改记录,就重新对软件进行构建和测试。如果软件不能通过测试用例的测试,就判定新添加的修改记录为缺陷性修改记录。这样的方案可以容易地确定出回归点。但是,该方案显著增加了构建和测试的频率。对于一些大型软件开发来说,高频率的构建和测试是不切实际的。
除了花费较长时间和较多精力之外,以上的方案只能确定出回归点,而不能给出更详细的信息,从而为开发人员的调试和纠错提供建议。
因此,希望提出新的方案,能够更加有效地识别并消除软件回归。
发明内容
鉴于以上提出的问题,提出本发明,旨在提供一种方案,通过提供修改相关信息,为软件回归测试中的回归识别和回归消除提供帮助。
根据本发明一个实施例,提出了一种修改相关信息的方法,包括:获取对软件源代码进行修改的至少一个修改记录的信息,所述至少一个修改记录包括至少一个修改项;从所述至少一个修改项中识别出至少一个初步备选修改项,所述初步备选修改项是导致源代码的执行发生改变的修改项;在所述源代码中与所述至少一个初步备选修改项对应的位置插入测试探针,从而在使用测试用例对所述源代码进行测试的过程中输出至少一个备选修改项的信息,所述至少一个备选修改项是所述至少一个初步备选修改项中与所述测试用例相关的修改项;以及,组合所述至少一个修改记录的信息与所述至少一个备选修改项的信息,基于组合的结果提供所述修改相关信息。
根据另一实施例,提出了一种用于提供修改相关信息的装置,包括:获取单元,配置为获取对软件源代码进行修改的至少一个修改记录的信息,所述至少一个修改记录包括至少一个修改项;识别单元,配置为从所述至少一个修改项中识别出至少一个初步备选修改项,所述初步备选修改项是导致源代码的执行发生改变的修改项;测试探针插入单元,配置为在所述源代码中与所述至少一个初步备选修改项对应的位置插入测试探针,从而在使用测试用例对所述源代码进行测试的过程中输出至少一个备选修改项的信息,所述至少一个备选修改项是所述至少一个初步备选修改项中与所述测试用例相关的修改项;提供单元,配置为组合所述至少一个修改记录的信息与所述至少一个备选修改项的信息,基于组合的结果提供所述修改相关信息。
利用上述方法和装置,可以在用测试用例对源代码进行单次测试期间提供修改相关信息,该修改相关信息能够示出有可能导致软件回归的修改记录及其中的修改项的信息。这样的信息对于有效地识别并消除软件回归非常有利。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图2示出根据本发明一个实施例的提供修改相关信息的方法的流程图;
图3示出一个修改记录的例子;
图4示出一个测试用例在源代码中的执行路径的示意图;
图5示出根据一个实施例提供的修改相关信息的示意图;
图6示出根据另一个实施例提供的修改相关信息的示意图;
图7示出根据本发明一个实施例的提供修改相关信息的装置的框图;以及
图8示出根据本发明一个实施例的装置的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
下面结合附图描述本发明的各个实施例。在这些实施例中,通过提供修改相关信息来促进软件回归的识别和消除。上述修改相关信息旨在示出有可能导致软件回归的修改记录及其中的修改项的信息。为了筛选出有可能导致软件回归的修改项,通过识别修改项种类以及选择与测试用例相关的修改项来逐步缩小备选修改项的范围。由此,所提供的修改相关信息能够准确反映出具有较大可能导致软件回归的修改记录。这样的信息对于快速识别软件的回归点提供了很大的帮助。并且,根据上述实施例提供的修改相关信息可以提供针对备选修改项的信息,也就是提供比现有技术更加细粒度的信息,为软件回归的消除提供进一步的参考信息。
现在参看图2,其示出根据本发明一个实施例的提供修改相关信息的方法的流程图。如图所示,该实施例中提供修改相关信息的方法包括以下步骤:步骤21,获取对软件源代码进行修改的至少一个修改记录的信息,所述至少一个修改记录包括至少一个修改项;步骤22,从所述至少一个修改项中识别出导致源代码的执行发生改变的至少一个初步备选修改项;步骤23,在源代码中与初步备选修改项对应的位置插入测试探针(instrument),从而使得在使用测试用例对所述源代码进行测试的过程中可以输出至少一个备选修改项的信息,其中备选修改项是所述至少一个初步备选修改项中与所述测试用例相关的修改项;步骤24,将修改记录的信息与备选修改项的信息进行组合,由此提供所述修改相关信息。下面结合具体例子描述上述各个步骤的执行。
如前所述,在软件开发过程中,开发人员不断地向源代码提交修改记录。为了便于描述,假定已经通过测试用例的测试的上一源代码版本为v0。在这之后,开发人员分别提交了修改记录1,2,…n,由此形成版本为v1的源代码。一般地,一个修改记录可以包括若干个修改项,一个修改项表示对源代码的一行的改动。
通常,可以通过修改记录资料库(track knowledge base),或称为版本管理系统对提交的修改记录1-n进行管理。版本管理系统的例子包括,ClearCase,CVS,Endevor,RTCz等。上述的版本管理系统可以记录并管理各个修改记录的信息。这些信息包括,修改记录的提交人,修改记录的提交时间以及修改记录中的修改项的信息。修改项的信息可以包括,修改发生的位置,例如修改发生在源代码的哪个文件的哪行,以及修改的具体内容等。在一个实施例中,修改项利用修改发生的位置(例如,文件名以及行号)进行标识。在利用版本管理系统管理软件的开发进程的情况下,可以通过访问版本管理系统来执行图2中的步骤21,也就是从版本管理系统获取修改记录的信息。
根据另一种实施方式,在步骤21,可以直接捕获开发人员对修改记录的提交,并对捕获的修改记录进行标记和组织,由此获取修改记录的信息。
在另一实施例中,在步骤21,可以通过比对不同版本的源代码的内容获得修改记录的部分信息。
可以理解,除了以上举例的方式之外,通过使用已有的或将来开发的工具和手段,本领域技术人员能够使用其他的方式来获取修改记录的信息。这些方式也涵盖在本发明范围之内。
如上所述,通过执行步骤21,可以获得修改记录的信息,其中包括修改项的信息。接着,在步骤22,对获得的修改项进行分析,从中识别出初步备选修改项,也就是,导致源代码的执行发生改变的那些修改项。
在对源代码进行的各种各样的修改中,有一部分修改并不会导致源代码的执行发生本质改变,例如,添加注释,删除空白行等等。由于不影响源代码的执行,这样的修改不可能作为导致软件回归的原因。因此,步骤22旨在将导致软件回归的修改项的范围进行初步缩窄,从中排除掉那些对软件执行没有影响的修改项。
通过对修改项的研究,发明人发现,导致源代码的执行发生改变的修改项至少包括下面三类修改项:代码修改、数据修改和别名(alias)修改。
代码修改是对代码的逻辑执行关系进行的修改。在实际程序执行中,大部分的程序故障都是由代码修改引起的。数据修改是对数据的属性进行的修改,例如数据初始值、数据类型(整形、浮点等)、数据长度等等。数据修改也是引起测试无法通过的一个重要原因。对于以上两种修改类型,可以通过多种方式进行识别。
在一个实施例中,通过分析程序编译器前端生成的抽象语法树(abstractsyntax tree,或AST)来识别代码修改和数据修改。本领域技术人员可以理解,编译器前端由语法分析器和语意分析器协同工作来解析(parse)输入的源代码。通过对源代码的解析,可以生成中间代码和一个不依赖于源代码的编程语言的抽象语法树AST。AST是源代码的抽象语法结构的树状表现形式,用树上的节点以及节点之间的结构来表示源代码的逻辑结构。例如,对于诸如if-condition-then这样的条件跳转语句,AST可以使用带有两个分支的节点来表示。另一方面,如前所述,对于每个修改项,可以用修改发生的位置,例如行号,对其进行标识。利用修改项的位置标识,就可以通过遍历AST树的方式将修改项对应定位到AST的特定节点。而通过该节点的信息,就可以判断出该修改项的类型。具体地,如果节点结构表明该节点对应一个陈述语句,那么可以判定,对应的修改项为代码修改;如果节点结构表明该节点对应一个数据声明,那么对应的修改项为数据修改。
在另一实施例中,直接扫描修改项的修改内容,并对修改内容进行语法分析,从而识别出代码修改和数据修改。在以上发明构思指导下,本领域技术人员还有可能采用其他方式识别出代码修改和数据修改。
图3示出一个修改记录的例子。在图3的例子中,左侧的代码段示出一部分源代码,右侧的代码段示出在添加了修改记录A之后的相应的源代码。可以看到,修改记录A包含了多个修改项,包括对源代码第7行的修改,第54行的修改,第305行的修改,第326行的修改。通过利用上述方法对修改项的类型进行识别,可以判定,第54行的修改以及第305行的修改均为代码修改。例如,第54行将for引导的循环语句的执行条件的初始值由cb.repet修改为cb.repet+1,从而改变了程序的执行逻辑。还可以判定,第7行的修改为数据修改,其修改了对变量数据glob的属性定义。可以理解,这样的修改都是可能导致软件回归的修改项。
除了代码修改和数据修改,另一种可能导致软件执行发生变化的修改为别名修改。别名是共享使用同样的存储位置的多个变量之间的关系,别名修改则修改了与其他数据共享使用的存储位置。例如,参见下面两段简单的代码:
在上面的代码段中,x取y的地址,那么x是y的别名。
在别名修改的情况下,尽管修改项可能没有直接修改一个数据,但是由于该数据与其别名共享存储位置,因此,对别名的修改也会导致该数据发生改变。
在程序源代码编译过程中,编译器通过代码分析可以获得所有变量的别名信息。利用这样的别名信息,编译器在产生代码时可以通过侦测变量可能的别名,并依据其别名变量是否属于上述数据修改项之一,识别出进行了别名修改的修改项。
通过以上步骤,分别识别出了代码修改、数据修改和别名修改。由于这三种修改都会导致源代码的执行发生改变,因此在步骤22,将这三种修改类型的修改项识别为初步备选修改项。
以上基于三种具体修改类型来识别出初步备选修改项。然而,可以理解,也可以从不同的角度对修改类型进行不同的分类,从而基于其他的标准挑选出初步备选修改项。在一个实施例中,可以对不会导致源代码的执行发生变化的修改进行分类和识别,在识别出这样的修改项之后,将其余修改项作为初步备选修改项。因此,在以上发明构思的教导下,本领域技术人员可以采用多种分类和识别方法,从获取的修改项中排除掉不可能作为软件回归的原因的修改项,从而初步缩窄修改项的范围。
在一个实施例中,对识别出的初步备选修改项的相关信息进行记录,并提供初步备选修改项信息。这样的信息可以包括,例如,初步备选修改项中的每个修改项的标识(修改位置)、修改类型等。对于数据修改类型的修改项,还可以记录所修改的数据符号;对于别名修改类型的修改项,还可以记录所修改的别名。
接着,如图2所示,在步骤23,在源代码中与初步备选修改项对应的位置插入测试探针,从而输出与测试用例相关的备选修改项的信息。该步骤旨在进一步缩窄导致软件回归的修改项的范围,即从初步备选修改项中进一步筛选出与测试用例相关的修改项,并输出其信息。步骤23的执行基于这样的构思,即,导致修改后的源代码不能通过测试用例的测试的原因必然要归因于该测试用例执行期间所使用到的那些修改项。
图4示出一个测试用例在源代码中的执行路径的示意图。具体地,图4示意性示出了源代码所包含的6个文件及其中的部分源代码片段。此外,修改记录1中包含修改项1-1和修改项1-2,其中修改项1-1对文件2进行了修改,修改项1-2对文件4进行了修改。而修改记录2中的修改项2-1对文件6进行了修改。图4中用箭头示出一个测试用例在执行期间所执行到的代码段,也就是,该测试用例的执行路径。可以看到,测试用例在执行文件3中的第三段代码之后将会跳转到文件2执行修改项1-1对应的代码。而测试用例的执行路径并不经过修改项1-2和修改项2-1,也就是,这两个修改项在该测试用例执行期间并没有得到执行。因此,不管修改项1-2和2-1对源代码进行了何种修改,这两个修改项都不会影响该测试用例的执行结果。进而,修改项1-2和修改项2-1不可能是导致该测试用例无法通过的原因。由此,可以将软件回归的原因进一步集中在与测试用例的执行路径相交的修改项上,也就是,与测试用例相关的修改项。由于测试用例的执行路径在真正执行该测试用例之前无法预先确定,因此需要在执行期间确定与测试用例相关的修改项。
为了获取到与测试用例相关的修改项的信息,在步骤23,在源代码中与初步备选修改项对应的位置插入测试探针。一般地,测试探针可用于检测测试探针所在位置的执行时状态信息,并输出相关结果。在一个实施例中,将测试探针设定为输出测试探针处的修改项的信息。由此,在用测试用例对源代码进行测试的过程中,如果测试用例的执行路径经过某个修改项,该修改项处的测试探针得到执行,于是可以输出对应修改项的信息;反之,如果测试用例的执行路径不经过某个修改项,那么该修改项处的测试探针同样无法得到执行,于是不会输出该修改项的信息。这样,通过在初步备选修改项处插入测试探针并使用测试用例进行测试,可以输出初步备选修改项中与测试用例相关的那部分修改项,即备选修改项,的信息。
在一个实施例中,测试探针被插入在基于源代码生成的中间代码中。可以理解,程序编译器在对源代码进行编译的过程中,可以生成介于源代码和机器可执行代码之间的中间表示形式,即中间代码。编译器后端可以对中间代码进行优化从而提高执行效率。在中间代码中插入测试探针可以在不改变源代码的情况下对测试用例的执行情况进行追踪。为了执行插入测试探针的步骤,首先确定初步备选修改项在中间代码中的相应位置。如前所述,在识别出初步备选修改项的步骤中,以修改位置来标识各个修改项。利用各个初步备选修改项的修改位置,结合源代码和中间代码之间的对应关系,可以容易地确定所述初步备选修改项在中间代码中的位置。然后,可以在这样的位置插入实现测试探针功能的代码。通过插入测试探针来监视程序的执行状况是本领域中技术人员进行软件测试时常用的方法。因此,在确定测试探针位置和测试探针功能的前提下,本领域技术人员能够通过多种代码形式实现测试探针的插入。在一个实施例中,在插入测试探针时参照初步备选修改项的修改类型,从而将测试探针设定为输出所在位置的修改项的修改类型。
在如上所述插入测试探针之后,一旦利用测试用例对源代码进行测试和执行,就会自动输出执行路径所经过的测试探针位置的修改项的信息,即,备选修改项的信息。根据测试探针的设定,输出的信息可以包括,备选修改项的标识,修改类型等。
通过以上的步骤22和23,逐步缩窄了可能作为软件回归的原因的修改项的范围。所输出的备选修改项被选择为导致程序执行发生变化,同时与测试用例紧密相关的那些修改项。这样的修改项具有最大的可能引起软件回归。
进一步地,为了使得提供的修改相关信息更加易于理解,在步骤24,将步骤21获得的修改记录的信息和步骤23输出的备选修改项的信息进行组合,由此提供修改相关信息。
如前所述,步骤21获取的修改记录的信息可以包括修改记录的提交人,修改记录的提交时间等基本信息,还包括修改记录中的修改项的信息。通过修改记录的信息中包含的修改记录与修改项的关系,可以确定步骤23获得的各个备选修改项分别来自哪个修改记录。由此,可以将步骤23获得的备选修改项的信息与步骤21获得的修改记录的信息组合在一起,基于组合的结果,提供与备选修改项相关的全面的信息,即修改相关信息。
图5示出根据一个实施例提供的修改相关信息的示意图。在图5的例子中,示出了4个修改项,这4个修改项是通过步骤21和22识别出的备选修改项。对于每个备选修改项,提供了下列信息:该修改项来自的修改记录,修改记录的提交人,修改记录的提交时间,修改项的修改位置(以文件名和行号表示),修改类型。在图5的例子中,可以看到,修改项2和3来自同一修改记录。
在图5的例子中,以修改项为索引示出了修改相关信息。在另一实施例中,可以将修改记录作为索引示出修改相关信息。
在一个实施例中,步骤24还包括,对组合的修改相关信息进行进一步分析,以示出更多附加信息。在一个例子中,基于备选修改项的信息来评估对应的修改记录作为缺陷性修改记录的可能性。具体地,可以基于备选修改项的信息为对应的修改记录打分,使得修改记录的分数示出该修改记录导致软件回归的可能性。在一个实施例中,统计各个修改记录中包含的备选修改项的数目,将该数目作为修改记录的分数。在另一实施例中,为不同的修改类型赋予不同的因子或者权重。该因子或权重示出不同修改类型引起程序故障的相对概率。例如,在一个具体例子中,将代码修改的修改项的因子设定为10,将数据修改的修改项的因子设定为5,将别名修改的修改项的因子设定为3。基于分配的因子,对修改记录中包含的备选修改项进行加权求和,将求和结果作为修改记录的分数。
图6示出根据另一个实施例提供的修改相关信息的示意图。在图6的例子中,以修改记录为索引示出修改相关信息。对于每个修改记录,提供了该修改记录的标识,提交者,提交时间;此外,还示出了该修改记录中包含的备选修改项的信息,包括备选修改项的修改类型,修改位置。对于数据修改和别名修改,还可以示出修改内容,即修改的数据的符号名。此外,基于修改记录中包含的备选修改项的信息,为每个修改记录进行了打分。图6中的修改记录的分数通过对其中的备选修改项加权求和而获得。由此,图6示出了更加全面的修改相关信息。
在图6示出的例子的基础上,在一个实施例中,还可以根据修改记录的分数对修改记录进行排序,从而在修改相关信息中按照分数从高到低的顺序安排各个修改记录。
可以理解,所提供的修改相关信息的形式和内容并不限于图5和图6所示的例子。对于获取的修改记录的信息和识别出的备选修改项的信息,本领域技术人员可以根据需要进行多种组合和分析从而获得修改相关信息,并以多种方式组织和呈现所述修改相关信息。
利用以上提供的修改相关信息,可以更加方便地进行回归识别和回归消除。具体地,修改相关信息列出了具有较大可能导致软件回归的修改记录和修改项,因此可以针对所列出的修改项进行核查。另外,在对修改项和修改记录进行打分的情况下,可以通过分数获得修改记录作为缺陷性修改记录的概率,根据概率从高到低的顺序进行核查,从而更快速地定位到缺陷性修改记录。并且,如前所述,由于修改相关信息中还给出了每个备选修改项的信息,因此在确定出回归点的基础上,还可以进一步确定出导致软件回归的修改项,也就是缺陷性修改项。提供这样细粒度的信息对于软件回归的消除很有帮助。
另一方面,可以理解,以上的修改相关信息是在用测试用例测试整个修改后的源代码期间实时产生的。也就是说,对于从源代码版本v0到v1之间提供的修改记录1-n,仅需要执行一次测试用例,就可以获得修改记录1-n中的备选修改项,而不必反复多次进行构建和测试,大大缩减了回归识别花费的时间。当然,也可以分别使用多个测试用例对修改后的源代码进行测试,从而多次获得如上所述的修改相关信息。通过对多次获得的修改相关信息进行综合分析,可以更加全面地对源代码进行测试和除错。
基于同样的发明构思,本发明还提供一种用于提供修改相关信息的装置。图7示出根据本发明一个实施例的提供修改相关信息的装置的框图。如图所示,用于提供修改相关信息的装置总体上标注为700。具体地,装置700包括:获取单元71,配置为获取对软件源代码进行修改的至少一个修改记录的信息,所述至少一个修改记录包括至少一个修改项;识别单元72,配置为从所述至少一个修改项中识别出导致源代码的执行发生改变的至少一个初步备选修改项;测试探针插入单元73,配置为在源代码中与初步备选修改项对应的位置插入测试探针,从而使得在使用测试用例对所述源代码进行测试的过程中可以输出至少一个备选修改项的信息,其中备选修改项是所述至少一个初步备选修改项中与所述测试用例相关的修改项;以及提供单元74,配置为组合修改记录的信息与备选修改项的信息,由此提供所述修改相关信息。
在一个实施例中,所述获取单元71配置为,通过访问版本管理系统获取所述至少一个修改记录的信息。
在一个实施例中,所述识别单元72配置为,将代码修改、数据修改和别名修改类型的修改项识别为初步备选修改项。
在一个实施例中,所述识别单元72配置为,通过分析程序编译器生成的抽象语法树来识别代码修改和数据修改类型的修改项。
在一个实施例中,所述识别单元72配置为,通过分析程序编译器提供的别名信息识别出别名修改类型的修改项。
在一个实施例中,所述测试探针插入单元73配置为:确定所述至少一个初步备选修改项在所述源代码的中间代码中的相应位置;以及在所述源代码的中间代码的相应位置插入测试探针,所述测试探针被设定为,输出测试探针所在位置的初步备选修改项的信息。
在一个实施例中,所述提供单元74配置为,在修改相关信息中,基于所述至少一个备选修改项的信息为对应的修改记录打分,以示出该修改记录导致软件回归的可能性。
在一个实施例中,所述提供单元74配置为,为不同修改类型的修改项分配不同的权重,基于分配的权重,对修改记录中包含的备选修改项进行加权求和,将求和结果作为修改记录的分数。
在一个实施例中,所述修改相关信息包括:至少一个备选修改项的信息,其包括各个备选修改项的修改位置、修改类型、修改内容中的至少一个;以及与所述至少一个备选修改项对应的修改记录的信息,其包括各个修改记录的分数,以及各个修改记录的提交人、提交时间中的一个或多个。
上述单元的具体执行方式对应于结合具体例子对图2的各个步骤的描述,在此不再赘述。
可以理解,图7中的各个单元71-74是以功能进行划分的。尽管在图7中将这些单元示出为包含在装置700之内,但是这并不意味着所有的单元必须物理地驻留在同一平台上或包含在同一软件模块内。在一个实施例中,装置700作用为独立的装置或工具,为开发人员和测试人员提供修改相关信息,从而辅助进行回归识别和回归消除。在另一实施例中,装置700的部分单元可以结合到现有的工具或模块中。图8示出根据本发明一个实施例的装置的结构图。在图8的例子中,获取单元71连接到版本管理系统,由此获取修改记录的信息。识别单元72和测试探针插入单元73嵌入在现有的编译器中,从而更加方便地实现其功能。在源代码通过编译器进行编译时,识别单元72结合编译器进行的初步代码分析来实现初步备选修改项的识别,测试探针插入单元73在编译器后端实现测试探针插入。编译之后的源代码经过构建和测试,在运行时中提供运行结果。提供单元74分别从获取单元71和运行时中获得修改记录的信息和备选修改项的信息,基于对这些信息的结合和分析来提供修改相关信息。图8是装置700的一种实现方式,但装置700的结构实现并不限于图8所示。本领域技术人员在本发明的教导下,可以根据需要将装置700的各个单元分布在相同或不同的物理平台和软件工具中,只要这些单元彼此配合地实现以上所述的功能。这样的对装置700结构的修改都应包含在本发明的范畴之内。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种提供修改相关信息的方法,包括:
获取对软件源代码进行修改的至少一个修改记录的信息,所述至少一个修改记录包括至少一个修改项;
从所述至少一个修改项中识别出至少一个初步备选修改项,所述初步备选修改项是导致源代码的执行发生改变的修改项;
在所述源代码中与所述至少一个初步备选修改项对应的位置插入测试探针,从而在使用测试用例对所述源代码进行测试的过程中输出至少一个备选修改项的信息,所述至少一个备选修改项是所述至少一个初步备选修改项中与所述测试用例相关的修改项;
组合所述至少一个修改记录的信息与所述至少一个备选修改项的信息,基于组合的结果提供所述修改相关信息。
2.根据权利要求1的方法,其中所述获取对软件源代码进行修改的至少一个修改记录的信息包括,通过访问与软件源代码相关的版本管理系统获取所述至少一个修改记录的信息。
3.根据权利要求1的方法,其中所述识别出至少一个初步备选修改项包括,将代码修改、数据修改和别名修改的修改项识别为初步备选修改项。
4.根据权利要求3的方法,其中所述识别出至少一个初步备选修改项包括,通过分析程序编译器针对所述源代码生成的抽象语法树来识别代码修改和数据修改的修改项。
5.根据权利要求3的方法,其中所述识别出至少一个初步备选修改项包括,通过分析程序编译器针对所述源代码提供的别名信息识别出别名修改的修改项。
6.根据权利要求1-5中任一项的方法,其中所述插入测试探针包括:
确定所述至少一个初步备选修改项在程序编译器针对所述源代码生成的中间代码中的相应位置;以及
在所述中间代码中的对应位置插入测试探针,所述测试探针被设定为,输出测试探针所在位置的初步备选修改项的信息。
7.根据权利要求1-5中任一项的方法,还包括,在所述修改相关信息中,基于所述至少一个备选修改项的信息为对应的修改记录打分,以示出该修改记录导致软件回归的可能性。
8.根据权利要求7的方法,其中所述为对应的修改记录打分包括,为不同修改类型的修改项分配不同的权重,基于分配的权重,对修改记录中包含的备选修改项进行加权求和,将求和结果作为修改记录的分数。
9.根据权利要求7的方法,其中所述修改相关信息包括:
所述至少一个备选修改项的信息,其包括以下中的至少一个:备选修改项的修改位置、修改类型以及修改内容;以及
与所述至少一个备选修改项对应的修改记录的信息,其包括各个修改记录的分数,以及以下中的至少一个:修改记录的提交人和提交时间。
10.一种提供修改相关信息的装置,包括:
获取单元,配置为获取对软件源代码进行修改的至少一个修改记录的信息,所述至少一个修改记录包括至少一个修改项;
识别单元,配置为从所述至少一个修改项中识别出至少一个初步备选修改项,所述初步备选修改项是导致源代码的执行发生改变的修改项;
测试探针插入单元,配置为在所述源代码中与所述至少一个初步备选修改项对应的位置插入测试探针,从而在使用测试用例对所述源代码进行测试的过程中输出至少一个备选修改项的信息,所述至少一个备选修改项是所述至少一个初步备选修改项中与所述测试用例相关的修改项;
提供单元,配置为组合所述至少一个修改记录的信息与所述至少一个备选修改项的信息,基于组合的结果提供所述修改相关信息。
11.根据权利要求10的装置,其中所述获取单元配置为,通过访问与软件源代码相关的版本管理系统获取所述至少一个修改记录的信息。
12.根据权利要求10的装置,其中所述识别单元配置为,将代码修改、数据修改和别名修改类型的修改项识别为初步备选修改项。
13.根据权利要求12的装置,其中所述识别单元配置为,通过分析程序编译器针对所述源代码生成的抽象语法树来识别代码修改和数据修改的修改项。
14.根据权利要求12的装置,其中所述识别单元配置为,通过分析程序编译器针对所述源代码提供的别名信息识别出别名修改的修改项。
15.根据权利要求10-14中任一项的装置,其中所述测试探针插入单元配置为:
确定所述至少一个初步备选修改项在程序编译器针对所述源代码生成的中间代码中的相应位置;以及
在所述中间代码中的相应位置插入测试探针,所述测试探针被设定为,输出测试探针所在位置的初步备选修改项的信息。
16.根据权利要求10-14中任一项的装置,其中所述提供单元配置为,在所述修改相关信息中,基于所述至少一个备选修改项的信息为对应的修改记录打分,以示出该修改记录导致软件回归的可能性。
17.根据权利要求16的装置,其中所述提供单元配置为,为不同修改类型的修改项分配不同的权重,基于分配的权重,对修改记录中包含的备选修改项进行加权求和,将求和结果作为修改记录的分数。
18.根据权利要求16的装置,其中所述修改相关信息包括:
所述至少一个备选修改项的信息,其包括以下中的至少一个:备选修改项的修改位置、修改类型以及修改内容;以及
与所述至少一个备选修改项对应的修改记录的信息,其包括各个修改记录的分数,以及以下中的至少一个:修改记录的提交人和提交时间。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210364163.9A CN103678110B (zh) | 2012-09-26 | 2012-09-26 | 提供修改相关信息的方法和装置 |
US14/035,385 US9158514B2 (en) | 2012-09-26 | 2013-09-24 | Method and apparatus for providing change-related information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210364163.9A CN103678110B (zh) | 2012-09-26 | 2012-09-26 | 提供修改相关信息的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678110A true CN103678110A (zh) | 2014-03-26 |
CN103678110B CN103678110B (zh) | 2016-03-30 |
Family
ID=50315750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210364163.9A Expired - Fee Related CN103678110B (zh) | 2012-09-26 | 2012-09-26 | 提供修改相关信息的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9158514B2 (zh) |
CN (1) | CN103678110B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN106326749A (zh) * | 2015-06-24 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 文件修复方法及装置 |
CN109783128A (zh) * | 2018-12-13 | 2019-05-21 | 平安普惠企业管理有限公司 | 代码改动通知方法、设备、存储介质及装置 |
CN111191410A (zh) * | 2018-10-26 | 2020-05-22 | 富士施乐株式会社 | 用于计算笔记本界面的系统和方法及其计算机可读介质 |
CN111367555A (zh) * | 2020-03-23 | 2020-07-03 | 北京字节跳动网络技术有限公司 | 断言的方法、装置、电子设备及计算机可读介质 |
CN112948013A (zh) * | 2019-12-24 | 2021-06-11 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
CN114661688A (zh) * | 2022-03-25 | 2022-06-24 | 马上消费金融股份有限公司 | 地址纠错方法及装置 |
CN115658551A (zh) * | 2022-12-26 | 2023-01-31 | 海马云(天津)信息技术有限公司 | 代码测试方法、存储介质、电子设备和装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678110B (zh) * | 2012-09-26 | 2016-03-30 | 国际商业机器公司 | 提供修改相关信息的方法和装置 |
US9946634B2 (en) * | 2013-12-09 | 2018-04-17 | International Business Machines Corporation | System and method for determining test coverage |
US20150370685A1 (en) * | 2014-06-24 | 2015-12-24 | Juergen Heymann | Defect localization in software integration tests |
US10324693B2 (en) * | 2015-11-24 | 2019-06-18 | Nvidia Corporation | Optimizing multiple invocations of graphics processing unit programs in Java |
US10761828B2 (en) | 2017-01-06 | 2020-09-01 | Microsoft Technology Licensing, Llc | Deviation finder |
US20180276398A1 (en) * | 2017-03-21 | 2018-09-27 | O.C. Tanner Company | System and method for providing restricted access to production files in a code deployment environment |
CN108509338A (zh) * | 2018-03-17 | 2018-09-07 | 东南大学 | 一种基于多层次变更分析的软件演化评估系统及方法 |
US10303586B1 (en) * | 2018-07-02 | 2019-05-28 | Salesforce.Com, Inc. | Systems and methods of integrated testing and deployment in a continuous integration continuous deployment (CICD) system |
US11080172B2 (en) * | 2019-09-17 | 2021-08-03 | International Business Machines Corporation | Instruction count based compiler performance regression testing |
US11477077B1 (en) * | 2019-10-30 | 2022-10-18 | United Services Automobile Association (Usaa) | Change management system with monitoring, alerting, and trending for information technology environment |
US11132760B2 (en) * | 2019-12-13 | 2021-09-28 | Qualcomm Incorporated | Graphics instruction operands alias |
US20230229581A1 (en) * | 2022-01-18 | 2023-07-20 | International Business Machines Corporation | Identifying regression test failures |
CN114356405B (zh) * | 2022-03-21 | 2022-05-17 | 思探明信息科技(南京)有限公司 | 开源组件函数的匹配方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484205B2 (en) * | 2002-12-12 | 2009-01-27 | Microsoft Corporation | Preprocessor-based source code instrumentation |
US7503037B2 (en) * | 2004-04-02 | 2009-03-10 | Bea Systems, Inc. | System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval |
US20090089745A1 (en) * | 2007-09-27 | 2009-04-02 | Sun Microsystems, Inc. | Method and apparatus to automatically identify specific code changes to probabilistically exclude from regression |
US20090089755A1 (en) * | 2007-09-27 | 2009-04-02 | Sun Microsystems, Inc. | Method and Apparatus to Increase Efficiency of Automatic Regression In "Two Dimensions" |
US20110016452A1 (en) * | 2009-01-15 | 2011-01-20 | Infosys Technologies Limited | Method and system for identifying regression test cases for a software |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6149318A (en) * | 1997-04-15 | 2000-11-21 | Samuel C. Kendall | Link-time and run-time error detection, and program instrumentation |
US7146607B2 (en) * | 2002-09-17 | 2006-12-05 | International Business Machines Corporation | Method and system for transparent dynamic optimization in a multiprocessing environment |
US7475386B1 (en) * | 2003-11-14 | 2009-01-06 | Sun Microsystems, Inc. | Mechanism for disjoint instrumentation providers in a tracing framework |
US7496900B2 (en) * | 2004-02-12 | 2009-02-24 | International Business Machines Corporation | Method for automatic detection of build regressions |
US7840944B2 (en) * | 2005-06-30 | 2010-11-23 | Sap Ag | Analytical regression testing on a software build |
US7844955B2 (en) | 2005-12-24 | 2010-11-30 | International Business Machines Corporation | Performance computer program testing after source code modification using execution conditions |
US8898660B2 (en) * | 2008-11-25 | 2014-11-25 | Fisher-Rosemount Systems, Inc. | Systems and methods to provide customized release notes during a software system upgrade of a process control system |
CN103678110B (zh) * | 2012-09-26 | 2016-03-30 | 国际商业机器公司 | 提供修改相关信息的方法和装置 |
-
2012
- 2012-09-26 CN CN201210364163.9A patent/CN103678110B/zh not_active Expired - Fee Related
-
2013
- 2013-09-24 US US14/035,385 patent/US9158514B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484205B2 (en) * | 2002-12-12 | 2009-01-27 | Microsoft Corporation | Preprocessor-based source code instrumentation |
US7503037B2 (en) * | 2004-04-02 | 2009-03-10 | Bea Systems, Inc. | System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval |
US20090089745A1 (en) * | 2007-09-27 | 2009-04-02 | Sun Microsystems, Inc. | Method and apparatus to automatically identify specific code changes to probabilistically exclude from regression |
US20090089755A1 (en) * | 2007-09-27 | 2009-04-02 | Sun Microsystems, Inc. | Method and Apparatus to Increase Efficiency of Automatic Regression In "Two Dimensions" |
US20110016452A1 (en) * | 2009-01-15 | 2011-01-20 | Infosys Technologies Limited | Method and system for identifying regression test cases for a software |
Non-Patent Citations (1)
Title |
---|
刘倩: "COM组件系统依赖分析方法与回归测试研究", 《中国优秀硕士学位论文全文数据库·信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326749A (zh) * | 2015-06-24 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 文件修复方法及装置 |
CN106326749B (zh) * | 2015-06-24 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 文件修复方法及装置 |
CN105159715B (zh) * | 2015-09-01 | 2018-07-20 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN111191410A (zh) * | 2018-10-26 | 2020-05-22 | 富士施乐株式会社 | 用于计算笔记本界面的系统和方法及其计算机可读介质 |
CN109783128A (zh) * | 2018-12-13 | 2019-05-21 | 平安普惠企业管理有限公司 | 代码改动通知方法、设备、存储介质及装置 |
CN112948013B (zh) * | 2019-12-24 | 2023-10-10 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
CN112948013A (zh) * | 2019-12-24 | 2021-06-11 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
CN111367555A (zh) * | 2020-03-23 | 2020-07-03 | 北京字节跳动网络技术有限公司 | 断言的方法、装置、电子设备及计算机可读介质 |
CN111367555B (zh) * | 2020-03-23 | 2023-08-08 | 抖音视界有限公司 | 断言的方法、装置、电子设备及计算机可读介质 |
CN114661688B (zh) * | 2022-03-25 | 2023-09-19 | 马上消费金融股份有限公司 | 地址纠错方法及装置 |
CN114661688A (zh) * | 2022-03-25 | 2022-06-24 | 马上消费金融股份有限公司 | 地址纠错方法及装置 |
CN115658551A (zh) * | 2022-12-26 | 2023-01-31 | 海马云(天津)信息技术有限公司 | 代码测试方法、存储介质、电子设备和装置 |
Also Published As
Publication number | Publication date |
---|---|
US9158514B2 (en) | 2015-10-13 |
CN103678110B (zh) | 2016-03-30 |
US20140096115A1 (en) | 2014-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678110B (zh) | 提供修改相关信息的方法和装置 | |
JP6859449B2 (ja) | テストケースを利用してテストを遂行する方法および装置 | |
Elberzhager et al. | Reducing test effort: A systematic mapping study on existing approaches | |
US8875110B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
CN109426615A (zh) | 过程间的空指针解引用检测方法、系统、设备以及介质 | |
CN113032195A (zh) | 芯片仿真验证方法、系统、设备及存储介质 | |
US20150370685A1 (en) | Defect localization in software integration tests | |
CN104252408A (zh) | 提供测试用例的方法和装置 | |
Sarhan et al. | A survey of challenges in spectrum-based software fault localization | |
US10902130B2 (en) | Guiding automated testing of binary programs | |
US8943484B2 (en) | Code generation method and information processing apparatus | |
US20160342720A1 (en) | Method, system, and computer program for identifying design revisions in hardware design debugging | |
CN103164334A (zh) | 检测web应用自动测试用例中的断裂点的系统和方法 | |
Lee et al. | Test coverage criteria for software product line testing: Systematic literature review | |
Zhao et al. | Towards an understanding of change types in bug fixing code | |
US7539977B1 (en) | Automatic bug isolation in computer programming languages | |
Yu et al. | Automated assertion generation via information retrieval and its integration with deep learning | |
CN112131122B (zh) | 一种源代码缺陷检测工具误报评估方法及装置 | |
Huq et al. | Review4Repair: Code review aided automatic program repairing | |
Binamungu et al. | Detecting duplicate examples in behaviour driven development specifications | |
Aman et al. | A doc2vec-based assessment of comments and its application to change-prone method analysis | |
CN115658452A (zh) | 埋点校验方法、埋点校验装置、可读存储介质、电子设备 | |
Lin et al. | Predictive comment updating with heuristics and ast-path-based neural learning: A two-phase approach | |
Polaczek et al. | Exploring the software repositories of embedded systems: An industrial experience | |
US20090064092A1 (en) | Visual programming language optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160330 |