本公开的实施例提供了一种用于白盒测试的方法和装置。该方法包括:确定在目标版本的代码中发生改变的代码行;确定该代码行所属的函数;以及基于从函数到测试用例的第一映射,确定与该代码行所属的函数对应的测试用例的集合。与现有技术相比,本公开的实施例能够基于函数调用关系来选择有限的测试用例以覆盖代码改变所影响的软件特性,从而提高自动测试的效率。
【技术实现步骤摘要】
本公开的实施例总体涉及软件测试,更具体地,涉及用于白盒测试的方法和装置。
技术介绍
在典型的软件持续集成(CI)环境中,软件开发和验证被链接在无缝集成的工具链中。代码改变(例如,提交,拉取请求(pullrequest)或其他代码提交行为)将触发对所提交代码的自动编译,以及利用测试用例列表对代码进行的自动测试。因此,密集的代码提交将导致密集的回归测试任务。为了选择用于回归测试的测试用例,现有技术中的方法通常包括:选择冒烟测试套件(smoketestsuite)、选择完整的测试套件或者人工选择测试用例。冒烟测试是指对软件的基本功能进行测试,以确保软件的基本功能能够正常工作。因此冒烟测试套件仅包括有关软件基本特性的测试用例,其可能遗漏有关其他软件特性的测试用例。完整的测试套件包括有关软件全部功能的测试用例,然而,针对较小规模的代码改变而言,其可能导致不必要的时间成本。此外,人工选择测试用例依赖于工程师的经验,其可能不能保证所选择的测试用例的覆盖程度。此外,在关于白盒测试的现有方法中,存在例如路径覆盖、条件覆盖和决策覆盖等技术。然而,这些技术都是针对具体的代码行的,因此可能不能够针对代码改变所影响的软件特性提供精确的测试用例集合。因此,本领域中需要一种更为有效的测试方法以解决上述问题。
技术实现思路
本公开的实施例旨在提供一种用于白盒测试的方法和装置,以解决上述问题。根据本公开的一个方面,提供了一种用于白盒测试的方法,包括:确定在目标版本的代码中发生改变的代码行;确定所述代码行所属的函数;以及基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。在一些实施例中,确定在目标版本的代码中发生改变的代码行包括:将目标版本的代码与原始版本的代码进行比较;以及基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。在一些实施例中,确定在所述目标版本的代码中发生改变的所述代码行包括:确定从所述原始版本的代码中删除的代码行;确定相对于所述原始版本的代码修改的代码行;以及确定相对于所述原始版本的代码新增的代码行。在一些实施例中,所述方法还包括:建立从函数到测试用例的所述第一映射。在一些实施例中,建立从函数到测试用例的所述第一映射包括:建立从测试用例到函数的第二映射;以及基于所述第二映射,生成所述第一映射。在一些实施例中,建立从测试用例到函数的第二映射包括:确定代码中的函数调用关系;基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及基于每个测试用例所对应的函数集合,生成所述第二映射。在一些实施例中,确定代码中的函数调用关系包括:利用状态机来对所述代码中的语句进行分析;基于所述分析的结果,确定所述代码中包括的函数的列表;以及基于所述函数列表,确定所述代码中的所述函数调用关系。在一些实施例中,建立从函数到测试用例的所述第一映射还包括:针对所述原始版本的代码,建立所述第一映射;以及针对所述目标版本的代码,更新所述第一映射。根据本公开的另一方面,提供了一种用于白盒测试的装置,包括:代码改变确定模块,被配置为确定在目标版本的代码中发生改变的代码行;函数确定模块,被配置为确定所述代码行所属的函数;以及测试用例确定模块,被配置为基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。在一些实施例中,所述代码改变确定模块被配置为:将所述目标版本的代码与原始版本的代码进行比较;以及基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。在一些实施例中,所述代码改变确定模块被配置为:确定从所述原始版本的代码中删除的代码行;确定相对于所述原始版本的代码修改的代码行;以及确定相对于所述原始版本的代码新增的代码行。在一些实施例中,所述装置还包括:第一映射建立模块,被配置为建立从函数到测试用例的所述第一映射。在一些实施例中,所述第一映射建立模块被配置为:建立从测试用例到函数的第二映射;以及基于所述第二映射,生成所述第一映射。在一些实施例中,建立从测试用例到函数的第二映射包括:确定代码中的函数调用关系;基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及基于每个测试用例所对应的函数集合,生成所述第二映射。在一些实施例中,确定代码中的函数调用关系包括:利用状态机来对所述代码中的语句进行分析;基于所述分析的结果,确定所述代码中包括的函数的列表;以及基于所述函数列表,确定所述代码中的所述函数调用关系。在一些实施例中,所述第一映射建立模块还被配置为:针对所述原始版本的代码,建立所述第一映射;以及针对所述目标版本的代码,更新所述第一映射。根据本公开的又一方面,提供了一种用于白盒测试的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使得机器执行所述方法的任意步骤。与现有技术相比,本公开的实施例能够基于函数调用关系来选择有限的测试用例以覆盖代码改变所影响的软件特性,从而提高自动测试的效率。附图说明通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出了本公开的若干实施例,其中:图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和本文档来自技高网...
【技术保护点】
一种用于白盒测试的方法,包括:确定在目标版本的代码中发生改变的代码行;确定所述代码行所属的函数;以及基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。
【技术特征摘要】
1.一种用于白盒测试的方法,包括:确定在目标版本的代码中发生改变的代码行;确定所述代码行所属的函数;以及基于从函数到测试用例的第一映射,确定与所述代码行所属的所述函数对应的测试用例的集合。2.根据权利要求1所述的方法,其中确定在目标版本的代码中发生改变的代码行包括:将所述目标版本的代码与原始版本的代码进行比较;以及基于所述比较的结果,确定在所述目标版本的代码中发生改变的所述代码行。3.根据权利要求2所述的方法,其中确定在所述目标版本的代码中发生改变的所述代码行包括:确定从所述原始版本的代码中删除的代码行;确定相对于所述原始版本的代码修改的代码行;以及确定相对于所述原始版本的代码新增的代码行。4.根据权利要求1所述的方法,还包括:建立从函数到测试用例的所述第一映射。5.根据权利要求4所述的方法,其中建立从函数到测试用例的所述第一映射包括:建立从测试用例到函数的第二映射;以及基于所述第二映射,生成所述第一映射。6.根据权利要求5所述的方法,其中建立从测试用例到函数的第二映射包括:确定代码中的函数调用关系;基于所述函数调用关系,针对每个测试用例确定与所述测试用例对应的函数集合;以及基于每个测试用例所对应的函数集合,生成所述第二映射。7.根据权利要求6所述的方法,其中确定代码中的函数调用关系包括:利用状态机来对所述代码中的语句进行分析;基于所述分析的结果,确定所述代码中包括的函数的列表;以及基于所述函数列表,确定所述代码中的所述函数调用关系。8.根据权利要求4所述的方法,其中建立从函数到测试用例的所述第一映射还包括:针对所述原始版本的代码,建立所述第一映射;以及针对所述目标版本的代码,更新所述第一映射。9.一种用于白盒测试的装置,包括:代码改变确定模块,被配置为确定在目标版本的代码中发生改变的代码行;函数确定模块,被配置为确定所述代码行所属...
【专利技术属性】
技术研发人员:顾惟祎,张扬,
申请(专利权)人:伊姆西公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。