系统软件功能测试方法、装置、设备及存储介质与流程

文档序号:20917599发布日期:2020-05-29 13:44阅读:255来源:国知局
系统软件功能测试方法、装置、设备及存储介质与流程

本申请涉及软件开发技术领域,特别涉及一种系统软件功能测试方法、装置、设备及一种可读存储介质。



背景技术:

在当前的软件开发流程中,为保证软件交付质量,通常会在新的代码开发完后将全部软件功能覆盖测试一遍,但是由于软件的代码规模普遍都非常庞大,针对每个软件的每次升级都进行功能覆盖测试对于测试周期和人力需求会很高,不仅会耗费大量人力资源,且耗费时间长,不能满足版本快速迭代的要求。

因此,如何兼顾软件质量和版本快速迭代的要求,是本领域技术人员急需解决的问题。



技术实现要素:

本申请的目的是提供一种系统软件功能测试方法,该方法可以针对变更代码进行精准覆盖测试,显著提升代码测试效率的同时保证软件开发质量;本申请的另一目的是提供一种系统软件功能测试装置、设备及一种可读存储介质。

为解决上述技术问题,本申请提供一种系统软件功能测试方法,包括:

统计系统测试中调用的各函数对应的测试用例,作为函数映射数据;

当系统软件代码更新时,获取当前更新中变更代码所对应的函数,作为变更函数;

从所述函数映射数据中确定所述变更函数对应的测试用例,作为目标测试用例;

调用所述目标测试用例进行系统软件功能测试。

可选地,所述统计系统测试中调用的各函数对应的测试用例,包括:

统计各api接口在系统测试时调用的函数,生成函数api映射数据;

统计各测试用例执行时调用的api接口,生成测试用例api映射数据;

根据所述函数api映射数据以及所述测试用例api映射数据进行函数与测试用例间的遍历匹配,得到各函数对应的测试用例。

可选地,所述统计各api接口在系统测试时调用的函数,包括:

通过解析lib库获取各函数在lib库中的入口地址,得到函数地址映射数据;

在所述系统测试中追踪所述api接口中函数跳转的入口地址,作为目标入口地址;

根据所述函数地址映射数据匹配所述目标入口地址对应的函数,作为目标函数;

统计各所述api接口对应的目标函数,生成所述函数api映射数据。

可选地,所述统计各测试用例执行时调用的api接口,包括:

为各api接口的函数总入口设置区分性调用标识;

执行各所述测试用例,并根据各api接口对应的所述区分性调用标识统计各所述测试用例调用的api接口,作为目标api接口;

统计各所述测试用例对应的所述目标api接口,生成所述测试用例api映射数据。

可选地,所述当系统软件代码更新时,获取当前更新中变更代码所对应的函数,作为变更函数,包括:

通过比对更新前和更新后的代码库确定变化代码行;

追溯所述变化代码行所属的函数,作为所述变更函数。

本申请公开一种系统软件功能测试装置,包括:

数据统计单元,用于统计系统测试中调用的各函数对应的测试用例,作为函数映射数据;

函数获取单元,用于当系统软件代码更新时,获取当前更新中变更代码所对应的函数,作为变更函数;

用例确定单元,用于从所述函数映射数据中确定所述变更函数对应的测试用例,作为目标测试用例;

用例调用单元,用于调用所述目标测试用例进行系统软件功能测试。

可选地,所述数据统计单元包括:

函数映射子单元,用于统计各api接口在系统测试时调用的函数,生成函数api映射数据;

用例映射子单元,用于统计各测试用例执行时调用的api接口,生成测试用例api映射数据;

遍历匹配子单元,用于根据所述函数api映射数据以及所述测试用例api映射数据进行函数与测试用例间的遍历匹配,得到各函数对应的测试用例。

可选地,所述函数获取单元包括:

代码行确定子单元,用于通过比对更新前和更新后的代码库确定变化代码行;

函数追溯单元,用于追溯所述变化代码行所属的函数,作为所述变更函数。

本申请公开一种系统软件功能测试设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现所述的系统软件功能测试方法的步骤。

本申请公开一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述系统软件功能测试方法的步骤。

本申请所提供的系统软件功能测试方法,通过预先统计系统测试中调用的各函数对应的测试用例,在系统版本更新后根据变更函数查找并筛选出相关的测试用例,执行这些测试用例就可以准确的覆盖到发生变更的代码,有效的控制了测试范围的同时保证了代码覆盖和测试质量,减少了不相关的测试用例执行过程对于人力物力以及时间资源的占用,对代码的持续集成测试效率有很大提升,可保障版本的快速迭代。

本申请还提供了一种系统软件功能测试装置、设备及一种可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种系统软件功能测试方法的流程图;

图2为本申请实施例提供的一种系统软件功能测试装置的结构框图;

图3为本申请实施例提供的一种系统软件功能测试设备的结构示意图。

具体实施方式

本申请的核心是提供一种系统软件功能测试方法,该方法可以针对变更代码进行精准覆盖测试,显著提升代码测试效率的同时保证软件开发质量;本申请的另一核心是提供一种系统软件功能测试装置、设备及一种可读存储介质。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本实施例提供的系统软件功能测试方法的流程图,该方法主要包括:

步骤s110、统计系统测试中调用的各函数对应的测试用例,作为函数映射数据;

软件功能的实现通过代码中函数调用实现,对系统软件功能的测试就相当于测试代码中的函数是否正常运行。本申请中通过统计系统软件代码中各函数对应的测试用例,可以实现指定函数到测试用例的精准匹配,避免与指定函数无关的测试用例的执行对于人力物力以及时间资源的占用,同时可以保证指定函数功能的正常测试,保障了软件开发质量。

本实施例中对于系统软件功能测试过程中各函数对应测试用例的统计实现过程不做限定,比如可以人工统计,也可以根据具体调用中的关系自动统计,具体可以根据实际使用需要进行相应的设定。

步骤s120、当系统软件代码更新时,获取当前更新中变更代码所对应的函数,作为变更函数;

当系统软件代码更新时,即软件版本迭代时,传统方法下会执行所有测试用例,本申请中只针对代码更新部件进行测试,减少了大量测试工作量,尤其是在只针对少量系统功能进行频繁更新的应用场景下,可以显著提升测试效率,有效保障版本的快速迭代。

具体地,只针对代码更新部件进行测试的实现,需要首先确定当前系统软件版本迭代中更新的代码部分,再确定更新的代码部分对应的测试用例。本申请中通过确定变更代码中所对应的函数,以函数作为测试用例的选择对象,可以精准定位各更新部分,避免测试用例遗漏的情况。

其中,确定当前更新中变更代码所对应的函数的具体实现方式本实施例中不做限定,可以参照现有实现方式。

可选地,当系统软件代码更新时,获取当前更新中变更代码所对应的函数,作为变更函数的实现可按照以下步骤进行:

(1)通过比对更新前和更新后的代码库确定变化代码行;

(2)追溯变化代码行所属的函数,作为变更函数。

通过代码管理工具(比如宏工具)比对更新前和更新后的代码库,通过对比代码文本找出有变化的代码行,得出本次代码更新后,再追溯出此代码行所属的函数,输出本次代码更新所有涉及到的函数的列表。上述实现方式可以实现精准的函数定位,本实施例中仅以上述实现方式为例进行介绍,其他实现方式均可参照上述实现方式,在此不再赘述。

步骤s130、从函数映射数据中确定变更函数对应的测试用例,作为目标测试用例;

函数映射数据中包含各函数对应的测试用例,确定了当前版本更迭中的变更函数后,从函数映射数据中确定当前变更函数对应的测试用例,均可实现对于当前代码变更的针对化精准测试用例的选择,避免无关测试用例执行对于人力物力时间资源的浪费。

步骤s140、调用目标测试用例进行系统软件功能测试。

调用目标测试用例进行系统软件功能测试的实现过程可以参照现有调用测试用例进行软件功能测试的过程,在此不再赘述。

基于上述介绍,本实施例提供的系统软件功能测试方法,通过预先统计系统测试中调用的各函数对应的测试用例,在系统版本更新后根据变更函数查找并筛选出相关的测试用例,执行这些测试用例就可以准确的覆盖到发生变更的代码,有效的控制了测试范围的同时保证了代码覆盖和测试质量,减少了不相关的测试用例执行过程对于人力物力以及时间资源的占用,对代码的持续集成测试效率有很大提升,可保障版本的快速迭代。

上述实施例中对于统计系统测试中调用的各函数对应的测试用例的具体实现过程,本实施例中主要针对该实现过程进行详细介绍。

可选地,一种统计系统测试中调用的各函数对应的测试用例的实现过程可以包括以下步骤:

(1)统计各api接口在系统测试时调用的函数,生成函数api映射数据;

(2)统计各测试用例执行时调用的api接口,生成测试用例api映射数据;

(3)根据函数api映射数据以及测试用例api映射数据进行函数与测试用例间的遍历匹配,得到各函数对应的测试用例。

经过分析发现,目前函数调用以及测试用例的调用均通过api接口实现,每个测试用例调用时需要调用对应的api接口,在实现相应的软件功能时需要通过api接口调用相应的功能函数,本实施例中以api接口作为数据统计的中间量,获取api接口和函数的调用关系、获取测试用例和api接口的调用关系,通过对比分析步骤(1)得出的“api接口与函数的调用关系”,和步骤(2)得出的“测试用例与api接口的对应列表”,进行遍历匹配,可以得出所有函数的“函数-api接口-测试用例编号”的映射关系,得出测试用例和函数的调用关系,可以大大简化针对软件功能实现函数以及测试用例功能的分析,实现数据的快速精准统计。

其中步骤(1)中统计各api接口在系统测试时调用的函数的实现不做限定,可选地,一种实现方式如下:

(1.1)通过解析lib库获取各函数在lib库中的入口地址,得到函数地址映射数据;

(1.2)在系统测试中追踪api接口中函数跳转的入口地址,作为目标入口地址;

(1.3)根据函数地址映射数据匹配目标入口地址对应的函数,作为目标函数;

(1.4)统计各api接口对应的目标函数,生成函数api映射数据。

通过代码打桩后将版本编译,进行系统白盒单元测试,解析lib库,得出各个函数在lib库中的入口地址,同时也能获取到各函数名。执行测试脚本进行系统白盒测试,脚本中会调用所有的api接口,并追踪api接口调用到的函数,通过函数跳转的入口地址查找出被调用函数的函数名,将函数名按照被调用的层级关系记录到文件中,解析这个文件可以获取到每个api接口所调用的所有函数及子函数的列表。

其中步骤(2)中统计统计各测试用例执行时调用的api接口的实现不做限定,可选地,一种实现方式如下:

(1)为各api接口的函数总入口设置区分性调用标识;

(2)执行各测试用例,并根据各api接口对应的区分性调用标识统计各测试用例调用的api接口,作为目标api接口;

(3)统计各测试用例对应的目标api接口,生成测试用例api映射数据。

在测试用例调用api接口的函数总入口处增加标记,通过执行全量的测试用例并统计调用关系,可以获取到每条测试用例所调用的全部api接口的列表。

需要说明的是,本实施例中仅以上述实现方式为例进行介绍,其他可以实现上述功能的实现方式均算作本申请的保护范围。

请参考图2,图2为本实施例提供的系统软件功能测试装置的结构框图;4主要包括:数据统计单元210、函数获取单元220、用例确定单元230以及用例调用单元240。本实施例提供的系统软件功能测试装置可与上述系统软件功能测试方法相互对照。

其中,数据统计单元210主要用于统计系统测试中调用的各函数对应的测试用例,作为函数映射数据;

函数获取单元220主要用于当系统软件代码更新时,获取当前更新中变更代码所对应的函数,作为变更函数;

用例确定单元230主要用于从函数映射数据中确定变更函数对应的测试用例,作为目标测试用例;

用例调用单元240主要用于调用目标测试用例进行系统软件功能测试。

可选地,数据统计单元包括:

函数映射子单元,用于统计各api接口在系统测试时调用的函数,生成函数api映射数据;

用例映射子单元,用于统计各测试用例执行时调用的api接口,生成测试用例api映射数据;

遍历匹配子单元,用于根据函数api映射数据以及测试用例api映射数据进行函数与测试用例间的遍历匹配,得到各函数对应的测试用例。

可选地,函数获取单元包括:

代码行确定子单元,用于通过比对更新前和更新后的代码库确定变化代码行;

函数追溯单元,用于追溯变化代码行所属的函数,作为变更函数。

本实施例提供一种系统软件功能测试设备,主要包括:存储器以及处理器。

其中,存储器用于存储程序;

处理器用于执行程序时实现如上述实施例介绍的系统软件功能测试方法的步骤,具体可参照上述系统软件功能测试方法的介绍。

请参考图3,为本实施例提供的系统软件功能测试设备的结构示意图,该系统软件功能测试设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在系统软件功能测试设备301上执行存储介质330中的一系列指令操作。

系统软件功能测试设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上面图1所描述的系统软件功能测试方法中的步骤可以由本实施例介绍的系统软件功能测试设备的结构实现。

本实施例公开一种可读存储介质,其上存储有程序,程序被处理器执行时实现如上述实施例介绍的系统软件功能测试方法的步骤,具体可参照上述实施例中对系统软件功能测试方法的介绍。

该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的系统软件功能测试方法、装置、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1