测试案例推荐方法、电子装置及可读存储介质与流程

文档序号:15981370发布日期:2018-11-17 00:22阅读:143来源:国知局

本发明涉及计算机技术领域,尤其涉及一种测试案例推荐方法、电子装置及可读存储介质。

背景技术

现有的软件测试中,衡量测试质量的一个重要指标是代码覆盖率,即源代码被测试的比例。然而,代码覆盖率数据只能代表测试过哪些代码,不能代表是否利用合适的测试案例来测试好这些代码。例如,在利用测试案例对待测系统进行测试时,有时需针对待测系统的动态链路进行测试。该动态链路指的是在待测系统向web服务器发起http请求的动态过程中所经过的方法链等。现有技术中无法根据该动态过程中涉及的方法链、http请求有针对性地向测试人员推荐相应的测试案例,现有技术中一般只能执行所有的测试案例或由经验丰富的测试人员人工挑选出部分测试案例来进行测试,而无法自动推荐出精准合适的测试案例来执行测试,导致测试效率低下。



技术实现要素:

本发明的目的在于提供一种测试案例推荐方法、电子装置及可读存储介质,旨在提高测试效率。

为实现上述目的,本发明提供一种电子装置,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的测试案例推荐系统,所述测试案例推荐系统被所述处理器执行时实现如下步骤:

在预设的测试案例对待测试软件系统的动态链路执行测试过程中,按预设规则建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系;

当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例;

推荐确定出的测试案例为对所述待测试软件系统执行测试的测试案例。

优选地,所述在预设的测试案例对待测试软件系统的动态链路执行测试过程中,按预设规则建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系的步骤包括:

在预设的测试案例对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求及该http请求所经过的方法链;

将进入所述待测试软件系统的http请求与该http请求经过的方法链进行关联,建立http请求与方法链之间的映射关系;并将执行的测试案例与进入所述待测试软件系统的http请求进行关联,建立测试案例与http请求之间的映射关系。

优选地,所述在预设的测试案例对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求及该http请求所经过的方法链的步骤包括:

配置java字节码工具作为java代理,当预设的web服务器启动,预设的测试案例对待测试软件系统执行测试过程中,利用所述java代理对所述待测试软件系统的过滤器进行增强,以捕获进入所述待测试软件系统的http请求;并利用所述java代理记录进入所述待测试软件系统的http请求所经过的方法链。

优选地,所述当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链包括:

获取待测试软件系统对应的预设版本管理工具所记录的提交代码,分析待测试软件系统的不同版本提交代码之间的所有变更代码;所述预设版本管理工具包括开放源代码的版本控制系统svn、cvs和分布式版本控制系统git;

确定出所有变更代码相关联的方法链,作为受影响的方法链。

此外,为实现上述目的,本发明还提供一种测试案例推荐方法,所述测试案例推荐方法包括:

在预设的测试案例对待测试软件系统的动态链路执行测试过程中,按预设规则建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系;

当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例;

推荐确定出的测试案例为对所述待测试软件系统执行测试的测试案例。

优选地,所述在预设的测试案例对待测试软件系统的动态链路执行测试过程中,按预设规则建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系的步骤包括:

在预设的测试案例对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求及该http请求所经过的方法链;

将进入所述待测试软件系统的http请求与该http请求经过的方法链进行关联,建立http请求与方法链之间的映射关系;并将执行的测试案例与进入所述待测试软件系统的http请求进行关联,建立测试案例与http请求之间的映射关系。

优选地,所述在预设的测试案例对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求及该http请求所经过的方法链的步骤包括:

配置java字节码工具作为java代理,当预设的web服务器启动,预设的测试案例对待测试软件系统执行测试过程中,利用所述java代理对所述待测试软件系统的过滤器进行增强,以捕获进入所述待测试软件系统的http请求;并利用所述java代理记录进入所述待测试软件系统的http请求所经过的方法链。

优选地,所述当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链包括:

获取待测试软件系统对应的预设版本管理工具所记录的提交代码,分析待测试软件系统的不同版本提交代码之间的所有变更代码;所述预设版本管理工具包括开放源代码的版本控制系统svn、cvs和分布式版本控制系统git;

确定出所有变更代码相关联的方法链,作为受影响的方法链。

优选地,所述预设的测试案例包括接口测试案例和/或web测试案例。

进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有测试案例推荐系统,所述测试案例推荐系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述的测试案例推荐方法的步骤。

本发明提出的测试案例推荐方法、系统及可读存储介质,当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据预先建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例来进行推荐。由于能预先在测试案例对待测试软件系统的动态链路执行测试过程中,建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系,在待测软件系统中出现代码变更时,可根据该代码变更对应的受影响的方法链与http请求、测试案例三者之间的关联关系分析,并根据受影响的方法链、http请求和测试案例三者之间的关联关系来进行测试案例的推荐,能针对变更代码进行精准的测试案例推荐,最大化利用测试执行资源,提高测试效率。

附图说明

图1为本发明测试案例推荐系统10较佳实施例的运行环境示意图;

图2为本发明测试案例推荐方法一实施例的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

本发明提供一种测试案例推荐系统。请参阅图1,是本发明测试案例推荐系统10较佳实施例的运行环境示意图。

在本实施例中,所述的测试案例推荐系统10安装并运行于电子装置1中。该电子装置1可包括,但不仅限于,存储器11、处理器12及显示器13。图1仅示出了具有组件11-13的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器11为至少一种类型的可读计算机存储介质,所述存储器11在一些实施例中可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。所述存储器11在另一些实施例中也可以是所述电子装置1的外部存储设备,例如所述电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括外部存储设备。所述存储器11用于存储安装于所述电子装置1的应用软件及各类数据,例如所述测试案例推荐系统10的程序代码等。所述存储器11还可以用于暂时地存储已经输出或者将要输出的数据。

所述处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或处理数据,例如执行所述测试案例推荐系统10等。

所述显示器13在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。所述显示器13用于显示在所述电子装置1中处理的信息以及用于显示可视化的用户界面,例如标记出待测试软件系统的变更代码、最终推荐执行的测试案例等。所述电子装置1的部件11-13通过系统总线相互通信。

测试案例推荐系统10包括至少一个存储在所述存储器11中的计算机可读指令,该至少一个计算机可读指令可被所述处理器12执行,以实现本申请各实施例。

其中,上述测试案例推荐系统10被所述处理器12执行时实现如下步骤:

步骤s1,在预设的测试案例对待测试软件系统的动态链路执行测试过程中,按预设规则建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系。

本实施例中,在预设的测试案例对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求及该http请求所经过的方法链;将进入所述待测试软件系统的http请求与该http请求经过的方法链进行关联,建立http请求与方法链之间的映射关系;并将执行的测试案例与进入所述待测试软件系统的http请求进行关联,建立测试案例与http请求之间的映射关系。例如,测试案例a对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求b及该http请求b所经过的方法链c;将http请求b与方法链c进行关联,建立http请求与方法链之间的映射关系;并将测试案例a与http请求b进行关联,建立测试案例与http请求之间的映射关系,最终即可建立测试案例a与http请求b、方法链c这三者之间的映射关系。其中,本实施例中预设的测试案例包括但不限于接口测试案例、web(网页)测试案例等等。预设的测试案例既可以是有针对性自主编写的测试案例,也可以是调用已有的测试案例,如针对实现不同功能的代码所设计的语句覆盖测试案例、判定覆盖测试案例、条件覆盖测试案例、判定条件覆盖测试案例、条件组合覆盖测试案例、路径覆盖测试案例等等,在此不做限定。

步骤s2,当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例。

步骤s3,推荐确定出的测试案例为对所述待测试软件系统执行测试的测试案例。

本实施例中,当待测软件系统出现代码变更时,需利用测试案例来执行测试。首先确定出待测软件系统中的变更代码,如获取待测试软件系统对应的预设版本管理工具(例如开放源代码的版本控制系统svn、cvs或分布式版本控制系统git等)所记录的提交代码,分析待测试软件系统的不同版本提交代码之间的所有变更代码;然后,确定出所有变更代码相关联的方法链,即作为受影响的方法链。

例如,当代码提交到svn时,svn会进行记录,分析svn上两个软件版本间的所有代码变更记录,如可对两个软件版本的代码进行比对,两个软件版本间不同的代码部分作为变更代码。然后,通过变更代码分析出受影响的方法(链),例如,在一种实施方式中,通过对过往对待测软件系统的代码覆盖测试数据进行统计,可确定出与各个部分功能代码相关联的方法链,例如,用于实现“注册”功能的代码所对应的方法链为“a”,用于实现“登录”功能的代码所对应的方法链为“b”,等。针对两个软件版本间的变更代码确定出受影响的方法链包括:(1)、当该变更代码为对两个软件版本间同一种功能代码的更改(修改或更新)时,例如,对前一个软件版本中的“注册”功能代码部分进行更改,形成后一个软件版本,则确定出由变更代码受影响的方法链为“a”。(2)、当该变更代码为对两个软件版本间不同功能代码的增加或删减时,例如,在前一个软件版本中增加或删减“登录”功能代码,形成后一个软件版本,则确定出由变更代码受影响的方法链为“b”。综上,即可确定出所述变更代码关联的方法链,作为受影响的方法链。

通过变更代码分析出受影响的方法链后,可根据在各个测试案例执行的过程中动态确定出的测试案例、方法链与http请求之间的关联映射关系,推荐合适的测试案例。具体地,可先根据确定好的方法链与http请求之间的映射关系,确定出受影响的方法链对应的http请求;再根据确定好的http请求与测试案例之间的映射关系,确定出所述http请求对应的测试案例,将确定出的测试案例作为推荐的待执行的测试案例。

与现有技术相比,本实施例中当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据预先建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例来进行推荐。由于能预先在测试案例对待测试软件系统的动态链路执行测试过程中,建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系,在待测软件系统中出现代码变更时,可根据该代码变更对应的受影响的方法链与http请求、测试案例三者之间的关联关系分析,并根据受影响的方法链、http请求和测试案例三者之间的关联关系来进行测试案例的推荐,能针对变更代码进行精准的测试案例推荐,最大化利用测试执行资源,提高测试效率。

在一可选的实施例中,在上述实施例的基础上,所述测试案例推荐系统10被所述处理器12执行上述步骤s1时,包括以下步骤:

配置java字节码工具作为java代理,当预设的web服务器启动,预设的测试案例对待测试软件系统执行测试过程中,利用所述java代理对所述待测试软件系统的过滤器进行增强,以捕获进入所述待测试软件系统的http请求;并利用所述java代理记录进入所述待测试软件系统的http请求所经过的方法链。

本实施例中,首先在各个测试案例执行的过程中动态地确定出测试案例、方法链与http请求之间的关联映射关系。具体地,可配置java字节码工具包作为javassist即java代理,javassist是一个开源的java字节码操作工具,主要用于对已经编译好的class文件进行修改和处理。在本实施例中,先配置javassist工具包作为java代理,当web(网站)服务器启动时,利用java代理在加载待测试软件系统的class文件之前或运行期间来进行拦截。例如,对字节码做修改,以对待测试软件系统代码中的方法(链)进行增强,以便记录方法(链)的相关信息(如名称、编号等);并对待测试软件系统的过滤器进行增强,以便捕获http请求相关信息。

例如,在一个测试案例的执行过程中,可记录进入待测试软件系统的http请求,并将进入待测试软件系统的http请求所经过的方法(链)保存起来,使http请求和方法链进行关联,即可建立方法链与http请求之间的映射关系。并且,将执行的测试案例与在该测试案例执行过程中进入待测试软件系统的http请求进行关联,在依次执行完若干测试案例后,即可建立http请求与测试案例之间的映射关系。

如图2所示,图2为本发明测试案例推荐方法一实施例的流程示意图,该测试案例推荐方法包括以下步骤:

步骤s10,在预设的测试案例对待测试软件系统的动态链路执行测试过程中,按预设规则建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系。

本实施例中,在预设的测试案例对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求及该http请求所经过的方法链;将进入所述待测试软件系统的http请求与该http请求经过的方法链进行关联,建立http请求与方法链之间的映射关系;并将执行的测试案例与进入所述待测试软件系统的http请求进行关联,建立测试案例与http请求之间的映射关系。例如,测试案例a对待测试软件系统执行测试过程中,记录进入所述待测试软件系统的http请求b及该http请求b所经过的方法链c;将http请求b与方法链c进行关联,建立http请求与方法链之间的映射关系;并将测试案例a与http请求b进行关联,建立测试案例与http请求之间的映射关系,最终即可建立测试案例a与http请求b、方法链c这三者之间的映射关系。其中,本实施例中预设的测试案例包括但不限于接口测试案例、web(网页)测试案例等等。预设的测试案例既可以是有针对性自主编写的测试案例,也可以是调用已有的测试案例,如针对实现不同功能的代码所设计的语句覆盖测试案例、判定覆盖测试案例、条件覆盖测试案例、判定条件覆盖测试案例、条件组合覆盖测试案例、路径覆盖测试案例等等,在此不做限定。

步骤s20,当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例。

步骤s30,推荐确定出的测试案例为对所述待测试软件系统执行测试的测试案例。

本实施例中,当待测软件系统出现代码变更时,需利用测试案例来执行测试。首先确定出待测软件系统中的变更代码,如获取待测试软件系统对应的预设版本管理工具(例如开放源代码的版本控制系统svn、cvs或分布式版本控制系统git等)所记录的提交代码,分析待测试软件系统的不同版本提交代码之间的所有变更代码;然后,确定出所有变更代码相关联的方法链,即作为受影响的方法链。

例如,当代码提交到svn时,svn会进行记录,分析svn上两个软件版本间的所有代码变更记录,如可对两个软件版本的代码进行比对,两个软件版本间不同的代码部分作为变更代码。然后,通过变更代码分析出受影响的方法(链),例如,在一种实施方式中,通过对过往对待测软件系统的代码覆盖测试数据进行统计,可确定出与各个部分功能代码相关联的方法链,例如,用于实现“注册”功能的代码所对应的方法链为“a”,用于实现“登录”功能的代码所对应的方法链为“b”,等。针对两个软件版本间的变更代码确定出受影响的方法链包括:(1)、当该变更代码为对两个软件版本间同一种功能代码的更改(修改或更新)时,例如,对前一个软件版本中的“注册”功能代码部分进行更改,形成后一个软件版本,则确定出由变更代码受影响的方法链为“a”。(2)、当该变更代码为对两个软件版本间不同功能代码的增加或删减时,例如,在前一个软件版本中增加或删减“登录”功能代码,形成后一个软件版本,则确定出由变更代码受影响的方法链为“b”。综上,即可确定出所述变更代码关联的方法链,作为受影响的方法链。

通过变更代码分析出受影响的方法链后,可根据在各个测试案例执行的过程中动态确定出的测试案例、方法链与http请求之间的关联映射关系,推荐合适的测试案例。具体地,可先根据确定好的方法链与http请求之间的映射关系,确定出受影响的方法链对应的http请求;再根据确定好的http请求与测试案例之间的映射关系,确定出所述http请求对应的测试案例,将确定出的测试案例作为推荐的待执行的测试案例。

与现有技术相比,本实施例中当所述待测软件系统中出现代码变更时,通过变更代码分析出受影响的方法链;根据预先建立的http请求与方法链的映射关系,确定出受影响的方法链对应的http请求;根据建立的测试案例与http请求之间的映射关系,确定出受影响的方法链对应的http请求所映射的测试案例来进行推荐。由于能预先在测试案例对待测试软件系统的动态链路执行测试过程中,建立每一测试案例与http请求之间的映射关系,以及http请求与所述待测试软件系统中方法链的映射关系,在待测软件系统中出现代码变更时,可根据该代码变更对应的受影响的方法链与http请求、测试案例三者之间的关联关系分析,并根据受影响的方法链、http请求和测试案例三者之间的关联关系来进行测试案例的推荐,能针对变更代码进行精准的测试案例推荐,最大化利用测试执行资源,提高测试效率。

在一可选的实施例中,在上述实施例的基础上,所述步骤s10包括:

配置java字节码工具作为java代理,当预设的web服务器启动,预设的测试案例对待测试软件系统执行测试过程中,利用所述java代理对所述待测试软件系统的过滤器进行增强,以捕获进入所述待测试软件系统的http请求;并利用所述java代理记录进入所述待测试软件系统的http请求所经过的方法链。

本实施例中,首先在各个测试案例执行的过程中动态地确定出测试案例、方法链与http请求之间的关联映射关系。具体地,可配置java字节码工具包作为javassist即java代理,javassist是一个开源的java字节码操作工具,主要用于对已经编译好的class文件进行修改和处理。在本实施例中,先配置javassist工具包作为java代理,当web(网站)服务器启动时,利用java代理在加载待测试软件系统的class文件之前或运行期间来进行拦截。例如,对字节码做修改,以对待测试软件系统代码中的方法(链)进行增强,以便记录方法(链)的相关信息(如名称、编号等);并对待测试软件系统的过滤器进行增强,以便捕获http请求相关信息。

例如,在一个测试案例的执行过程中,可记录进入待测试软件系统的http请求,并将进入待测试软件系统的http请求所经过的方法(链)保存起来,使http请求和方法链进行关联,即可建立方法链与http请求之间的映射关系。并且,将执行的测试案例与在该测试案例执行过程中进入待测试软件系统的http请求进行关联,在依次执行完若干测试案例后,即可建立http请求与测试案例之间的映射关系。

此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有测试案例推荐系统,所述测试案例推荐系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述实施例中的测试案例推荐方法的步骤,该测试案例推荐方法的步骤s10、s20、s30等具体实施过程如上文所述,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。

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