CN111124910A - 确定测试代码执行数据的方法、装置、设备及存储介质 - Google Patents

确定测试代码执行数据的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111124910A
CN111124910A CN201911329831.2A CN201911329831A CN111124910A CN 111124910 A CN111124910 A CN 111124910A CN 201911329831 A CN201911329831 A CN 201911329831A CN 111124910 A CN111124910 A CN 111124910A
Authority
CN
China
Prior art keywords
code
version
report
target version
execution data
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.)
Pending
Application number
CN201911329831.2A
Other languages
English (en)
Inventor
仝瑶
田欧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Reach Best Technology Co Ltd
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Reach Best Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Reach Best Technology Co Ltd filed Critical Reach Best Technology Co Ltd
Priority to CN201911329831.2A priority Critical patent/CN111124910A/zh
Publication of CN111124910A publication Critical patent/CN111124910A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供一种确定测试代码执行数据的方法、装置、设备及存储介质,涉及计算机技术领域,用于优化软件测试过程。该方法包括:对目标版本的代码进行软件测试,并获取目标版本的代码在软件测试时的执行信息以及字节码文件;根据代码内容类型信息和/或早于所述目标版本的历史版本确定报告代码,所述报告代码包括所述目标版本的代码中用于生成执行数据报告的代码;根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告,所述执行数据报告包括所述报告代码在软件测试时的执行数据。该方法可以生成关注的代码在软件测试中的执行数据报告,进而可以直接对关注的代码的执行情况进行评估,提高软件测试的效率。

Description

确定测试代码执行数据的方法、装置、设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种确定测试代码执行数据的方法、装置、设备及存储介质。
背景技术
在软件测试工作中,针对某一软件服务,常希望获知当前版本的代码在软件测试中的执行情况,以便根据执行情况适应性对当前版本的代码进行调整,当代码运行时,测试工具能可以记录代码是否执行的情况,进而根据记录的执行情况生成一个执行数据报告。
但是在软件的更新迭代中,测试人员往往更关注的是当前版本的代码与历史版本的代码相比改动的代码部分,或某一功能模块的代码在软件测试中的执行情况,但是目前在软件测试中只能获得整个当前版本的代码在软件测试中全量的执行数据报告。
发明内容
本公开实施例提供一种确定测试代码执行数据的方法、装置、设备及存储介质,用于优化软件测试过程。
本公开第一方面,提供一种确定测试代码执行数据的方法,包括:
对目标版本的代码进行软件测试,并获取所述目标版本的代码在软件测试时的执行信息以及字节码文件;
根据代码内容类型信息和/或早于所述目标版本的历史版本确定报告代码,所述报告代码包括所述目标版本的代码中用于生成执行数据报告的代码;
根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告,所述执行数据报告包括所述报告代码在软件测试时的执行数据。
在一种可能的实现方式中,所述根据代码内容类型信息确定报告代码的步骤,包括:
确定与所述代码内容类型信息对应的代码为所述报告代码。
在一种可能的实现方式中,所述根据早于所述目标版本的历史版本确定报告代码的步骤,包括:
确定所述目标版本的代码中相对于选取的历史版本的代码存在更新的代码为所述报告代码。
在一种可能的实现方式中,所述对目标版本的代码进行软件测试的步骤之前,还包括:
根据指示的版本号确定所述目标版本和所述历史版本;或
根据指示的第一设定时间段,确定所述目标版本和所述历史版本。
在一种可能的实现方式中,所述版本号包括所述目标版本的目标版本号和所述历史版本的历史版本号,所述根据指示的版本号确定所述目标版本和所述历史版本的步骤,包括:
根据指示的目标版本号确定所述目标版本,根据指示的历史版本号确定所述历史版本。
在一种可能的实现方式中,所述版本号包括所述目标版本的目标版本号,所述根据指示的版本号确定所述目标版本和所述历史版本的步骤,包括:
根据指示的目标版本号确定所述目标版本;
从早于所述目标版本的版本中,选择所述目标版本之前最晚一次发布的版本为所述历史版本;或从早于所述目标版本的版本中,选择所述目标版本之前最早一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述从早于所述目标版本的历史版本中,选择所述目标版本之前最晚一次发布的版本为所述历史版本的步骤,包括:
从早于所述目标版本的版本中,选择所述目标版本之前且第二设定时间段内最晚一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述从早于所述目标版本的版本中,选择所述目标版本之前最早一次发布的版本为所述历史版本的步骤,包括:
从早于所述目标版本的版本中,选择所述目标版本之前且第三设定时间段内最早一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述根据指示的第一设定时间段,确定所述目标版本和所述历史版本的步骤,包括:
选择所述第一设定时间段内最晚一次发布的版本为所述目标版本;
选择所述第一设定时间段内最早一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告的步骤,包括:
通过报告生成函数,根据所述执行信息确定所述报告代码在软件测试时的执行数据;
根据所述字节码文件以及确定的执行数据,生成所述报告代码的执行数据报告。
本公开第二方面,提供一种确定测试代码执行数据的装置,包括:
软件测试单元,被配置为执行对目标版本的代码进行软件测试,并获取所述目标版本的代码在软件测试时的执行信息以及字节码文件;
报告代码确定单元,被配置为执行根据代码内容类型信息和/或早于所述目标版本的历史版本确定报告代码,所述报告代码包括所述目标版本的代码中用于生成执行数据报告的代码;
报告生成单元,被配置为执行根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告,所述执行数据报告包括所述报告代码在软件测试时的执行数据。
在一种可能的实现方式中,所述报告代码确定单元具体被配置为执行:
确定与所述代码内容类型信息对应的代码为所述报告代码。
在一种可能的实现方式中,所述报告代码确定单元具体被配置为执行:
确定所述目标版本的代码中相对于选取的历史版本的代码存在更新的代码为所述报告代码。
在一种可能的实现方式中,所述软件测试单元还被配置为执行:
对目标版本的代码进行软件测试的步骤之前,根据指示的版本号确定所述目标版本和所述历史版本;或根据指示的第一设定时间段,确定所述目标版本和所述历史版本。
在一种可能的实现方式中,所述版本号包括所述目标版本的目标版本号和所述历史版本的历史版本号,所述软件测试单元具体被配置为执行:
根据指示的目标版本号确定所述目标版本,根据指示的历史版本号确定所述历史版本。
在一种可能的实现方式中,所述版本号包括所述目标版本的目标版本号,所述软件测试单元具体被配置为执行:
根据指示的目标版本号确定所述目标版本;
从早于所述目标版本的版本中,选择所述目标版本之前最晚一次发布的版本为所述历史版本;或从早于所述目标版本的版本中,选择所述目标版本之前最早一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述软件测试单元具体被配置为执行:
从早于所述目标版本的版本中,选择所述目标版本之前且第二设定时间段内最晚一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述软件测试单元具体被配置为执行:
从早于所述目标版本的版本中,选择所述目标版本之前且第三设定时间段内最早一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述软件测试单元具体被配置为执行:
选择所述第一设定时间段内最晚一次发布的版本为所述目标版本;
选择所述第一设定时间段内最早一次发布的版本为所述历史版本。
在一种可能的实现方式中,所述报告生成单元具体被配置为执行:
通过报告生成函数,根据所述执行信息确定所述报告代码在软件测试时的执行数据;
根据所述字节码文件以及确定的执行数据,生成所述报告代码的执行数据报告。
本公开第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面及任一种可能的实施方式中任一所述的方法。
本公开第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面及一种可能的实施方式中任一所述的方法。
本公开的方案至少带来以下的有益效果:
1)对于某一软件服务任一版本的代码在进行软件测试时,可以使用该方法确定该版本的代码与历史版本的代码存在更新的代码,进而生成更新的代码的执行数据报告,从而便于根据该执行数据报告更准确地评价更新的代码在软件测试中的执行情况,提高软件测试的效率且便于根据该执行数据报告对被测试的代码进行调整。
2)该方法还可以对任一版本的代码进行软件测试时,针对任一版本的代码中指定的代码内容类型信息对应的代码生成执行数据报告,提高软件测试的效率且便于根据该执行数据报告评估该指定代码的执行情况。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为本公开示例性实施例提供的一种用于确定测试代码执行数据的测试架构的示意图;
图2为本公开示例性实施例提供的一种生成执行数据报告的过程示意图;
图3为本公开示例性实施例提供的另一种生成执行数据报告的过程示意图;
图4为本公开示例性实施例提供的一种执行数据报告的示意图;
图5为本公开示例性实施例提供的另一种执行数据报告的示意图;
图6为本公开示例性实施例提供的一种确定测试代码执行数据的装置的结构示意图;
图7为本公开示例性实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
为了便于本领域技术人员更好地理解本公开的技术方案,下面对本公开涉及的专有名词进行说明。
本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
本公开的说明书和权利要求书中的“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
覆盖率测试工具:度量测试完整性的一个工具,其可以确定被测试代码在软件测试中的执行情况,并根据代码的执行情况生成执行数据报告(又称覆盖率报告),目前常用的覆盖率测试工具包括Jaccoco、Emma、Cobertura等。
下面对本公开的设计思想进行说明。
在对某一软件服务的代码进行测试时,当代码运行时,可以通过覆盖率测试工具记录代码的运行轨迹信息,根据这些运行轨迹信息包含的代码的执行信息生成代码的执行数据报告,进而根据获取的执行情况对代码进行优化。
鉴于此,本公开设计一种确定测试代码执行数据的方法、装置、设备及存储介质,用以优化软件测试过程,本公开的方法包括:对目标版本的代码进行软件测试,并获取上述目标版本的代码在软件测试时的执行信息以及字节码文件;根据代码内容类型信息确定报告代码,和/或,根据早于上述目标版本的历史版本确定报告代码,上述报告代码包括上述目标版本的代码中用于生成执行数据报告的代码;进一步根据获得的执行信息以及字节码文件,生成上述报告代码的执行数据报告,该执行数据报告中包括报告代码在软件测试时的执行数据。
进一步地,可以确定与上述内容类型信息对应的代码为报告代码,和/或,将目标版本的代码中相对于选取的历史版本的代码存在更新的代码为报告代码。
以下结合附图对本公开的方案进行详细说明。
如图1所示,提供一种用于确定测试代码执行数据的测试架构,该测试架构中包括被测软件服务模块110、覆盖率测试工具120、版本管理系统130,其中:
被测软件服务模块110用于提供需要测试的软件服务以及测试的目标版本的代码,其可以由多台服务器承载,每台服务器在启动时都需要加上一个覆盖率测试工具120生成的代理服务配置,其中代理服务配置会提供一个能获取代码在软件测试时的执行信息的服务,每当被测服务模块开始一个对目标版本的代码进行软件测试的请求,覆盖率测试工具会记录下目标版本的代码在软件测试时的执行信息,以及目标版本的代码被编译器编译后的字节码文件,上述代理服务配置可以是Jaccoco代理服务。
覆盖率测试工具120,可以为每个提供被测软件服务的服务器配置一个代理服务配置,以及提供根据执行信息及字节码信息生成执行数据报告的服务。
版本管理系统130用于管理同一软件服务的不同版本的代码,以及不同软件服务的不同版本的代码,可以直接提供同一软件服务的各版本的代码,或者提供目标版本的代码与同一软件服务的其他版本代码的代码存在更新的代码。
上述测试架构中还可以包括数据库,用以存放生成的执行数据报告。
基于图1的测试架构,下面对本公开实施例中涉及的确定测试代码执行数据的方法示例说明。
作为一种实施例,在创建执行数据报告任务时,可以选择以下三种生成报告方式:全量报告形式、增量报告形式以及指定内容报告形式,其中:
上述全量报告形式指针对目标版本的代码的全部代码生成执行数据报告,该执行数据报告中包括目标版本的全部代码在软件测试时的执行数据;上述增量报告形式指针对目标版本的代码与选取的历史版本的代码存在更新的代码生成执行数据报告,该执行数据报告中仅包括更新的代码在软件测试时的执行数据;上述指定内容报告形式为针对指定的内容类型信息对应的代码生成执行数据报告,该指定数据报告中仅包括指定的内容类型信息对应的代码在软件测试时的执行数据。
上述更新的代码包括如下几种情况:
1)目标版本的代码与选取的历史版本的代码相比,代码内容发生改变的代码为更新的代码,上述底面内容发生改变可以但不局限于包括增加代码、删除代码、修改代码等。
2)目标版本的代码与选取的历史版本的代码相比,代码内容未改变但执行逻辑改变的代码为更新的代码,如由于第一部分的代码的修改引起第二部分的代码的执行逻辑发生变化,则将第一部分的代码以及第二部分的代码都确定为更新的代码。
作为一种实施例,上述增量报告形式和指定内容报告形式可以择一选择,也可以结合在一起使用,如将增量报告形式和指定内容报告形式结合使用时可以生成针对指定的内容类型信息对应的更新的代码在软件测试时的执行数据,该处更新的代码指目标版本中该指定的内容类型信息对应的代码中与选取的历史版本的代码中该指定内容对应的代码更新的代码。
以下分情况对上述三种生成报告方式逐一进行详细说明。
(一)全量报告形式
当选择全量报告形式生成执行数据报告时,可以通过现有的覆盖率测试工具包括Jaccoco、Emma、Cobertura等,对目标版本的代码的全部代码生成执行数据报告,此处不再进行过多说明。
具体地,可以通过对象指示的版本号确定目标版本,进而获取目标版本的代码;也可以接收对象指示的代码作为目标版本的代码。
(二)增量报告形式
当选择增量报告形式生成执行数据报告时,其过程可参见图2,具体包括如下步骤:
步骤S200,获取待测试软件服务的目标版本的代码。
作为一种实施例,可以从上述被测软件服务模块110中获取目标版本的代码。
步骤S201,对目标版本的代码进行软件测试,并获取上述目标版本的代码在软件测试时的执行信息以及字节码文件。
作为一种实施例,可以按照预设软件测试技术对目标版本的代码进行测试,预设软件测试技术可以但不局限于包括黑盒测试、白盒测试等。
上述黑盒测试中,目标程序的代码被看成一个无法打开的黑盒,主要对软件界面和软件功能对应的代码进行测试;白盒测试主要用于检查各个代码的逻辑结构是否合理,对应的模块独立路径是否正常以及内部结构是否有效等。
可以通过上述覆盖率测试工具120获取目标版本的代码经预设编译器编译后的字节码文件。
作为一种实施例,上述执行信息包括指示上述目标版本的各部分代码是否执行的信息,可以将获取的执行信息保存为特定格式exec的文件;上述字节码文件是经过代码编译器预处理过的一种文件,是上述代码的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行,由于被预处理过,所以比一般的代码运行快。
对上述代码编译器不做过多限定,其应与目标版本的代码使用的编程语言对应,当目标版本的代码使用的编程语言为java时,上述代码编译器应当为与java相关的代码编译器。
步骤S202,根据早于上述目标版本的历史版本确定报告代码,报告代码包括目标版本的代码中用于生成执行数据报告的代码。
作为一种实施例,步骤S201之前,还可以从早于目标版本的版本中,选择一个作为历史版本,进而根据选取的历史版本确定报告代码,具体地可以将目标版本的代码相对于选取的历史版本的代码存在更新的代码确定为上述报告代码。
作为一种实施例,覆盖率测试工具120可以从上述版本管理系统130中拉取选取的历史版本的代码,进而确定目标版本的代码相对于选取的历史版本的代码存在更新的代码;上述覆盖率测试工具120还可以直接从上述版本管理系统130中直接拉取目标版本的代码相对于选取的历史版本的代码存在更新的代码,因为版本管理系统130保存有目标版本的代码以及与目标版本的代码属于同一软件服务的各版本的代码。
步骤S203,根据获得的执行信息以及字节码文件,生成报告代码的执行数据报告。
上述执行数据报告包括上述报告代码在软件测试时的执行数据,上述执行数据可以包括在软件测试中执行、未执行以及部分执行中的一个或多个组合。
通过报告生成函数,根据上述执行信息确定上述报告代码在软件测试时的执行数据;根据上述字节码文件以及确定的执行数据,生成上述报告代码的执行数据报告。
作为一种实施例,可以按照如下方法生成报告代码的执行数据报告:
根据执行信息及字节码信息,依次生成每个行代码的执行数据,其中,在生成任一行代码的执行数据时,首先通过报告生成函数判断该行代码是否属于报告代码,如果不属于,则跳过该行代码直接进行下一个行代码的执行数据生成过程;若属于,则从上述执行信息中确定出该行代码的执行信息,并根据该行代码的执行信息确定该行代码的执行数据(包括执行、未执行、部分执行等),进而通过报告生成函数结合上述字节码文件将该行代码的执行数据记录到执行数据报告中。
在上述方法中,还可以按照测试需求或测试功能,根据执行信息及字节码信息,依次生成每个测试需求或测试功能对应的代码的执行数据,具体过程与上述生成行代码的执行数据类似,此处不再重复叙述。
上述执行数据报告还可以包括目标版本的代码的覆盖率,该覆盖率可以包括行代码覆盖率、需求覆盖率、功能覆盖率等,其中:
行代码覆盖率为已执行的代码的行的数量与代码的行的总数量的比值;
需求覆盖率为相应代码已执行的测试需求的数量与测试需求的总数量的比值;
功能覆盖率为相应代码已执行的测试功能的数量与测试功能的总数量的比值。
本公开实施例在获取目标版本时,还可以选取早于目标版本的历史版本,其中,可以但不局限于通过如下两种方式确定取目标版本和历史版本:
第一种目标版本和历史版本获取方法:
根据指示的版本号确定目标版本和历史版本。
作为一种实施例,上述版本号可以仅包括目标版本的目标版本号,也可以同时包含目标版本的目标版本号以及选取的历史版本的历史版本号,以下分情况叙述。
1)版本号可以同时目标版本号以及历史版本号。
此时可以直接根据指示的目标版本号从各版本中确定出目标版本,根据指示的历史版本号从各版本中确定出选取的历史版本。
2)版本号仅包括目标版本号。
此时可以直接根据指示的目标版本号确定出目标版本,进而可以但不局限于通过如下几种方法确定选取的历史版本:
第一种历史版本选择方法:
从早于目标版本的版本中,选择目标版本之前最晚一次发布的版本为历史版本。
如针对某一软件服务,按照时间先后顺序依次有版本一至版本的代码,若目标版本为版本十,则选择版本九为选择的历史版本。
进一步地,还可以根据第二设定时间段选择历史版本,如从早于目标版本的版本中,选择上述目标版本之前且第二设定时间段内最晚一次发布的版本为历史版本。
如针对某一软件服务,按照时间先后顺序依次有版本一至版本的代码,其中版本一至版本五为时间段A内发布的,版本六至版本九为时间段B内发布的,若目标版本为版本十,第二设定时间段为时间段B,则确定版本九为选择的历史版本。
第二种历史版本选择方法:
从早于目标版本的版本中,选择上述目标版本之前最早一次发布的版本为历史版本。
如针对某一软件服务,按照时间先后顺序依次有版本一至版本的代码,若目标版本为版本十,则选择版本一为选择的历史版本。
进一步地,可以根据第三设定时间段选择历史版本,如从早于目标版本的历史版本中,选择上述目标版本之前且第三设定时间段内最早一次发布的历史版本。
如针对某一软件服务,按照时间先后顺序依次有版本一至版本的代码,其中版本一至版本五为时间段A内发布的,版本六至版本九为时间段B内发布的,若目标版本为版本十,第三设定时间段为时间段B,则选择版本六为选择的历史版本。
对上述第二时间段和第三时间段的具体数值不做限定,本领域的技术人员可根据实际需求设置,且上述第三设定时间段与上述第二设定时间段可以相同也可以不同。
第二种目标版本和历史版本获取方法:
根据指示的第一设定时间段确定目标版本和历史版本。
作为一种实施例,可以但不局限于选择第一设定时间段内最晚一次发布的版本为目标版本,选择第一设定时间内最早一次发布的版本为选取的历史版本。
对上述第一设定时间段的具体数值不做过多限定,本领域的技术人员可根据实际需求设置。
如针对某一软件服务,按照时间先后顺序依次有版本一至版本十的代码,其中版本一至版本五为时间段A内发布的,版本六至版本九为时间段B发布的,若指示的第一设定时间段为时间段A,则确定版本五为目标版本且确定版本一为历史版本;若指示的第一设定时间段为时间段B,则确定版本十为目标版本且确定版本六为历史版本。
作为一种实施例,还可以选择第一设定时间段内最晚一次发布的版本为目标版本,选择第一设定时间内早于目标版本的最晚一次发布的版本为选取的历史版本。
如针对某一软件服务,按照时间先后顺序依次有版本一至版本十的代码,其中版本一至版本五为时间段A内发布的,若指示的第一设定时间段为时间段A,则确定版本五为目标版本,进而确定版本五之前最晚发布的版本为版本四,则将版本四确定为历史版本。
第三种目标版本和历史版本获取方法:
根据指示的软件服务信息确定目标版本和历史版本。
具体地,根据指示的软件服务信息确定软件服务,进而确定该软件服务对应的代码的所有版本,将其中将最晚发布的版本作为目标版本以及将最早发布的版本作为历史版本,或者将其中将最晚发布的版本作为目标版本,从早于目标版本的版本中,选择最晚发布的版本为历史版本。
上述软件服务信息可以但不局限于为软件服务的标识信息。
如根据指示的软件服务信息确定对应的软件服务,按照时间先后顺序依次有版本一至版本的代码,则可以确定版本十为目标版本以及版本一为选取的历史版本,或者可以确定版本十为目标版本以及版本九为选取的历史版本。
应当说明的是,上述第一设定时间段、第二设定时间段、第三设定时间段、版本号以及软件服务信息可由对象设置,本实施例中的对象可以是测试人员、还可以是智能设备如智能测试机器人等。
(三)指定内容报告形式
当选择指定内容报告形式生成执行数据报告时,其过程可参见图3,具体包括如下步骤:
在上述步骤S200和S201之后包括:
步骤S302,确定与代码内容类型信息对应的代码为上述报告代码。
上述代码内容类型指示信息可以由对象指示,由于在软件工程的实际开发中,某个功能模块类的代码通常会包含相同的关键词,故而上述代码内容类型指示信息可以但不局限于包括代码中的一个或多个类关键词、包关键词等,上述类关键词可以包括类名,上述包关键字可以包括包名。
若内容类型关键词为多个类名时,将确定目标版本中上述多个类名的功能模块类对应的代码为报告代码。
步骤S303,根据获得的执行信息以及字节码文件,生成报告代码的执行数据报告。
此步骤的具体过程可参见上述步骤S203的相关内容,此处不再重复叙述。
作为一种实施例,还可以针对指定的内容类型信息对应的代码以及更新的代码生成执行数据报告,具体可参照如下过程:
作为一种实施例,将增量报告形式和指定内容报告形式结合使用时,在上述步骤S200及步骤S201之后,确定目标版本的代码中与代码内容类型信息对应的代码为第一代码,以及选取的历史版本的代码中与代码类型信息对应的代码为第二代码,确定第一代码中相对于第二代码存在更新的代码为报告代码,进而根据获得的执行信息以及字节码文件,生成该报告代码的执行数据报告。
本公开还提供一种执行数据报告的示例性报告展示文件400,具体可参照图4,其中,行号1至11表示报告代码的行号,灰度区域的第1行、第3至6行以及第9至11行的代码表示被覆盖的代码,即表示报告代码中的第1行、第3至6行以及第9至11行的代码在进行软件测试中执行,其余行的代码在软件测试中未执行。
本公开还提供另一种执行数据报告的示例性报告展示文件500,具体可参照图5,其中,行号1至11表示报告代码的行号,灰度区域的第3至6行以及第9至11行的代码表示被覆盖的代码标识在进行软件测试中执行,虚线框区域的第7行和第8行的代码表示在软件测试中部分执行,其余行的代码表示在软件测试中未执行。
作为一种实施例,还可以在报告展示文件400的覆盖率展示框410中展示行代码覆盖率,图4中的行代码覆盖率为60%,即表示报告代码中在软件测试中已执行的代码的行为报告代码的总行数的60%。
本公开的方案中,能根据指定的代码内容类型信息或历史版本的代码确定测试人员关注的报告代码,并仅根据报告代码的执行数据生成执行数据报告,便,提高软件测试的效率且便于根据该执行数据报告对被测试的代码进行调整。
如图6所示,基于相同的发明构思,本公开实施例还提供一种确定测试代码执行数据的装置600,该装置包括:
软件测试单元601,被配置为执行对目标版本的代码进行软件测试,并获取上述目标版本的代码在软件测试时的执行信息以及字节码文件;
报告代码确定单元602,被配置为执行根据代码内容类型信息和/或早于上述目标版本的历史版本确定报告代码,上述报告代码包括上述目标版本的代码中用于生成执行数据报告的代码;
报告生成单元603,被配置为执行根据上述执行信息以及上述字节码文件,生成上述报告代码的执行数据报告,上述执行数据报告包括上述报告代码在软件测试时的执行数据。
作为一种可选的实施例,上述报告代码确定单元具体被配置为执行:
确定与上述代码内容类型信息对应的代码为上述报告代码。
作为一种可选的实施例,上述报告代码确定单元具体被配置为执行:
确定上述目标版本的代码中相对于选取的历史版本的代码存在更新的代码为上述报告代码。
作为一种可选的实施例,上述软件测试单元还被配置为执行:
对目标版本的代码进行软件测试的步骤之前,根据指示的版本号确定上述目标版本和上述历史版本;或根据指示的第一设定时间段,确定上述目标版本和上述历史版本。
作为一种可选的实施例,上述版本号包括上述目标版本的目标版本号和上述历史版本的历史版本号,上述软件测试单元具体被配置为执行:
根据指示的目标版本号确定上述目标版本,根据指示的历史版本号确定上述历史版本。
作为一种可选的实施例,上述版本号包括上述目标版本的目标版本号,上述软件测试单元具体被配置为执行:
根据指示的目标版本号确定上述目标版本;
从早于上述目标版本的版本中,选择上述目标版本之前最晚一次发布的版本为上述历史版本;或从早于上述目标版本的版本中,选择上述目标版本之前最早一次发布的版本为上述历史版本。
作为一种可选的实施例,上述软件测试单元具体被配置为执行:
从早于上述目标版本的版本中,选择上述目标版本之前且第二设定时间段内最晚一次发布的版本为上述历史版本。
作为一种可选的实施例,上述软件测试单元具体被配置为执行:
从早于上述目标版本的版本中,选择上述目标版本之前且第三设定时间段内最早一次发布的版本为上述历史版本。
作为一种可选的实施例,上述软件测试单元具体被配置为执行:
选择上述第一设定时间段内最晚一次发布的版本为上述目标版本;
选择上述第一设定时间段内最早一次发布的版本为上述历史版本。
作为一种可选的实施例,上述报告生成单元具体被配置为执行:
通过报告生成函数,根据上述执行信息确定上述报告代码在软件测试时的执行数据;
根据上述字节码文件以及确定的执行数据,生成上述报告代码的执行数据报告。
如图7所示,本公开提供一种电子设备700,包括处理器701、用于存储上述处理器可执行指令的存储器702;
其中,上述处理器被配置为执行如下过程:
对目标版本的代码进行软件测试,并获取上述目标版本的代码在软件测试时的执行信息以及字节码文件;
根据代码内容类型信息和/或早于上述目标版本的历史版本确定报告代码,上述报告代码包括上述目标版本的代码中用于生成执行数据报告的代码;
根据上述执行信息以及上述字节码文件,生成上述报告代码的执行数据报告,上述执行数据报告包括上述报告代码在软件测试时的执行数据。
作为一种可选的实施例,上述处理器具体被配置为执行:确定与上述代码内容类型信息对应的代码为上述报告代码。
作为一种可选的实施例,上述处理器具体配置为执行:
确定上述目标版本的代码中相对于选取的历史版本的代码更新的代码为上述报告代码。
作为一种可选的实施例,上述处理器还被配置为执行:
对目标版本的代码进行软件测试的步骤之前,根据指示的版本号确定上述目标版本和上述历史版本;或根据指示的第一设定时间段,确定上述目标版本和上述历史版本。
作为一种可选的实施例,上述版本号包括上述目标版本的目标版本号和上述历史版本的历史版本号,上述处理器具体被配置为执行:
根据指示的目标版本号确定上述目标版本,根据指示的历史版本号确定上述历史版本。
作为一种可选的实施例,上述版本号包括上述目标版本的目标版本号,上述处理器具体被配置为执行:
根据指示的目标版本号确定上述目标版本;
从早于上述目标版本的版本中,选择上述目标版本之前最晚一次发布的版本为上述历史版本;或从早于上述目标版本的版本中,选择上述目标版本之前最早一次发布的版本为上述历史版本。
作为一种可选的实施例,上述处理器具体被配置为执行:
从早于上述目标版本的版本中,选择上述目标版本之前且第二设定时间段内最晚一次发布的版本为上述历史版本。
作为一种可选的实施例,上述处理器具体被配置为执行:
从早于上述目标版本的版本中,选择上述目标版本之前且第三设定时间段内最早一次发布的版本为上述历史版本。
作为一种可选的实施例,上述处理器具体被配置为执行:
选择上述第一设定时间段内最晚一次发布的版本为上述目标版本;
选择上述第一设定时间段内最早一次发布的版本为上述历史版本。
作为一种可选的实施例,上述处理器具体被配置为执行:
通过报告生成函数,根据上述执行信息确定上述报告代码在软件测试时的执行数据;
根据上述字节码文件以及确定的执行数据,生成上述报告代码的执行数据报告。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由上述电子设备的处理器执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,上述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种确定测试代码执行数据的方法,其特征在于,包括:
对目标版本的代码进行软件测试,并获取所述目标版本的代码在软件测试时的执行信息以及字节码文件;
根据代码内容类型信息和/或早于所述目标版本的历史版本确定报告代码,所述报告代码包括所述目标版本的代码中用于生成执行数据报告的代码;
根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告,所述执行数据报告包括所述报告代码在软件测试时的执行数据。
2.如权利要求1所述的方法,其特征在于,所述根据代码内容类型信息确定报告代码的步骤,包括:
确定与所述代码内容类型信息对应的代码为所述报告代码。
3.如权利要求1所述的方法,其特征在于,所述根据早于所述目标版本的历史版本确定报告代码的步骤,包括:
确定所述目标版本的代码中相对于选取的历史版本的代码更新的代码为所述报告代码。
4.如权利要求1-3任一所述的方法,其特征在于,所述对目标版本的代码进行软件测试的步骤之前,还包括:
根据指示的版本号确定所述目标版本和所述历史版本;或
根据指示的第一设定时间段,确定所述目标版本和所述历史版本。
5.如权利要求4所述的方法,其特征在于,所述版本号包括所述目标版本的目标版本号和所述历史版本的历史版本号,所述根据指示的版本号确定所述目标版本和所述历史版本的步骤,包括:
根据指示的目标版本号确定所述目标版本,根据指示的历史版本号确定所述历史版本。
6.如权利要求4所述的方法,其特征在于,所述版本号包括所述目标版本的目标版本号,所述根据指示的版本号确定所述目标版本和所述历史版本的步骤,包括:
根据指示的目标版本号确定所述目标版本;
从早于所述目标版本的版本中,选择所述目标版本之前最晚一次发布的版本为所述历史版本;或从早于所述目标版本的版本中,选择所述目标版本之前最早一次发布的版本为所述历史版本。
7.如权利要求1所述的方法,其特征在于,所述根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告的步骤,包括:
通过报告生成函数,根据所述执行信息确定所述报告代码在软件测试时的执行数据;
根据所述字节码文件以及确定的执行数据,生成所述报告代码的执行数据报告。
8.一种确定测试代码执行数据的装置,其特征在于,包括:
软件测试单元,被配置为执行对目标版本的代码进行软件测试,并获取所述目标版本的代码在软件测试时的执行信息以及字节码文件;
报告代码确定单元,被配置为执行根据代码内容类型信息和/或早于所述目标版本的历史版本确定报告代码,所述报告代码包括所述目标版本的代码中用于生成执行数据报告的代码;
报告生成单元,被配置为执行根据所述执行信息以及所述字节码文件,生成所述报告代码的执行数据报告,所述执行数据报告包括所述报告代码在软件测试时的执行数据。
9.一种电子设备,其特征在于,包括处理器、用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行权利要求1-7中任一项所述的方法。
CN201911329831.2A 2019-12-20 2019-12-20 确定测试代码执行数据的方法、装置、设备及存储介质 Pending CN111124910A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911329831.2A CN111124910A (zh) 2019-12-20 2019-12-20 确定测试代码执行数据的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911329831.2A CN111124910A (zh) 2019-12-20 2019-12-20 确定测试代码执行数据的方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN111124910A true CN111124910A (zh) 2020-05-08

Family

ID=70501061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911329831.2A Pending CN111124910A (zh) 2019-12-20 2019-12-20 确定测试代码执行数据的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111124910A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
US20160299835A1 (en) * 2015-04-08 2016-10-13 Opshub, Inc. Method and system for providing delta code coverage information
CN106326118A (zh) * 2016-08-19 2017-01-11 东软集团股份有限公司 代码测试覆盖率确定方法和装置
CN108170610A (zh) * 2018-01-17 2018-06-15 北京网信云服信息科技有限公司 确定测试覆盖率的方法和装置
CN108874656A (zh) * 2017-05-16 2018-11-23 北京京东尚科信息技术有限公司 代码测试方法、装置、可读存储介质及计算机设备
CN109240911A (zh) * 2018-08-13 2019-01-18 腾讯科技(北京)有限公司 精准测试方法、装置和计算机设备
CN110096429A (zh) * 2019-03-18 2019-08-06 深圳壹账通智能科技有限公司 测试报告生成方法、装置、设备及存储介质
CN110209568A (zh) * 2018-04-24 2019-09-06 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160299835A1 (en) * 2015-04-08 2016-10-13 Opshub, Inc. Method and system for providing delta code coverage information
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN106326118A (zh) * 2016-08-19 2017-01-11 东软集团股份有限公司 代码测试覆盖率确定方法和装置
CN108874656A (zh) * 2017-05-16 2018-11-23 北京京东尚科信息技术有限公司 代码测试方法、装置、可读存储介质及计算机设备
CN108170610A (zh) * 2018-01-17 2018-06-15 北京网信云服信息科技有限公司 确定测试覆盖率的方法和装置
CN110209568A (zh) * 2018-04-24 2019-09-06 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备
CN109240911A (zh) * 2018-08-13 2019-01-18 腾讯科技(北京)有限公司 精准测试方法、装置和计算机设备
CN110096429A (zh) * 2019-03-18 2019-08-06 深圳壹账通智能科技有限公司 测试报告生成方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US10437702B2 (en) Data-augmented software diagnosis method and a diagnoser therefor
CN112306855B (zh) 接口自动化测试方法、装置、终端和存储介质
US20070016829A1 (en) Test case generator
US20140237453A1 (en) Exception based quality assessment
CN111026601A (zh) Java应用系统的监控方法、装置、电子设备及存储介质
KR20080050331A (ko) 디버그 정보 수집 방법 및 디버그 정보 수집 시스템
CN114546868A (zh) 代码覆盖率测试方法、装置和电子设备
CN112579437B (zh) 一种程序运行过程符合性验证方法
US7536679B1 (en) System and methods for test tool class inheritance
CN103186463B (zh) 确定软件的测试范围的方法和系统
GB2460407A (en) Using coverage data to choose software regression tests
CN110659209A (zh) 一种基于接口调用的自动化测试方法、装置及测试系统
US20080127061A1 (en) Method and system for editing code
CN111913878A (zh) 基于程序分析结果的字节码插桩方法、装置及存储介质
CN111679984A (zh) 一种性能分析方法和装置
Christi et al. Target selection for test-based resource adaptation
CN112370773A (zh) 用户积分数值对账测试方法及系统
CN112612697A (zh) 一种基于字节码技术的软件缺陷测试定位方法及系统
CN111124910A (zh) 确定测试代码执行数据的方法、装置、设备及存储介质
CN114416412B (zh) 一种基于Arthas的异常定位方法及系统
CN115587048A (zh) 回归测试方法、终端设备及计算机可读存储介质
CN115687129A (zh) 一种覆盖率报告生成方法、装置、存储介质和计算机设备
Eloussi Determining flaky tests from test failures
CN111414194B (zh) 一种接口信息生成方法、系统、电子设备及存储介质
CN113032254A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200508