CN106547678A - 用于白盒测试的方法和装置 - Google Patents
用于白盒测试的方法和装置 Download PDFInfo
- Publication number
- CN106547678A CN106547678A CN201510590352.1A CN201510590352A CN106547678A CN 106547678 A CN106547678 A CN 106547678A CN 201510590352 A CN201510590352 A CN 201510590352A CN 106547678 A CN106547678 A CN 106547678A
- Authority
- CN
- China
- Prior art keywords
- code
- function
- test case
- mapping
- determined
- 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/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本公开的实施例提供了一种用于白盒测试的方法和装置。该方法包括:确定在目标版本的代码中发生改变的代码行;确定该代码行所属的函数;以及基于从函数到测试用例的第一映射,确定与该代码行所属的函数对应的测试用例的集合。与现有技术相比,本公开的实施例能够基于函数调用关系来选择有限的测试用例以覆盖代码改变所影响的软件特性,从而提高自动测试的效率。
Description
技术领域
本公开的实施例总体涉及软件测试,更具体地,涉及用于白盒测试的方法和装置。
背景技术
在典型的软件持续集成(CI)环境中,软件开发和验证被链接在无缝集成的工具链中。代码改变(例如,提交,拉取请求(pull request)或其他代码提交行为)将触发对所提交代码的自动编译,以及利用测试用例列表对代码进行的自动测试。因此,密集的代码提交将导致密集的回归测试任务。
为了选择用于回归测试的测试用例,现有技术中的方法通常包括:选择冒烟测试套件(smoke test suite)、选择完整的测试套件或者人工选择测试用例。冒烟测试是指对软件的基本功能进行测试,以确保软件的基本功能能够正常工作。因此冒烟测试套件仅包括有关软件基本特性的测试用例,其可能遗漏有关其他软件特性的测试用例。完整的测试套件包括有关软件全部功能的测试用例,然而,针对较小规模的代码改变而言,其可能导致不必要的时间成本。此外,人工选择测试用例依赖于工程师的经验,其可能不能保证所选择的测试用例的覆盖程度。
此外,在关于白盒测试的现有方法中,存在例如路径覆盖、条件覆盖和决策覆盖等技术。然而,这些技术都是针对具体的代码行的,因此可能不能够针对代码改变所影响的软件特性提供精确的测试用例集合。
因此,本领域中需要一种更为有效的测试方法以解决上述问题。
发明内容
本公开的实施例旨在提供一种用于白盒测试的方法和装置,以解决上述问题。
根据本公开的一个方面,提供了一种用于白盒测试的方法,包括:确定在目标版本的代码中发生改变的代码行;确定所述代码行所属的函数;以及基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。
在一些实施例中,确定在目标版本的代码中发生改变的代码行包括:将目标版本的代码与原始版本的代码进行比较;以及基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。
在一些实施例中,确定在所述目标版本的代码中发生改变的所述代码行包括:确定从所述原始版本的代码中删除的代码行;确定相对于所述原始版本的代码修改的代码行;以及确定相对于所述原始版本的代码新增的代码行。
在一些实施例中,所述方法还包括:建立从函数到测试用例的所述第一映射。
在一些实施例中,建立从函数到测试用例的所述第一映射包括:建立从测试用例到函数的第二映射;以及基于所述第二映射,生成所述第一映射。
在一些实施例中,建立从测试用例到函数的第二映射包括:确定代码中的函数调用关系;基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及基于每个测试用例所对应的函数集合,生成所述第二映射。
在一些实施例中,确定代码中的函数调用关系包括:利用状态机来对所述代码中的语句进行分析;基于所述分析的结果,确定所述代码中包括的函数的列表;以及基于所述函数列表,确定所述代码中的所述函数调用关系。
在一些实施例中,建立从函数到测试用例的所述第一映射还包括:针对所述原始版本的代码,建立所述第一映射;以及针对所述目标版本的代码,更新所述第一映射。
根据本公开的另一方面,提供了一种用于白盒测试的装置,包括:代码改变确定模块,被配置为确定在目标版本的代码中发生改变的代码行;函数确定模块,被配置为确定所述代码行所属的函数;以及测试用例确定模块,被配置为基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。
在一些实施例中,所述代码改变确定模块被配置为:将所述目标版本的代码与原始版本的代码进行比较;以及基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。
在一些实施例中,所述代码改变确定模块被配置为:确定从所述原始版本的代码中删除的代码行;确定相对于所述原始版本的代码修改的代码行;以及确定相对于所述原始版本的代码新增的代码行。
在一些实施例中,所述装置还包括:第一映射建立模块,被配置为建立从函数到测试用例的所述第一映射。
在一些实施例中,所述第一映射建立模块被配置为:建立从测试用例到函数的第二映射;以及基于所述第二映射,生成所述第一映射。
在一些实施例中,建立从测试用例到函数的第二映射包括:确定代码中的函数调用关系;基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及基于每个测试用例所对应的函数集合,生成所述第二映射。
在一些实施例中,确定代码中的函数调用关系包括:利用状态机来对所述代码中的语句进行分析;基于所述分析的结果,确定所述代码中包括的函数的列表;以及基于所述函数列表,确定所述代码中的所述函数调用关系。
在一些实施例中,所述第一映射建立模块还被配置为:针对所述原始版本的代码,建立所述第一映射;以及针对所述目标版本的代码,更新所述第一映射。
根据本公开的又一方面,提供了一种用于白盒测试的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行所述方法的任意步骤。
与现有技术相比,本公开的实施例能够基于函数调用关系来选择有限的测试用例以覆盖代码改变所影响的软件特性,从而提高自动测试的效率。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出了本公开的若干实施例,其中:
图1示出了适于用来实现本公开的实施例的示例性计算机系统/服务器12的框图。
图2示出了根据本公开的实施例的建立从函数到测试用例的第一映射的方法200的流程图;
图3示出了根据本公开的实施例的建立从测试用例到函数的第二映射的方法300的流程图;
图4示出了根据本公开的实施例的用于白盒测试的方法400的流程图;以及
图5示出了根据本公开的实施例的用于白盒测试的装置500的框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。应当理解,描述这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
图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,图2示出了根据本公开的实施例的建立从函数到测试用例的第一映射的方法200的流程图,如下所述,其中第一映射将被用于确定要选择的测试用例的集合。例如,方法200可以由关于图1所描述的计算机系统/服务器12来实施。
根据方法200,在步骤S201,首先建立从测试用例到函数的第二映射。例如,图3示出了根据本公开的实施例的建立从测试用例到函数的第二映射的方法300的流程图。
如图3所示,首先确定代码中的函数调用关系(步骤S301)。仅出于说明而非限制的目的,将以Python语言为例来描述如何确定代码中的函数调用关系。根据本公开的实施例,为了确定代码中的函数调用关系,可以利用状态机来对代码中的语句进行分析。例如,可以实现状态机来解析Python代码中的字符串,处理括号、点(指示调用关系)、等号等符号,从而提取Python代码中的所有声明元素。然后,基于分析的结果,可以确定代码中包括的函数的列表。例如,确定的函数列表可以包括在代码中所包括的函数的名称以及函数所处的代码行等信息。根据这些信息,可以进一步确定代码中的各函数之间的调用关系,即确定函数列表中的每个函数分别调用了哪些函数。例如,可以根据Python代码中的缩进使用来确定Python代码中的每个函数的作用域,并且寻找出在函数的作用域中所调用的其他函数。应当理解,除了上述描述的方法以外,也可以通过任何已有的或者将要开发的词法及语法分析工具(例如,针对Python语言的Pylint工具等)来获得代码中的函数调用关系;并且用于编写代码的程序设计语言也不限于Python,而是可以包括任何已有的或者将要开发的程序设计语言。然后,基于函数调用关系,可以针对每个测试用例确定与该测试用例对应的函数集合(步骤S302)。例如,可以根据执行每个测试用例所获得的函数调用跟踪(function call trace)来确定该测试用例所涉及的所有函数。最后,基于每个测试用例所对应的函数集合,生成第二映射(步骤S303)。
现在返回图2,方法200进行至步骤S202。在步骤S202,基于第二映射,生成从函数到测试用例的第一映射。如上所述,第二映射指示了与每个测试用例对应的函数的集合。因此,根据第二映射,可以生成指示与每个函数相关联的测试用例的集合的第一映射。第一映射将被用于确定针对代码改变而要选择的测试用例的集合。
至此,方法200结束。
根据本公开的实施例,可以针对原始版本的代码,建立从函数到测试用例的第一映射。在此,原始版本指代未经改变的代码的版本(以区别于下文中的目标版本,即经过改变的代码的版本)。此外,例如,在目标版本的代码相对于原始版本的代码完全删除了某些函数或者新增了某些函数的情况下,可以针对目标版本的代码来更新从函数到测试用例的第一映射。更新第一映射的步骤例如可以与建立第一映射的步骤完全相同,或者可以根据具体情况对其中的某些步骤进行删减。出于简化说明的目的,在此不再作进一步的详细描述。
图4示出了根据本公开的实施例的用于白盒测试的方法400的流程图。例如,方法400可以由关于图1所描述的计算机系统/服务器12来实施。
根据方法400,在步骤S401,确定在目标版本的代码中发生改变的代码行。根据本公开的实施例,可以将目标版本的代码与原始版本的代码进行比较,并且基于比较的结果来确定在目标版本的代码中发生改变的代码行。例如,可以使用代码版本管理工具git中的diff命令来对目标版本的代码与原始版本的代码进行比较。通过比较可以确定在目标版本的代码中相对于原始版本的代码删除了哪些代码行,确定在目标版本的代码中相对于原始版本的代码修改了哪些代码行以及确定在目标版本的代码中相对于原始版本的代码新增了哪些代码行。
接下来,方法400进行至步骤S402。在步骤S402,确定代码行所属的函数。例如,如上所述,可以利用基于分析所获得的代码中的函数列表来确定发生改变的代码行所属的函数。
接下来,方法400进行至步骤S403。在步骤S403,基于从函数到测试用例的第一映射,确定与代码行所属的函数对应的测试用例的集合。如上所述,使用方法200可以建立从函数到测试用例的第一映射,该第一映射指示了与代码中的每个函数相关联的测试用例的集合。因此,可以根据已经确定的发生改变的代码行所属的函数,基于从函数到测试用例的第一映射来确定发生改变的代码行所影响的测试用例的集合。根据本公开的实施例,例如,可以在原始版本的代码上根据被删除的代码行建立第一测试用例集合;并且可以在目标版本的代码上根据新增的代码行建立第二测试用例集合。然后,将第一测试用例集合和第二测试用例集合合并(例如,取并集)。如果经合并的测试用例集合中存在在目标版本的代码中已经被删除的测试用例,则从经合并的测试用例集合中将该测试用例删除,以生成最终的测试用例集合。该测试用例集合可以覆盖代码改变所影响的软件特性。
至此,方法400结束。
图5示出了根据本公开的实施例的用于白盒测试的装置500的框图。如图5所示,装置500包括:代码改变确定模块501,被配置为确定在目标版本的代码中发生改变的代码行;函数确定模块502,被配置为确定该代码行所属的函数;以及测试用例确定模块503,被配置为基于从函数到测试用例的第一映射,确定与该代码行所属的函数对应的测试用例的集合。
根据本公开的实施例,代码改变确定模块501被配置为:将目标版本的代码与原始版本的代码进行比较;以及基于比较的结果,确定在目标版本的代码中发生改变的代码行。
根据本公开的实施例,代码改变确定模块501还被配置为:确定从原始版本的代码中删除的代码行;以及确定相对于原始版本的代码新增的代码行。
根据本公开的实施例,装置500还包括:第一映射建立模块,被配置为建立从函数到测试用例的第一映射。
根据本公开的实施例,第一映射建立模块被配置为:建立从测试用例到函数的第二映射;以及基于第二映射,生成第一映射。
根据本公开的实施例,建立从测试用例到函数的第二映射包括:针对原始版本的代码,确定代码中的函数调用关系;基于函数调用关系,针对每个测试用例确定与该测试用例对应的函数集合;以及基于每个测试用例所对应的函数集合,生成第二映射。
根据本公开的实施例,针对原始版本的代码,确定代码中的函数调用关系包括:利用状态机来对代码中的语句进行分析;基于分析的结果,确定代码中包括的函数的列表;以及基于函数列表,确定代码中的函数调用关系。
根据本公开的实施例,装置500还包括:第一映射更新模块,被配置为基于目标版本的代码,更新第一映射。
综上所述,根据上述本公开的实施例,提供了一种用于白盒测试的方法和装置。与现有技术相比,本公开的实施例基于函数调用关系来选择有限的测试用例以覆盖代码改变所影响的软件特性,从而提高自动测试的效率。
本公开的实施例可以是方法、装置和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开的实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言——诸如Smalltalk、C++等,以及常规的过程式编程语言——诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的实施例的各个方面。
这里参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能够理解本文公开的各实施例。
Claims (17)
1.一种用于白盒测试的方法,包括:
确定在目标版本的代码中发生改变的代码行;
确定所述代码行所属的函数;以及
基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。
2.根据权利要求1所述的方法,其中确定在目标版本的代码中发生改变的代码行包括:
将所述目标版本的代码与原始版本的代码进行比较;以及
基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。
3.根据权利要求2所述的方法,其中确定在所述目标版本的代码中发生改变的所述代码行包括:
确定从所述原始版本的代码中删除的代码行;
确定相对于所述原始版本的代码修改的代码行;以及
确定相对于所述原始版本的代码新增的代码行。
4.根据权利要求1所述的方法,还包括:
建立从函数到测试用例的所述第一映射。
5.根据权利要求4所述的方法,其中建立从函数到测试用例的所述第一映射包括:
建立从测试用例到函数的第二映射;以及
基于所述第二映射,生成所述第一映射。
6.根据权利要求5所述的方法,其中建立从测试用例到函数的第二映射包括:
确定代码中的函数调用关系;
基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及
基于每个测试用例所对应的函数集合,生成所述第二映射。
7.根据权利要求6所述的方法,其中确定代码中的函数调用关系包括:
利用状态机来对所述代码中的语句进行分析;
基于所述分析的结果,确定所述代码中包括的函数的列表;以及
基于所述函数列表,确定所述代码中的所述函数调用关系。
8.根据权利要求4所述的方法,其中建立从函数到测试用例的所述第一映射还包括:
针对所述原始版本的代码,建立所述第一映射;以及
针对所述目标版本的代码,更新所述第一映射。
9.一种用于白盒测试的装置,包括:
代码改变确定模块,被配置为确定在目标版本的代码中发生改变的代码行;
函数确定模块,被配置为确定所述代码行所属的函数;以及
测试用例确定模块,被配置为基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。
10.根据权利要求9所述的装置,其中所述代码改变确定模块被配置为:
将所述目标版本的代码与原始版本的代码进行比较;以及
基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。
11.根据权利要求10所述的装置,其中所述代码改变确定模块被配置为:
确定从所述原始版本的代码中删除的代码行;
确定相对于所述原始版本的代码修改的代码行;以及
确定相对于所述原始版本的代码新增的代码行。
12.根据权利要求9所述的装置,还包括:
第一映射建立模块,被配置为建立从函数到测试用例的所述第一映射。
13.根据权利要求12所述的装置,其中所述第一映射建立模块被配置为:
建立从测试用例到函数的第二映射;以及
基于所述第二映射,生成所述第一映射。
14.根据权利要求13所述的装置,其中建立从测试用例到函数的第二映射包括:
确定代码中的函数调用关系;
基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及
基于每个测试用例所对应的函数集合,生成所述第二映射。
15.根据权利要求14所述的装置,其中确定代码中的函数调用关系包括:
利用状态机来对所述代码中的语句进行分析;
基于所述分析的结果,确定所述代码中包括的函数的列表;以及
基于所述函数列表,确定所述代码中的所述函数调用关系。
16.根据权利要求12所述的装置,所述第一映射建立模块还被配置为:
针对所述原始版本的代码,建立所述第一映射;以及
针对所述目标版本的代码,更新所述第一映射。
17.一种用于白盒测试的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行根据权利要求1至8中的任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510590352.1A CN106547678B (zh) | 2015-09-16 | 2015-09-16 | 用于白盒测试的方法和装置 |
US15/263,839 US10671518B2 (en) | 2015-09-16 | 2016-09-13 | White-box testing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510590352.1A CN106547678B (zh) | 2015-09-16 | 2015-09-16 | 用于白盒测试的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106547678A true CN106547678A (zh) | 2017-03-29 |
CN106547678B CN106547678B (zh) | 2019-03-15 |
Family
ID=58236871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510590352.1A Active CN106547678B (zh) | 2015-09-16 | 2015-09-16 | 用于白盒测试的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10671518B2 (zh) |
CN (1) | CN106547678B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193747A (zh) * | 2017-05-27 | 2017-09-22 | 北京金山安全软件有限公司 | 代码测试方法、装置和计算机设备 |
CN107992424A (zh) * | 2017-12-15 | 2018-05-04 | 平安科技(深圳)有限公司 | 自动化测试分析方法、应用服务器及计算机可读存储介质 |
CN108733550A (zh) * | 2017-04-13 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种功能模块的自动化回归测试方法、装置 |
CN108763091A (zh) * | 2018-05-31 | 2018-11-06 | 恒生电子股份有限公司 | 用于回归测试的方法、装置及系统 |
CN109426609A (zh) * | 2017-08-29 | 2019-03-05 | 富士通株式会社 | 测试应用的方法和装置 |
CN109634864A (zh) * | 2018-12-12 | 2019-04-16 | 江苏满运软件科技有限公司 | 入口函数自动溯源方法、装置、电子设备、存储介质 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
CN110362463A (zh) * | 2018-04-10 | 2019-10-22 | 挖财网络技术有限公司 | 一种自动挑选测试用例进行回归测试的方法和装置 |
CN110928770A (zh) * | 2019-10-29 | 2020-03-27 | 航天信息股份有限公司 | 软件测试的方法、装置、系统、存储介质和电子设备 |
CN111752843A (zh) * | 2020-06-29 | 2020-10-09 | 百度在线网络技术(北京)有限公司 | 用于确定影响面的方法、装置、电子设备及可读存储介质 |
CN112835779A (zh) * | 2019-11-25 | 2021-05-25 | 上海哔哩哔哩科技有限公司 | 测试用例确定方法、装置、计算机设备 |
CN113010433A (zh) * | 2021-03-31 | 2021-06-22 | 锐凌无线通讯科技(深圳)有限公司 | 一种持续集成测试方法、系统及相关设备 |
CN113094252A (zh) * | 2019-12-23 | 2021-07-09 | 腾讯科技(深圳)有限公司 | 测试用例生成方法、装置、计算机设备及存储介质 |
CN113672494A (zh) * | 2020-05-13 | 2021-11-19 | 美商新思科技有限公司 | 用于软件开发的智能回归测试选择 |
CN113760769A (zh) * | 2021-09-13 | 2021-12-07 | 北京百度网讯科技有限公司 | 测试用例处理方法、装置、电子设备以及存储介质 |
US11422917B2 (en) | 2019-07-26 | 2022-08-23 | Red Hat, Inc. | Deriving software application dependency trees for white-box testing |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10210076B2 (en) | 2016-09-26 | 2019-02-19 | International Business Machines Corporation | White box testing |
CN109240911A (zh) * | 2018-08-13 | 2019-01-18 | 腾讯科技(北京)有限公司 | 精准测试方法、装置和计算机设备 |
CN113127357B (zh) * | 2021-04-21 | 2023-10-03 | 北京百度网讯科技有限公司 | 单元测试方法、装置、设备、存储介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092748A (zh) * | 2011-11-07 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种确定需要进行回归测试的测试用例的方法及系统 |
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN103577311A (zh) * | 2012-07-26 | 2014-02-12 | 深圳市世纪光速信息技术有限公司 | 一种测试用例筛选方法及装置 |
US20150212932A1 (en) * | 2010-10-06 | 2015-07-30 | International Business Machines Corporation | Asynchronous code testing |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8276123B1 (en) * | 2008-07-22 | 2012-09-25 | Juniper Networks, Inc. | Adaptive regression test selection within testing environments |
US10089217B2 (en) * | 2014-09-23 | 2018-10-02 | Red Hat, Inc. | Identification of software test cases |
US10331540B2 (en) * | 2016-03-30 | 2019-06-25 | International Business Machines Corporation | Identifying false positive automated tests |
US10175657B2 (en) * | 2016-06-27 | 2019-01-08 | Webomates LLC | Method and system for determining mapping of test case(s) to code snippets of computer program |
-
2015
- 2015-09-16 CN CN201510590352.1A patent/CN106547678B/zh active Active
-
2016
- 2016-09-13 US US15/263,839 patent/US10671518B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150212932A1 (en) * | 2010-10-06 | 2015-07-30 | International Business Machines Corporation | Asynchronous code testing |
CN103092748A (zh) * | 2011-11-07 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种确定需要进行回归测试的测试用例的方法及系统 |
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN103577311A (zh) * | 2012-07-26 | 2014-02-12 | 深圳市世纪光速信息技术有限公司 | 一种测试用例筛选方法及装置 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733550A (zh) * | 2017-04-13 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种功能模块的自动化回归测试方法、装置 |
CN107193747A (zh) * | 2017-05-27 | 2017-09-22 | 北京金山安全软件有限公司 | 代码测试方法、装置和计算机设备 |
CN109426609B (zh) * | 2017-08-29 | 2021-11-30 | 富士通株式会社 | 测试应用的方法和装置 |
CN109426609A (zh) * | 2017-08-29 | 2019-03-05 | 富士通株式会社 | 测试应用的方法和装置 |
CN107992424A (zh) * | 2017-12-15 | 2018-05-04 | 平安科技(深圳)有限公司 | 自动化测试分析方法、应用服务器及计算机可读存储介质 |
WO2019114209A1 (zh) * | 2017-12-15 | 2019-06-20 | 平安科技(深圳)有限公司 | 自动化测试分析方法、系统、应用服务器及计算机可读存储介质 |
CN110362463A (zh) * | 2018-04-10 | 2019-10-22 | 挖财网络技术有限公司 | 一种自动挑选测试用例进行回归测试的方法和装置 |
CN108763091A (zh) * | 2018-05-31 | 2018-11-06 | 恒生电子股份有限公司 | 用于回归测试的方法、装置及系统 |
CN108763091B (zh) * | 2018-05-31 | 2022-05-27 | 恒生电子股份有限公司 | 用于回归测试的方法、装置及系统 |
CN109634864A (zh) * | 2018-12-12 | 2019-04-16 | 江苏满运软件科技有限公司 | 入口函数自动溯源方法、装置、电子设备、存储介质 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
US11422917B2 (en) | 2019-07-26 | 2022-08-23 | Red Hat, Inc. | Deriving software application dependency trees for white-box testing |
CN110928770A (zh) * | 2019-10-29 | 2020-03-27 | 航天信息股份有限公司 | 软件测试的方法、装置、系统、存储介质和电子设备 |
CN110928770B (zh) * | 2019-10-29 | 2023-11-28 | 航天信息股份有限公司 | 软件测试的方法、装置、系统、存储介质和电子设备 |
CN112835779A (zh) * | 2019-11-25 | 2021-05-25 | 上海哔哩哔哩科技有限公司 | 测试用例确定方法、装置、计算机设备 |
CN113094252B (zh) * | 2019-12-23 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 测试用例生成方法、装置、计算机设备及存储介质 |
CN113094252A (zh) * | 2019-12-23 | 2021-07-09 | 腾讯科技(深圳)有限公司 | 测试用例生成方法、装置、计算机设备及存储介质 |
CN113672494A (zh) * | 2020-05-13 | 2021-11-19 | 美商新思科技有限公司 | 用于软件开发的智能回归测试选择 |
CN111752843A (zh) * | 2020-06-29 | 2020-10-09 | 百度在线网络技术(北京)有限公司 | 用于确定影响面的方法、装置、电子设备及可读存储介质 |
CN111752843B (zh) * | 2020-06-29 | 2024-02-13 | 百度在线网络技术(北京)有限公司 | 用于确定影响面的方法、装置、电子设备及可读存储介质 |
CN113010433A (zh) * | 2021-03-31 | 2021-06-22 | 锐凌无线通讯科技(深圳)有限公司 | 一种持续集成测试方法、系统及相关设备 |
CN113760769A (zh) * | 2021-09-13 | 2021-12-07 | 北京百度网讯科技有限公司 | 测试用例处理方法、装置、电子设备以及存储介质 |
CN113760769B (zh) * | 2021-09-13 | 2023-11-07 | 北京百度网讯科技有限公司 | 测试用例处理方法、装置、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10671518B2 (en) | 2020-06-02 |
CN106547678B (zh) | 2019-03-15 |
US20170075801A1 (en) | 2017-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547678A (zh) | 用于白盒测试的方法和装置 | |
US10318667B2 (en) | Test case generation | |
US9600275B2 (en) | Smart source code review system | |
CN103502952B (zh) | 创建测试用例 | |
CN106257474B (zh) | 空气污染异常定位机制 | |
US8875104B2 (en) | Efficiently developing software using test cases to check the conformity of the software to the requirements | |
US10782936B1 (en) | Programming migration system and methods | |
CN110147317A (zh) | 代码测试方法及装置、电子设备和存储介质 | |
CN105335133A (zh) | 用于生成业务规则模型的方法和装置 | |
CN107025170A (zh) | 用于设计模型的基于覆盖的自动化的测试用例增广的系统和方法 | |
US20170212928A1 (en) | Cognitive decision making based on dynamic model composition | |
CN104731573B (zh) | 用于将新组件合并到分层模型中的方法和系统 | |
US11176019B2 (en) | Automated breakpoint creation | |
Graciano Neto et al. | Stimuli-SoS: a model-based approach to derive stimuli generators for simulations of systems-of-systems software architectures | |
US11055208B1 (en) | Systems and methods for automatically assessing and conforming software development modules to accessibility guidelines in real-time | |
CN110134604A (zh) | 一种无需代码的单元或接口测试方法、装置和计算机设备 | |
CN110765596A (zh) | 审核过程仿真模型建模方法、装置及电子设备 | |
CN104572439B (zh) | 用于生成关于潜在的回归的警告方法和系统 | |
CN104253790A (zh) | 规范化页面流的方法和设备 | |
US9251489B2 (en) | Node-pair process scope definition adaptation | |
CN105493033A (zh) | 声明性配置元素 | |
CN115294283B (zh) | 一种数字孪生工厂构建方法、装置、设备和存储介质 | |
US20170090919A1 (en) | Scalable code division and workflow chart | |
CN115909386A (zh) | 一种管道仪表流程图的补全和纠错方法、设备及存储介质 | |
CN110781583B (zh) | 审核模式优化方法、装置及电子设备 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200420 Address after: Massachusetts, USA Patentee after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Patentee before: EMC Corp. |