CN112363937B - 差异覆盖率测试方法、装置、计算机设备和存储介质 - Google Patents

差异覆盖率测试方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN112363937B
CN112363937B CN202011262117.9A CN202011262117A CN112363937B CN 112363937 B CN112363937 B CN 112363937B CN 202011262117 A CN202011262117 A CN 202011262117A CN 112363937 B CN112363937 B CN 112363937B
Authority
CN
China
Prior art keywords
code
difference
tested
version
log
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.)
Active
Application number
CN202011262117.9A
Other languages
English (en)
Other versions
CN112363937A (zh
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.)
Guangzhou Pinwei Software Co Ltd
Original Assignee
Guangzhou Pinwei Software 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 Guangzhou Pinwei Software Co Ltd filed Critical Guangzhou Pinwei Software Co Ltd
Priority to CN202011262117.9A priority Critical patent/CN112363937B/zh
Publication of CN112363937A publication Critical patent/CN112363937A/zh
Application granted granted Critical
Publication of CN112363937B publication Critical patent/CN112363937B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3676Test management for coverage analysis
    • 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)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及软件测试领域,具体涉及一种差异覆盖率测试方法、装置、计算机设备和存储介质。所述方法包括:响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志;对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志;根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。本发明实施例能够实现在测试差异代码之前将差异代码中的指定代码进行过滤,提高差异覆盖率测试的测试效率。

Description

差异覆盖率测试方法、装置、计算机设备和存储介质
技术领域
本申请涉及软件测试领域,特别是涉及一种差异覆盖率测试方法、装置、计算机设备和存储介质。
背景技术
随着网络的不断发展,软件的更新迭代速度越来越快。当软件需要发布新版本时需要对新版本的软件代码进行测试。
差异覆盖率测试(或称为差异代码覆盖率测试)和差异覆盖率,是软件测试过程中最重要的测试方法和测试效果衡量标准之一,差异覆盖率指的是测试过程中已覆盖的差异代码行数在总的差异代码行数中所占的比例,差异代码是新版本的软件代码相比以往版本的软件代码发生改变的代码。通过对差异覆盖率进行分析,可以快速定位到总的差异代码中哪些代码是没有运行的,从而可以构造相应的测试用例来覆盖这些代码,以发现软件设计中存在的缺陷和错误。
以往测试时会将所有的差异代码都进行测试,然而,差异代码中有些代码重要程度不高,在差异覆盖率报告中也不需要去关注,因此,对包含此类代码的差异代码进行测试会降低测试效率。
发明内容
本发明针对现有技术的缺点,提供了一种差异覆盖率测试方法、装置、计算机设备和存储介质,本发明实施例能够实现在测试差异代码之前将差异代码中的指定代码进行过滤,提高差异覆盖率测试的测试效率。
本发明根据第一方面提供了一种差异覆盖率测试方法,在一个实施例中,该方法包括:
响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;
将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志;
对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志;
根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
在一个实施例中,原始代码差异日志中包含至少一个代码行数标识,每个代码行数标识唯一地表示一行待测版本代码相比目标参照版本代码存在的差异代码。
在一个实施例中,对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志的步骤,包括:
分别获取原始代码差异日志包含的各个代码行数标识在待测版本代码中对应的差异代码;
按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行;
将原始代码差异日志包含的至少一个代码行数标识中,对应差异代码属于无效代码行的代码行数标识进行删除,得到修改后的代码差异日志。
在一个实施例中,按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行的步骤,包括:
检测各个代码行数标识对应的差异代码中是否包含预配置的关键字或者预配置的指定字符;
将包含预配置的关键字或者预配置的指定字符的差异代码确定为无效代码行。
在一个实施例中,将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志的步骤,包括:
将待测版本代码和目标参照版本代码进行对比,确定出待测版本代码相比目标参照版本代码存在的所有差异代码,该所有差异代码包括至少一行差异代码;
确定每行差异代码在待测版本代码中对应的类名和行数信息;
以字典形式将所有差异代码对应的类名和行数信息进行存储,得到原始代码差异日志。
在一个实施例中,根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试的步骤,包括:
根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;
使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
在一个实施例中,根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试的步骤之后,还包括:
根据进行差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
本发明根据第二方面提供了一种差异覆盖率测试装置,在一个实施例中,该装置包括:
版本代码获取模块,用于响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;
第一差异日志获得模块,用于将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志;
第二差异日志获得模块,用于对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志;
测试模块,用于根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
其中,原始代码差异日志中包含至少一个代码行数标识,每个代码行数标识唯一地表示一行待测版本代码相比目标参照版本代码存在的差异代码。
本发明根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
本发明根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
在本发明实施例中,当接收到测试指令时,获取待测软件的待测版本代码和目标参照版本代码;将待测版本代码和目标参照版本代码进行对比以获得原始代码差异日志,然后对原始代码差异日志进行无效代码行检测,并根据检测得到的检测结果对原始代码差异日志进行修改以得到修改后的代码差异日志,最后再根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。本发明实施例能够实现在测试差异代码之前将差异代码中的指定代码进行过滤,提高差异覆盖率测试的测试效率。
附图说明
图1为一个实施例中一种差异覆盖率测试方法的流程示意图;
图2为一个实施例中获得原始代码差异日志的流程示意图;
图3为一个实施例中获得修改后的代码差异日志的流程示意图;
图4为一个实施例中一种差异覆盖率测试装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本发明提供了一种差异覆盖率测试方法,在一个实施例中,差异覆盖率测试方法可以应用于本发明实施例提供的差异覆盖率测试装置,具体地,该差异覆盖率测试装置可以采用硬件或者软件的方式来实现。在一个实施方式中,该差异覆盖率测试装置可以是服务器(比如,测试服务器),进一步地,该服务器可以是集成了多个服务器(比如,中转服务器、网页web服务器以及研发管理RDM服务器等)功能的服务器,或者该服务器也可以是一个服务器系统,该服务器系统中可以包括:中转服务器、网页web服务器以及研发管理RDM服务器。
在一个实施例中,以本发明提供的差异覆盖率测试方法应用于测试服务器为例对该方法进行说明,如图1所示,该方法包括:
S110:响应于测试指令获取待测软件的待测版本代码和目标参照版本代码。
在本实施例中,测试服务器在接收到测试指令后,确定出获取与该测试指令对应的待测软件,然后获取与该待测软件的待测版本代码和目标参照版本代码。其中,测试指令可以来自测试人员的用户终端;待测软件是指要进行差异覆盖率测试的软件;待测版本代码可以是待测软件的最新版本的源代码,目标参照版本代码是待测软件的预设的基线版本的源代码,其中,基线版本可以是该最新版本的上一版本,当然,在其他应用场景中,基线版本也可以是该待测软件的非上一版本的其他一个或多个过往版本。
其中,待测版本代码和目标参照版本代码可以是开发人员编写好后上传到测试服务器中进行存储,从而当需要进行测试时,测试服务器可以快速从本地获得测试所需的待测版本代码和目标参照版本代码并进行后续的测试流程,提高测试效率。
S120:将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志。
在本实施例中,通常,软件的新版本的源代码是基于该软件的过往版本的源代码来编写的,因此,新版本的源代码与过往版本的源代码相比,会同时存在相同的代码以及不相同的代码(即差异代码),比如,开发人员为某软件开发了第一版本的源代码,后续可以基于该第一版本的源代码来开发第二版本的源代码,再之后还可以基于该第二版本的源代码来开发第三版本的源代码,当然,在某些场景中,也可以是基于该第一版本的源代码来开发第三版本的源代码。
测试服务器在获得待测版本代码和目标参照版本代码之后,可以使用对比工具(如diff工具)来对比待测版本代码和目标参照版本代码,从而获得代码差异日志(可以是一个diff日志文件),即该原始代码差异日志。具体地,通常待测版本代码和目标参照版本代码各自都包括多个类文件,在将两者进行对比时,会将待测版本代码包含的各个类文件和目标参照版本代码中与该类文件对应的类文件进行对比,从而可以对比出待测版本代码包含的各个类文件相比目标参照版本代码中的类文件有哪些差异代码以及各行差异代码所属的类文件以及在该类文件中所处的行数。比如,待测版本代码包含类文件A和类文件B,目标参照版本代码包含类文件A’和类文件B’,则在对比时,是将类文件A和类文件A’进行对比,以及将类文件B和类文件B’进行对比。
S130:对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志。
在本实施例中,测试服务器在对待测版本代码中的差异代码进行测试之前,需要将其中的包含的类似重要程度不高和/或在差异覆盖率报告中无需关注的代码(比如,空行({})、日志行(log.xx,printxx)等)进行过滤,从而在后续测试过程中不需要对这类代码进行测试,以提高整体的测试效率。
具体地,测试服务器对上一步骤获得的代码差异日志(即该原始代码差异日志)进行无效代码行检测,并根据检测得到的检测结果对该原始代码差异日志进行修改,得到修改后的代码差异日志。
S140:根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
在本实施例中,测试服务器在执行上一步骤从而获得修改后的代码差异日志之后,根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
在本发明实施例中,当测试服务器接收到测试指令时,获取待测软件的待测版本代码和目标参照版本代码;将待测版本代码和目标参照版本代码进行对比以获得原始代码差异日志,然后对原始代码差异日志进行无效代码行检测,并根据检测得到的检测结果对原始代码差异日志进行修改以得到修改后的代码差异日志,最后再根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试,从而能够实现在测试差异代码之前将差异代码中的指定代码进行过滤,提高差异覆盖率测试的测试效率。
更进一步地,根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试的步骤之后,还包括:根据进行差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
其中,测试服务器在进行差异覆盖率测试之后,可以根据进行差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
在一个实施例中,上述实施例中提到的将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志的步骤,在执行时可以具体包括如图2所示的步骤:
S121:将待测版本代码和目标参照版本代码进行对比,确定出待测版本代码相比目标参照版本代码存在的所有差异代码,该所有差异代码包括至少一行差异代码。
S122:确定每行差异代码在待测版本代码中对应的类名和行数信息。
S123:以字典形式将所有差异代码对应的类名和行数信息进行存储,得到原始代码差异日志。
在本实施例中,原始代码差异日志的存储结构可以采用字典数据结构。具体地,测试服务器可以通过diff工具来对比待测版本代码和目标参照版本代码,从而确定出待测版本代码相比目标参照版本代码存在的所有差异代码,之后提取每行差异代码在待测版本代码中对应的类名(即类文件的文件名)和行数信息(即代码行数值),并以字典的形式将所有差异代码对应的类名和行数信息进行存储得到原始代码差异日志。进一步地,根据实际场景需要可以将该原始代码差异日志等存储到本地或远程服务器。
在一种实施方式中,在存储时,可以根据包括有差异代码的类文件的文件名来设置键值对中的键(即key),将该类文件中包括的差异代码的代码行数值作为该键对应的值(即value)。字典中可以包括多个键值对(key-value),每个键值对中的值(value)可能包括一个或多个代码行数值(代码行数值即是该代码行数标识),一个键值对中的一个代码行数值可以唯一地表示一行待测版本代码相比目标参照版本代码存在的差异代码。所以一个键值对可以表示待测版本代码中一个类文件中有哪些行的代码发生了改变,或者说,一个类文件中的哪几行代码属于差异代码。其中,差异代码是指待测版本代码中相比目标参照版本代码发生改变了的代码。比如,基于上述例子,假设待测版本代码中的类文件B和目标参照版本代码中的B’类文件内容一致,待测版本代码中的类文件A包括abcd四行代码,而目标参照版本代码中的类文件A’包括abef四行代码,此时可以将类文件A和类文件A’这两个类文件进行对比,对比后可以确定类文件A中存在c和d这两行差异代码,其在类文件A中的位置分别是第三行和第四行,此时可以根据类文件A的文件名“A”来设置键值对的键,并根据差异代码的代码行数值来设置该键对应的值,如将键设置为“pack_A”,将“三”和“四”这两个代码行数值作为“pack_A”这个键(key)对应的值(value),并将其记录到代码差异日志中,示例性地,该键值对的形式可以表示为{pack_A,“3,4”}。
在一个实施例中,上述实施例中的对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志的步骤,在执行时可以具体包括如图3所示的步骤:
S131:分别获取原始代码差异日志包含的各个代码行数标识在待测版本代码中对应的差异代码。
其中,由于代码行数标识是以键值对的方式来存储,所以在获取原始代码差异日志包含的所有代码行数标识时,可以先根据各个存在差异代码的类文件的文件名来拼装出相应的键(key),然后再在本地或相关存有该代码差异日志的数据库中查询各个键对应的值(value),从而获得所有的代码行数标识。
S132:按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行。
在一个实施方式中,按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行的步骤,在实现时可以具体包括:检测各个代码行数标识对应的差异代码中是否包含预配置的关键字或者预配置的指定字符;将包含预配置的关键字或者预配置的指定字符的差异代码确定为无效代码行。
S133:将原始代码差异日志包含的至少一个代码行数标识中,对应差异代码属于无效代码行的代码行数标识进行删除,得到修改后的代码差异日志。
在本实施例中,测试服务器在对待测版本代码中的差异代码进行测试之前,需要将其中的包含的类似重要程度不高和/或在差异覆盖率报告中无需关注的代码(比如,空行({})、日志行(log.xx,printxx)等)进行过滤,从而在后续测试过程中不需要对这类代码进行测试,以提高整体的测试效率。
对于这些不想测试的、需要过滤的代码,可以针对这些代码的共性特征(比如,这些代码都包含某个或多个关键字或者指定字符)配置一个配置文件,当测试服务器要对原始代码差异日志进行无效代码行检测时,可以根据该配置文件中的配置信息对原始代码差异日志中包含的每个代码行数标识所对应的差异代码进行检测,如果差异代码中包含了预配置的关键字或者预配置的指定字符,则可以确定该差异代码为无效代码行,就将该差异代码所对应的代码行数标识从原始代码差异日志中删除。当检测出的所有无效代码行对应的代码行数标识都从原始代码差异日志中删除之后,即得到修改后的代码差异日志。
本实施例中,用于过滤无效代码行的关键字或者指定字符配置在配置文件中,而修改配置文件的操作简单便捷,测试人员可以随时对配置文件中的信息进行修改以满足其测试的需要,这样可以减少测试人员需要做的操作,可以间接地提高测试效率。
在一个实施例中,上述实施例中的根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试的步骤,包括:
根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;
使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
具体地,测试服务器根据该修改后的代码差异日志给待测版本代码中的每行差异代码设置待测标识,待测标识用于表示设置有待测标识的该行代码需要进行差异覆盖率测试。待测标识可以由测试人员进行设置,比如可以设置为“*”、“++”等字符,本实施例对此不进行限制。
其中,测试服务器可以根据修改后的代码差异日志文件中包含的各个代码行数标识来给待测版本代码设置待测标识。其中,可以找到待测版本代码中与该代码差异日志包括的各个键值对对应的类文件,然后基于各个键值对中的代码行数标识来确定相应类文件中需要设置待测标识的代码行,并为其设置待测标识。示例性地,假如该修改后的代码差异文件包括{pack_A,“3,4”}、和{pack_B,“1,2”}这两个键值对,那么可以先找到第一个键值对所对应的类文件A,然后为类文件A中的第3行和第4行代码设置待测标识,同理可以找到第二个键值对所对应的类文件B,然后为类文件B中的第1行和第2行代码设置待测标识。
进一步地,测试服务器中可以集成代码覆盖率测试工具,比如,EMMA、JaCoCo(JavaCode Coverage),然后通过集成的代码覆盖率工具来对该设置了待测标识的待测版本代码进行差异覆盖率测试。
基于相同的发明构思,本发明还提供了一种差异覆盖率测试装置。在一个实施例中,如图4所示,该差异覆盖率测试装置包括以下模块:
版本代码获取模块110,用于响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;
第一差异日志获得模块120,用于将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志;
第二差异日志获得模块130,用于对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志;
测试模块140,用于根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
其中,原始代码差异日志中包含至少一个代码行数标识,每个代码行数标识唯一地表示一行待测版本代码相比目标参照版本代码存在的差异代码。
在一个实施例中,第二差异日志获得模块,包括:
差异代码获取子模块,用于分别获取原始代码差异日志包含的各个代码行数标识在待测版本代码中对应的差异代码;
无效代码行检测子模块,用于按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行;
第二差异日志获得子模块,用于将原始代码差异日志包含的至少一个代码行数标识中,对应差异代码属于无效代码行的代码行数标识进行删除,得到修改后的代码差异日志。
在一个实施例中,无效代码行检测子模块,包括:
检测单元,用于检测各个代码行数标识对应的差异代码中是否包含预配置的关键字或者预配置的指定字符;
无效代码行确定单元,用于将包含预配置的关键字或者预配置的指定字符的差异代码确定为无效代码行。
在一个实施例中,第一差异日志获得模块,包括:
版本代码对比子模块,用于将待测版本代码和目标参照版本代码进行对比,确定出待测版本代码相比目标参照版本代码存在的所有差异代码,该所有差异代码包括至少一行差异代码;
差异代码相关信息确定子模块,用于确定每行差异代码在待测版本代码中对应的类名和行数信息;
第一差异日志获得子模块,用于以字典形式将所有差异代码对应的类名和行数信息进行存储,得到原始代码差异日志。
在一个实施例中,测试模块,包括:
待测标识设置子模块,用于根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;
测试子模块,用于使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
在一个实施例中,该差异覆盖率测试装置还包括差异覆盖率报告生成模块。其中,该差异覆盖率报告生成模块,用于根据进行差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
关于差异覆盖率测试装置的具体限定可以参见上文中对于差异覆盖率测试方法的限定,在此不再赘述。上述差异覆盖率测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待测版本代码和目标参照版本代码、生成的代码差异日志以及差异覆盖率报告等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种差异覆盖率测试方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志;对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志;根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
在一个实施例中,原始代码差异日志中包含至少一个代码行数标识,每个代码行数标识唯一地表示一行待测版本代码相比目标参照版本代码存在的差异代码。
在一个实施例中,处理器执行计算机程序,实现对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志的步骤,还实现以下步骤:
分别获取原始代码差异日志包含的各个代码行数标识在待测版本代码中对应的差异代码;按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行;将原始代码差异日志包含的至少一个代码行数标识中,对应差异代码属于无效代码行的代码行数标识进行删除,得到修改后的代码差异日志。
在一个实施例中,处理器执行计算机程序,实现按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行时,还实现以下步骤:
检测各个代码行数标识对应的差异代码中是否包含预配置的关键字或者预配置的指定字符;将包含预配置的关键字或者预配置的指定字符的差异代码确定为无效代码行。
在一个实施例中,处理器执行计算机程序,实现将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志时,还实现以下步骤:
将待测版本代码和目标参照版本代码进行对比,确定出待测版本代码相比目标参照版本代码存在的所有差异代码,该所有差异代码包括至少一行差异代码;确定每行差异代码在待测版本代码中对应的类名和行数信息;以字典形式将所有差异代码对应的类名和行数信息进行存储,得到原始代码差异日志。
在一个实施例中,处理器执行计算机程序,实现根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试时,还实现以下步骤:
根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
在一个实施例中,处理器执行计算机程序时,实现根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试的步骤之后,还实现以下步骤:
根据进行差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志;对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志;根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试。
在一个实施例中,原始代码差异日志中包含至少一个代码行数标识,每个代码行数标识唯一地表示一行待测版本代码相比目标参照版本代码存在的差异代码。
在一个实施例中,计算机程序被处理器执行,对原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对原始代码差异日志进行修改,得到修改后的代码差异日志的步骤,还实现以下步骤:
分别获取原始代码差异日志包含的各个代码行数标识在待测版本代码中对应的差异代码;按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行;将原始代码差异日志包含的至少一个代码行数标识中,对应差异代码属于无效代码行的代码行数标识进行删除,得到修改后的代码差异日志。
在一个实施例中,计算机程序被处理器执行,按照预配置的检测规则,检测各个代码行数标识对应的差异代码是否属于无效代码行时,还实现以下步骤:
检测各个代码行数标识对应的差异代码中是否包含预配置的关键字或者预配置的指定字符;将包含预配置的关键字或者预配置的指定字符的差异代码确定为无效代码行。
在一个实施例中,计算机程序被处理器执行,将待测版本代码和目标参照版本代码进行对比,以获得原始代码差异日志时,还实现以下步骤:
将待测版本代码和目标参照版本代码进行对比,确定出待测版本代码相比目标参照版本代码存在的所有差异代码,该所有差异代码包括至少一行差异代码;确定每行差异代码在待测版本代码中对应的类名和行数信息;以字典形式将所有差异代码对应的类名和行数信息进行存储,得到原始代码差异日志。
在一个实施例中,计算机程序被处理器执行,根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试时,还实现以下步骤:
根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
在一个实施例中,计算机程序被处理器执行,根据待测版本代码和修改后的代码差异日志进行差异覆盖率测试的步骤之后,还实现以下步骤:
根据进行差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (7)

1.一种差异覆盖率测试方法,其特征在于,所述方法包括:
响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;
将所述待测版本代码和所述目标参照版本代码进行对比,以获得原始代码差异日志;
对所述原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对所述原始代码差异日志进行修改,得到修改后的代码差异日志;
根据所述待测版本代码和所述修改后的代码差异日志进行差异覆盖率测试;
所述原始代码差异日志中包含至少一个代码行数标识,每个代码行数标识唯一地表示一行所述待测版本代码相比所述目标参照版本代码存在的差异代码;
所述对所述原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对所述原始代码差异日志进行修改,得到修改后的代码差异日志的步骤,包括:
分别获取所述原始代码差异日志包含的各个所述代码行数标识在所述待测版本代码中对应的差异代码;
按照预配置的检测规则,检测各个所述代码行数标识对应的差异代码是否属于无效代码行;所述无效代码行是指重要程度不高或在差异覆盖率报告中无需关注的代码,所述无效代码行包括空行和日志行;
将所述原始代码差异日志包含的至少一个代码行数标识中,对应差异代码属于无效代码行的代码行数标识进行删除,得到修改后的代码差异日志;
所述根据所述待测版本代码和所述修改后的代码差异日志进行差异覆盖率测试的步骤,包括:
根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;
使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
2.如权利要求1所述的差异覆盖率测试方法,其特征在于,所述按照预配置的检测规则,检测各个所述代码行数标识对应的差异代码是否属于无效代码行的步骤,包括:
检测各个所述代码行数标识对应的差异代码中是否包含预配置的关键字或者预配置的指定字符;
将包含预配置的关键字或者预配置的指定字符的差异代码确定为无效代码行。
3.如权利要求1所述的差异覆盖率测试方法,其特征在于,所述将所述待测版本代码和所述目标参照版本代码进行对比,以获得原始代码差异日志的步骤,包括:
将所述待测版本代码和所述目标参照版本代码进行对比,确定出所述待测版本代码相比所述目标参照版本代码存在的所有差异代码,所述所有差异代码包括至少一行差异代码;
确定每行差异代码在所述待测版本代码中对应的类名和行数信息;
以字典形式将所述待测版本代码中所有差异代码对应的类名和行数信息进行存储,得到原始代码差异日志。
4.如权利要求1所述的差异覆盖率测试方法,其特征在于,所述根据所述待测版本代码和所述修改后的代码差异日志进行差异覆盖率测试的步骤之后,还包括:
根据进行所述差异覆盖率测试所得到的测试结果生成差异覆盖率报告。
5.一种用于实现如权利要求1所述的差异覆盖率测试方法的装置,其特征在于,包括:
版本代码获取模块,用于响应于测试指令获取待测软件的待测版本代码和目标参照版本代码;
第一差异日志获得模块,用于将所述待测版本代码和所述目标参照版本代码进行对比,以获得原始代码差异日志;
第二差异日志获得模块,用于对所述原始代码差异日志进行无效代码行检测,根据检测得到的检测结果对所述原始代码差异日志进行修改,得到修改后的代码差异日志;
测试模块,用于根据所述待测版本代码和所述修改后的代码差异日志进行差异覆盖率测试;所述根据所述待测版本代码和所述修改后的代码差异日志进行差异覆盖率测试,包括:根据所述修改后的代码差异日志文件为所述待测版本代码中的每行差异代码设置待测标识;使用覆盖率测试工具对设置了待测标识的待测版本代码进行差异覆盖率测试。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
CN202011262117.9A 2020-11-12 2020-11-12 差异覆盖率测试方法、装置、计算机设备和存储介质 Active CN112363937B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011262117.9A CN112363937B (zh) 2020-11-12 2020-11-12 差异覆盖率测试方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011262117.9A CN112363937B (zh) 2020-11-12 2020-11-12 差异覆盖率测试方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN112363937A CN112363937A (zh) 2021-02-12
CN112363937B true CN112363937B (zh) 2024-05-03

Family

ID=74514491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011262117.9A Active CN112363937B (zh) 2020-11-12 2020-11-12 差异覆盖率测试方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN112363937B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112363936A (zh) * 2020-11-12 2021-02-12 广州品唯软件有限公司 差异覆盖率测试方法、装置、计算机设备和存储介质
CN112783795B (zh) * 2021-02-22 2024-02-09 中国工商银行股份有限公司 软件测试覆盖率检测方法及系统
CN114706785B (zh) * 2022-04-22 2024-03-26 山东云海国创云计算装备产业创新中心有限公司 一种覆盖率过滤文件生成方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528490A (en) * 1992-04-10 1996-06-18 Charles E. Hill & Associates, Inc. Electronic catalog system and method
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN106681725A (zh) * 2016-12-29 2017-05-17 广州华多网络科技有限公司 代码量统计方法及装置
CN107957956A (zh) * 2017-12-26 2018-04-24 广州品唯软件有限公司 软件差异覆盖率的测试方法、装置及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103246602B (zh) * 2012-02-14 2017-03-01 阿里巴巴集团控股有限公司 代码覆盖率确定方法及系统、代码覆盖检测方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528490A (en) * 1992-04-10 1996-06-18 Charles E. Hill & Associates, Inc. Electronic catalog system and method
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN106681725A (zh) * 2016-12-29 2017-05-17 广州华多网络科技有限公司 代码量统计方法及装置
CN107957956A (zh) * 2017-12-26 2018-04-24 广州品唯软件有限公司 软件差异覆盖率的测试方法、装置及可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岳鑫.自动化单元测试用例生成工具EvoSuite的性能探究.《现代计算机》.2020,(第15期),88-94. *

Also Published As

Publication number Publication date
CN112363937A (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
CN112363937B (zh) 差异覆盖率测试方法、装置、计算机设备和存储介质
CN108427613B (zh) 异常接口定位方法、装置、计算机设备和存储介质
CN110209652B (zh) 数据表迁移方法、装置、计算机设备和存储介质
CN109800258B (zh) 数据文件部署方法、装置、计算机设备及存储介质
US20160283357A1 (en) Call stack relationship acquiring method and apparatus
US8397104B2 (en) Creation of test plans
CN108694320B (zh) 一种多安全环境下敏感应用动态度量的方法及系统
CN109783457B (zh) Cgi接口管理方法、装置、计算机设备和存储介质
US11809406B2 (en) Event records in a log file
CN112363936A (zh) 差异覆盖率测试方法、装置、计算机设备和存储介质
CN112559365A (zh) 一种测试用例筛选方法、装置、计算机设备和存储介质
CN108399125B (zh) 自动化测试方法、装置、计算机设备和存储介质
CN113282513B (zh) 接口测试案例的生成方法、装置、计算机设备及存储介质
CN112395157A (zh) 审计日志的获取方法、装置、计算机设备和存储介质
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CN111124894B (zh) 代码覆盖率的处理方法、装置和计算机设备
CN112346981A (zh) 联调测试覆盖率检测方法及系统
CN116561003A (zh) 测试数据生成方法、装置、计算机设备和存储介质
CN110147313A (zh) 一种日志输出方法及装置
CN112417020B (zh) 业务扩展的实现方法、装置、计算机设备和存储介质
CN115705297A (zh) 代码调用检测方法、装置、计算机设备以及存储介质
CN114330278A (zh) 一种判断返回数据一致性的方法及设备
CN110162467B (zh) 软件测试方法、装置、计算机设备和可读存储介质
CN113656318A (zh) 软件版本测试方法、装置及计算机设备
CN112433943A (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
GR01 Patent grant
GR01 Patent grant