确定手工测试用例与被测试代码关联关系的方法和装置与流程

文档序号:13421708阅读:799来源:国知局
确定手工测试用例与被测试代码关联关系的方法和装置与流程

本发明涉及软件测试技术领域,特别涉及一种确定测试用例与被测试应用程序的代码之间的关联关系的方法、装置、计算设备和存储介质。



背景技术:

随着信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量成为人们共同关注的焦点。测试用例(testcase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求,测试用例一般包括手工测试用例、自动测试用例或两者的结合。

测试覆盖率是度量测试完整性的一个手段,是测试有效性的一个度量。通常,测试覆盖率包括需求覆盖率和代码覆盖率,两者可以相辅相成,用代码覆盖结果反向检查需求覆盖(用例)的测试是否充分完整。

目前,android手工测试用例的设计多是依据需求文档,依靠测试用例设计人员的个人经验,单个测试用例的设计质量如何,对代码的覆盖情况却无法衡量。并且,业内的代码覆盖率多用于单元测试阶段,用于衡量单元测试集合的对于代码的测试覆盖效果。测试覆盖率很少用于手工测试覆盖率,更没有将测试覆盖率用于寻找单个手工测试用例与被测代码的关联关系。



技术实现要素:

本发明的目的是提供一种能够确定手工测试用例与被测试应用程序的代码之间的关联关系的方法和装置。

根据本发明的一个方面,提供了一种确定手工测试用例与被测试应用程序的代码之间的关联关系的方法,该方法可以包括:

响应于单次测试开始指令,记录单个手工测试用例的运行过程中的代码覆盖信息,单次测试开始指令指示开始使用单个手工测试用例手工测试被测试应用程序;

响应于单次测试停止指令,生成针对单个手工测试用例的测试覆盖率文件,单次测试停止指令指示使用单个手工测试用例对被测试应用程序的手工测试结束;以及

分析测试覆盖率文件,得到单个手工测试用例与被测试应用程序的代码之间的关联关系。

这样,基于单次测试开始指令和单次测试停止指令,能够确定一个完整的手工测试用例的执行,由此确定单个手工测试用例以及针对该单个手工测试用例的擦拭覆盖率文件。通过对生成的测试覆盖率文件的分析,得到单个手工测试用例与被测试代码之间的关联关系。

更进一步地,可以基于两者的关联关系实现多种目的,例如确定单个手工测试用例的设计质量,以及实现对被测试代码的精确测试。

优选地,还可以响应于单次测试开始指令,清空先前记录的代码覆盖信息。

由此,清空先前的记录,就可以保证例如通过jacoco等工具每次生成的测试覆盖率文件是针对当前的单个手工测试用例的,以避免出现测试覆盖率文件与测试用例不对应的情况。

优选地,应用程序可以与软件开发工具包集成,响应于单次测试开始指令,软件开发工具包发出清空先前记录的代码覆盖信息的指令;并且/或者响应于单次测试停止指令,软件开发工具包发出生成针对单个手工测试用例的测试覆盖率文件的指令。

基于软件开发工具包能够监测测试的手工执行情况,由此,自动判别完整的单个手工测试用例,为生成针对单个手工测试用例的测试覆盖率文件提供保障。

优选地,分析测试覆盖率文件的步骤可以包括:基于测试覆盖率文件得到针对单个手工测试用例的测试覆盖率报告;以及对测试覆盖率报告进行分析,得到单个手工测试用例与被测试应用程序的代码的关联关系。

由此,通过对测试覆盖率文件和测试覆盖率报告执行相应的步骤,最终得到单个手工测试用例与被测试代码的关联关系。

在一些实施例中,单个测试用例是由测试人员手动输入的,并且测试开始指令和/或测试停止指令是响应于测试人员的操作而得到的。

在手工测试过程中,测试人员进行手动操作,以发出多个测试相关指令,或填写相关信息。在针对单个测试用例的测试开始指令和测试停止指令之间,测试人员可能还会进行多次手动操作。

根据本发明的另一方面,还提供了一种确定手工测试用例与被测试应用程序的代码之间的关联关系的装置,该装置可以包括:

记录装置,响应于单次测试开始指令,记录单个手工测试用例的运行过程中的代码覆盖信息,单次测试开始指令指示开始使用单个手工测试用例手工测试被测试应用程序;

生成装置,响应于单次测试停止指令,生成针对单个手工测试用例的测试覆盖率文件,单次测试停止指令指示使用单个手工测试用例对被测试应用程序的手工测试结束;以及

分析装置,分析测试覆盖率文件,得到单个手工测试用例与被测试应用程序的代码之间的关联关系。

优选地,该装置还可以包括清空装置,响应于单次测试开始指令,清空先前记录的代码覆盖信息。

优选地,该装置可以包括:第一指令装置,响应于单次测试开始指令,向记录装置发出清空先前记录的代码覆盖信息的指令;并且/或者第二指令装置,响应于单次测试停止指令,向生成装置发出生成针对单个手工测试用例的测试覆盖率文件的指令。

优选地,分析装置还可以包括:报告生成装置,基于测试覆盖率文件得到针对单个手工测试用例的测试覆盖率报告;报告分析装置,对测试覆盖率报告进行分析,得到单个手工测试用例与被测试应用程序的代码的关联关系。

优选地,单个手工测试用例可以是由测试人员手动输入的,并且测试开始指令和/或测试停止指令可以是响应于测试人员的操作而得到的。

根据本发明的又一方面,还提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行上述任何一项的方法。

根据本发明的又一方面,还提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行上述任一项的方法。

通过本发明的技术方案,能够确定单个手工测试用例与被测试应用程序的代码之间的关联关系,从而能够用于衡量单个手工测试用例的设计质量,并且能够借此实现对被测试代码的精确测试。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1示出了根据本发明一个实施例的确定关联关系的方法的示意性流程图。

图2示出了根据本发明以一个实施例的确定关联关系的装置的示意性框图。

图3示出了根据本发明一个实施例的计算设备的示意性框图。

图4示出了根据本发明的一个应用例。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

如前所述,现有技术中仍然缺乏有效的方案,以确定单个手工测试用例与被测试代码之间的关联关系的。

有鉴于此,本发明提出了一种确定测试用例与测试代码的关联关系的方法和装置。

需要指明的是,本发明的应用程序可以是任何应用程序,本发明的方案可以在任何终端设备特别是移动终端上执行。

如下将结合附图及实施例详细说明本发明的技术方案。

本发明的确定测试用例与被测试应用程序的代码之间的关联关系(简称确定关联关系)的方案可以实现为一种方法。图1示出了根据本发明一个实施例的确定关联关系的方法的示意性流程图。

如图1所示,在步骤s110,响应于单次测试开始指令,记录单个手工测试用例的运行过程中的代码覆盖信息。

单个手工测试用例可以由测试人员手动输入或操作的一个测试用例,在实施测试时,测试用例作为测试的标准,测试人员严格按照用例项目和测试步骤逐一实施测试。

单次测试开始指令指示开始使用单个手工测试用例手工测试被测试应用程序。测试开始指令可以是响应于测试人员的操作而得到的,例如可以是由测试人员点击的“start”或“开始”按钮得到的。

代码覆盖信息是指执行该测试用例时所记录的反映用例的代码覆盖(测试)情况的信息,在测试用例的执行过程中,可以一直记录代码覆盖信息。该信息可以是由测试覆盖率工具记录的,测试覆盖率工具例如可以是java测试覆盖率工具emma、jacoco,.net测试覆盖率工具,c/c++测试覆盖率工具bullseyecoverage等等。

本发明的代码覆盖率工具可以是通过现有技术中已知的插桩技术或其他方式嵌入到被测试应用程序的代码中,以便于在执行测试时,能够记录测试情况,本发明对此不作限制。

在步骤s120,响应于单次测试停止指令,生成针对单个手工测试用例的测试覆盖率文件。

单次测试停止指令指示使用单个手工测试用例对被测试应用程序的手工测试结束。测试停止指令也可以是响应于测试人员的操作而得到的,例如可以是由测试人员点击“stop”按钮得到的。

应当理解,在手工测试过程中,测试人员进行手动操作,以发出多个测试相关指令,或填写相关信息。在针对单个测试用例的测试开始指令和测试停止指令之间,测试人员可能还会进行多次手动操作。例如,测试人员输入测试用例、或者测试人员点击“上一步/下一步”、“确定/取消”、“是/否”等按钮。

测试覆盖率文件中包含有针对该单个手工测试用例的代码覆盖信息。基于单次测试开始指令和单次测试停止指令,就可以确定一个手工测试用例什么时候开始、什么时候结束,这样就可以确定该手工测试用例为一个完整的手工测试用例,也就可以确定响应于单次测试停止指令而生成的测试覆盖率文件是针对该单个手工测试用例的,即确定测试覆盖率文件与测试用例的一对一的对应关系。这样,在后续过程中,就可以基于该测试覆盖率文件来进行分析,以确定其相对应的单个手工测试用例的设计质量。

在步骤s130,分析测试覆盖率文件,得到单个手工测试用例与被测试应用程序的代码之间的关联关系。

关联关系可以包括测试用例与被测试应用程序的代码中的行号、类名、方法名、文件名等之间的映射关系或其它关联关系。

在分析步骤中,具体地,可以基于测试覆盖率文件得到针对单个手工测试用例的测试覆盖率报告,并运行分析脚本,以对测试覆盖率报告进行分析,得到单个手工测试用例与被测试应用程序的代码的关联关系。

测试用例与被测试应用程序的代码(简称被测代码)之间的关联关系可以用于诸多方面。

一方面,可以用于衡量单个手工测试用例的设计质量。确保测试用例覆盖了想要测试的代码,保证测试用例设计的全面性,尽量避免发生测试遗漏。

另一方面,可以用于精准测试。基于两者的关联关系,可以根据被测试代码精准的选取测试用例,避免对不相关的测试用例进行验证。在被测代码发生变化时(例如更新代码),确定测试用例的执行范围,避免选取过多的不相关的测试用例,这样就可以节省测试时间,提高测试效率。

第三方面,记录测试用例在测试执行时对代码的覆盖情况,用于定位缺陷。测试人员对于缺陷的执行步骤会有描述不准确,或者是忘记测试步骤,无法复现的情况,这时,用例的代码覆盖情况可以很清楚的反映出测试执行覆盖的代码,便于定位缺陷。

另外,为了能够确保每次生成的测试覆盖率文件是对应于其相应的单个手工测试用例的,可以响应于单次测试开始指令,清空先前记录的代码覆盖信息。这样,就可以确定在之后响应于单次测试停止指令而生成的测试覆盖率文件是针对当前单个手工测试用例的,在后续的测试过程中,测试人员也就可以该测试覆盖率文件确定该单个手工测试用例与被测试代码之间的关联关系。

本发明中,被测试应用程序可以与软件开发工具包(sdk)集成。软件开发工具包(sdk)可以用于监测测试人员所执行的操作和/或测试步骤,例如用户所执行的开始操作、停止操作,以及在测试开始与停止之间的其他步骤。并且,在一些实施例中,sdk还能够基于监测到的操作发出相应的指令。例如,响应于单次测试开始指令,软件开发工具包可以发出清空先前记录的代码覆盖信息的指令;或者响应于单次测试停止指令,软件开发工具包可以发出生成针对单个手工测试用例的测试覆盖率文件的指令。

本发明的软件开发工具包适于与任何应用程序集成,并监测该应用程序上的测试执行情况。并且,软件开发工具包也可以用于对被测试应用程序进行插桩操作(或其它操作),以将代码覆盖率工具嵌入到被测试应用程序的代码中,以便于在测试执行时能够记录覆盖率信息。

需要指明的是,上述插桩操作可以是在sdk与应用程序集成之前预先完成的,也可以是在sdk与应用程序集成之后由sdk控制完成的,本发明对此不作限制。

本发明的确定测试用例与被测试应用程序的代码之间的关联关系的方法可以由一种确定关联关系装置实现。

图2是示出了根据本发明一实施例的确定关联关系装置的结构框图。其中,确定关联关系装置200的功能模块可以由实现本发明原理的硬件、软件或硬件和软件的结合来实现。

本领域技术人员可以理解的是,图2所描述的功能模块可以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者更进一步的限定。

图2所示的确定关联关系装置200可以用来实现图1所示的确定关联关系的方法,下面仅就确定关联关系装置200可以具有的功能模块以及各功能模块可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图1的描述,这里不再赘述。

如图2所示,本发明的确定关联关系装置200可以包括记录装置210、生成装置220和分析装置230。

记录装置210可以用于响应于单次测试开始指令,记录单个测试用例的运行过程中的代码覆盖信息。其中,单次测试开始指令指示开始使用单个测试用例手工测试被测试应用程序。其中,单个测试用例可以是由测试人员手动输入的,并且测试开始指令可以是响应于测试人员的操作而得到的。

生成装置220可以用于响应于单次测试停止指令,生成针对单个手工测试用例的测试覆盖率文件。其中,单次测试停止指令指示使用单个测试用例对被测试应用程序的手工测试结束。其中,测试停止指令可以是响应于测试人员的操作而得到的。

由此,基于单次测试开始指令和单次测试结束指令,就可以确定一个手工测试用例什么时候开始、什么时候结束,从而判别该测试用例为一个完整的单个手工测试用例,进而得到与该单个手工测试用例相对应的测试覆盖率文件。

分析装置230可以用于分析测试覆盖率文件,得到单个手工测试用例与被测试应用程序的代码之间的关联关系。

分析装置230还可以包括报告生成装置231和报告分析装置233。报告分析装置231可以基于测试覆盖率文件得到针对单个手工测试用例的测试覆盖率报告。报告分析装置233可以对测试覆盖率报告进行分析,得到单个手工测试用例与被测试应用程序的代码的关联关系。

优选地,该装置还可以包括清空装置240。清空装置240可以用于响应于单次测试开始指令,清空先前记录的代码覆盖信息。

另外,该装置可以包括第一指令装置251和第二指令装置253。

第一指令装置251可以用于响应于单次测试开始指令,向记录装置210发出清空先前记录的代码覆盖信息的指令。第二指令装置253可以用于响应于单次测试停止指令,向生成装置220发出生成针对单个手工测试用例的测试覆盖率文件的指令。

本发明的确定测试用例与被测试应用程序的代码之间的关联关系的方法可以由一种计算设备实现。图3示出了根据本发明一个实施例的计算设备的示意性框图。

如图3所示,本发明的计算设备可以包括处理器310和存储器320。存储器320上可以存储有可执行代码,当可执行代码被处理器310执行时,使处理器310执行上述任何一项的确定测试用例与被测试应用程序的代码之间的关联关系的方法。其具体实现可参见上文基于图1-2的相关描述,在此不再赘述。

【应用例】

以图4所示的应用例进行说明。其中,在此应用例中,采用jacoco作为上文中提及的代码覆盖率工具,使用自动化构建工具gradle完成上文中述及的插桩操作。

将被测试应用程序与预定软件开发工具(sdk)相集成,sdk被用于监测测试执行过程中的相关指令,并控制测试执行过程中所涉及的工具(例如gradle、jacoco),执行如下的过程:

1.首先,sdk可以使用一个自动化构建工具gradle打包一个android安装包(apk),该安装包可以包括被测试应用程序的原始apk以及jacoco工具。当对这样的安装包安装的应用进行操作时,jacoco工具会记录覆盖率执行情况。

2.在安装有上述android安装包的测试设备上执行单个手工测试用例,测试人员点击“start”,响应于单次测试开始指令,sdk可以发出清空指令,以使得jacoco工具能够清空先前记录的代码覆盖信息,同时记录当前手工测试用例的代码覆盖信息。

3.测试人员点击“stop”,响应于单次测试停止指令,sdk发出生成指令,使得jacoco工具能够基于所记录的代码覆盖信息生成针对当前单个手工测试用例的测试覆盖率文件。

4.再次使用gradle工具,对于每个手工测试用例的测试覆盖率文件,运行覆盖率报告生成任务,生成针对单个手工测试用例的测试覆盖率报告。

5.运行分析脚本,对单个手工测试用例的测试覆盖率报告进行分析,解析每个测试用例对被测试代码中的类、方法等的覆盖情况。将覆盖率结果结构化,存储在数据库中,以方便后续使用。

上文中已经参考附图详细描述了根据本发明的确定测试用例与被测试应用程序的代码之间的关联关系的方法、装置和计算设备。

此外,根据本发明的方法还可以实现为一种计算机程序,该计算机程序包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。或者,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的上述方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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