CN111831535A - 一种测试用例的代码定位方法、装置及计算机存储介质 - Google Patents

一种测试用例的代码定位方法、装置及计算机存储介质 Download PDF

Info

Publication number
CN111831535A
CN111831535A CN201910307119.6A CN201910307119A CN111831535A CN 111831535 A CN111831535 A CN 111831535A CN 201910307119 A CN201910307119 A CN 201910307119A CN 111831535 A CN111831535 A CN 111831535A
Authority
CN
China
Prior art keywords
code
file
test case
coverage
line
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
CN201910307119.6A
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.)
Beijing Century TAL Education Technology Co Ltd
Original Assignee
Beijing Century TAL Education 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 Beijing Century TAL Education Technology Co Ltd filed Critical Beijing Century TAL Education Technology Co Ltd
Priority to CN201910307119.6A priority Critical patent/CN111831535A/zh
Publication of CN111831535A publication Critical patent/CN111831535A/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/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/3688Test management for test execution, e.g. scheduling of test suites

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

一种测试用例的代码定位方法、装置及计算机存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种测试用例的代码定位方法、装置及计算机存储介质。
背景技术
软件测试是在规定的条件下对软件程序进行操作,以发现程序异常,衡量软件质量,并对其是否满足设计要求进行评估的过程。测试用例(Test Case)是在软件测试过程中为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。例如,以对某一软件程序的账号登录功能进行测试为例,测试人员可以针对使用账号密码信息进行登录,以及扫描二维码进行登录两种方式分别设置特定的测试用例,每一条测试用例用于测试一个特定的登录方式。
在现有技术中,当测试用例的执行发生异常时,测试人员需要从测试用例对应的代码文件中对所有可能发生异常的代码进行人工排查,以确定代码中的缺陷,因此对测试人员的代码分析能力要求较高,导致测试用例的代码定位准确性和效率较低。
发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种测试用例的代码定位方法、装置及计算机存储介质,用以克服现有技术中对测试用例的代码定位准确性和效率较低的问题。
本发明实施例提供一种一种测试用例的代码定位方法,包括:
通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集所述代码覆盖率工具生成的第一代码覆盖信息;
执行所述测试用例,并在所述测试用例执行完成后收集所述代码覆盖率工具生成的第二代码覆盖信息;
将所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行,其中,所述测试用例对应的覆盖代码行为所述第二代码覆盖信息较所述第一代码覆盖信息所增加的已测试代码行;
在所述代码文件中查找与所述测试用例对应的覆盖代码行相同的原生代码行,以获得所述测试用例在所述代码文件中对应的代码行位置信息。可选地,在本发明一具体实施例中,所述方法还包括:根据所述测试用例在所述代码文件中对应的代码行位置信息,获得所述测试用例在所述代码文件中对应的函数信息。
可选地,在本发明一具体实施例中,创建并存储所述测试用例的名称标识与所述代码文件的名称标识、所述测试用例在所述代码文件中对应的函数信息、所述测试用例在所述代码文件中对应的代码行位置信息之间的索引关系。
可选地,在本发明一具体实施例中,所述第一代码覆盖信息中包括第一版本的代码覆盖文件,所述第二代码覆盖信息中包括第二版本的代码覆盖文件;所述对所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行包括:
分别对所述第一版本的代码覆盖文件和所述第二版本的代码覆盖文件进行处理,获得所述第一版本的代码覆盖文件中的第一已测试代码行和所述第二版本的代码覆盖文件中的第二已测试代码行;
查找并删除所述第二已测试代码行中与所述第一已测试代码行相同的代码行,以获得所述测试用例对应的覆盖代码行。
可选地,在本发明一具体实施例中,所述获得所述第一版本的代码覆盖文件中的第一已测试代码行和所述第二版本的代码覆盖文件中的第二已测试代码行包括:
判断所述第二版本的代码覆盖文件的名称标识与所述第一版本的代码覆盖文件的名称标识是否相同;
如果是,则根据所述代码覆盖率工具对已测试代码行的标识规则,分别获得所述第一已测试代码行和所述第二已测试代码行。
根据本发明实施例的另一个方面,还提供了一种测试用例的代码定位装置,包括:
第一收集模块,用于通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集所述代码覆盖率工具生成的第一代码覆盖信息;
第二收集模块,用于执行所述测试用例,并在所述测试用例执行完成后收集所述代码覆盖率工具生成的第二代码覆盖信息;
对比分析模块,用于将所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行,其中,所述测试用例对应的覆盖代码行为所述第二代码覆盖信息较所述第一代码覆盖信息所增加的已测试代码行;
定位模块,用于在所述代码文件中查找与所述测试用例对应的覆盖代码行相同的原生代码行,以获得所述测试用例在所述代码文件中对应的代码行位置信息。
根据本发明实施例的另一个方面,还提供了一种计算机存储介质,所述计算机存储介质中存储有:
用于通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集所述代码覆盖率工具生成的第一代码覆盖信息的指令;
用于执行所述测试用例,并在所述测试用例执行完成后收集所述代码覆盖率工具生成的第二代码覆盖信息的指令;
用于将所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行,其中,所述测试用例对应的覆盖代码行为所述第二代码覆盖信息较所述第一代码覆盖信息所增加的已测试代码行的指令;
用于在所述代码文件中查找与所述测试用例对应的覆盖代码行相同的原生代码行,以获得所述测试用例在所述代码文件中对应的代码行位置信息的指令。
由以上技术方案可见,本发明的测试用例的代码定位方案,首先通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集代码覆盖率工具生成的第一代码覆盖信息;然后执行测试用例,并在测试用例执行完成后收集代码覆盖率工具生成的第二代码覆盖信息;将第二代码覆盖信息和第一代码覆盖信息进行比对分析,获得测试用例对应的覆盖代码行;从而在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,以获得测试用例在代码文件中对应的代码行位置信息。因此,本发明通过对比测试用例执行前后的代码覆盖文件,可获得测试用例对应的覆盖代码行,并在代码文件中定位与覆盖代码行相同的原生代码行,不仅能准确定位测试用例在代码文中对应的原生代码行位置,而且操作较为便捷,有助于提高测试人员对异常代码的排查效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获取其他的附图。
图1示出了本发明的实施例一的测试用例的代码定位方法的流程图。
图2示出了本发明的实施例二的测试用例的代码定位方法的流程图。
图3示出了本发明的实施例三的测试用例的代码定位装置的结构框图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获取的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
图1示出了本发明的实施例一的测试用例的代码定位方法的流程图。如图1,本发明的实施例的测试用例的代码定位方法包括以下步骤:
步骤S101,通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集代码覆盖率工具生成的第一代码覆盖信息。
本实施例中,代码覆盖是软件测试中的一种度量,用于描述代码文件中所包括的代码已被测试的比例和程度,所得比例称为代码覆盖率,因此代码覆盖率常被用于衡量测试质量。
代码覆盖率可以通过诸如jacoco的代码覆盖率工具进行测量,通常在进行代码覆盖率测试时,首先需要通过代码覆盖率工具对代码文件进行插桩编译,即在代码文件中的每一代码行中插入“探针”,当代码文件中某一代码行被执行后,该代码行中所插入的“探针”便会输出该代码行的执行信息。因此在测试过程中,代码覆盖率工具可不断收集并存储代码文件的不同代码行插入的“探针”所输出的代码行的执行信息,并自动或者由测试人员手动触发生成对应的代码覆盖文件。在代码覆盖文件中会对代码文件中的已测试代码行进行标识,从而通过解析代码覆盖文件,可以区分出代码文件中的已测试代码行和未测试代码行。
本实施例中,测试用例一般可包括手工测试用例、自动测试用例或两者的结合,因此测试用例的启动执行方式不限。例如,测试人员可通过点击某测试用例对应的执行控件,触发启动执行该测试用例。
此外,执行一个测试用例可对应于测试一个或者多个代码行,并且不同的代码行可属于不同的代码文件,即一个测试用例对应的多个覆盖代码行可能来自于一个的代码文件的原生代码行中,也可能来自于多个的代码文件中的原生代码行,一个代码文件中的多个原生代码行也可包括不同的测试用例的覆盖代码行。
例如,测试用例X可对应于测试代码文件a中的代码行1,测试代码文件b的代码行2和代码行3;测试用例Y可对应于测试代码文件a中的代码行4和代码行5,测试代码文件b中的代码行6;测试用例Z可对应于测试代码文件c中的代码行7-12等。
本实施例中,第一代码覆盖信息至少包括在启动执行测试用例之前,代码覆盖率工具所生成的代码覆盖文件,因此通过分析第一代码覆盖信息,可获得在启动执行测试用例之前代码文件中的已测试代码行,即确定代码文件中哪些代码行已经被测试。
本实施例中,由于整个测试过程可能是针对多个代码文件共同进行,因此代码覆盖率工具可根据测试的执行情况,针对多个代码文件生成一个代码覆盖文件,也可针对一个代码文件生成一个代码覆盖文件,即第一代码覆盖信息可以包括一个或者多个代码覆盖文件。
例如,当被测试的代码文件名称标识分别为“a”和“b”时,通过代码覆盖率工具jacoco生成的第一代码覆盖信息中可包括名称为“a.java.html”和“b.java.html”的两个代码覆盖文件。
步骤S102,执行测试用例,并在测试用例执行完成后收集代码覆盖率工具生成的第二代码覆盖信息。
本实施例中,由于第一代码覆盖信息和第二代码覆盖信息均是由同一代码覆盖率工具针对相同的代码文件进行测试后所获得,故第一代码覆盖信息和第二代码覆盖信息的名称标识以及实际所包括的文件个数均相同,并且随着测试的推进,代码文件中的已测试代码行还会不断增加,因此为了避免代码覆盖率工具在生成最新的代码覆盖信息时直接替换之前所生成的代码覆盖信息,无法执行本实施例的后续步骤,本方法还可包括:将第一代码覆盖信息和第二代码覆盖信息分别存储至不同的存储位置。
可选的,可按照设定的存储规则,将第一代码覆盖信息和第二代码覆盖信息分别存储至不同的集合和/或数据库中,从而在后续步骤中可按照设定的存储规则从集合或者数据库中获得第一代码覆盖信息和第二代码覆盖信息。
步骤S103,将第二代码覆盖信息和第一代码覆盖信息进行比对分析,获得测试用例对应的覆盖代码行,其中,测试用例对应的覆盖代码行为第二代码覆盖信息较第一代码覆盖信息所增加的已测试代码行。
本实施例中,为了提高测试效率,测试人员在编制测试用例时,通常会将不同的测试用例对应的代码行编制成完全不同的代码行。在执行测试用例的过程中,代码覆盖率工具会不断收集在测试用例对应的代码行中插入的“探针”所输出的代码行的执行信息,由于第一代码覆盖信息和第二代码覆盖信息分别包括在执行测试用例之前和之后所生成的代码覆盖文件,因此与第一代码覆盖信息相比,在第二代码覆盖信息中新增加的标识出的已测试代码行即为测试用例对应的覆盖代码行,即通过对第二代码覆盖信息和第一代码覆盖信息进行比对分析,可获得测试用例对应的覆盖代码行。
步骤S104,在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,以获得测试用例在代码文件中对应的代码行位置信息。
本实施例中,由于第一代码覆盖信息和第二代码覆盖信息中的全部代码行均是通过代码覆盖率工具对代码文件进行插桩编译获得的,因此可在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,代码文件中相同的原生代码行的位置信息即为测试用例在代码文件中对应的代码行位置信息。
由以上本发明实施例可见,本发明首先通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集代码覆盖率工具生成的第一代码覆盖信息;然后执行测试用例,并在测试用例执行完成后收集代码覆盖率工具生成的第二代码覆盖信息;将第二代码覆盖信息和第一代码覆盖信息进行比对分析,获得测试用例对应的覆盖代码行;从而在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,以获得测试用例在代码文件中对应的代码行位置信息。因此,本发明实施例通过对比测试用例执行前后的代码覆盖文件,可获得测试用例对应的覆盖代码行,并在代码文件中定位与覆盖代码行相同的原生代码行,不仅能准确定位测试用例在代码文中对应的原生代码行位置,而且操作较为便捷,有助于提高测试人员对异常代码的排查效率。
实施例二
图2示出了本发明的实施例二的测试用例的代码定位方法的流程图。如图2,本发明的实施例二的测试用例的代码定位方法包括以下步骤:
步骤S201,通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集代码覆盖率工具生成的第一代码覆盖信息。
本实施例中,为了便于多个测试终端对代码文件进行测试,可将编写好的一个或者多个代码文件存储至服务器中,并在服务器中通过代码覆盖率工具对代码文件进行插桩编译,以及执行测试相关的指令。从而通过服务器的IP地址和设定端口,任一测试终端均可从服务器的设定端口接收代码覆盖率工具在服务器中生成的代码覆盖信息。
步骤S202,执行测试用例,并在测试用例执行完成后收集代码覆盖率工具生成的第二代码覆盖信息。
本实施例中,第一代码覆盖信息中至少包括代码覆盖率工具在执行测试用例之前所生成的第一版本的代码覆盖文件,第二代码覆盖信息中至少包括代码覆盖率工具在完成执行测试用例之后所生成第二版本的代码覆盖文件。
步骤S203,分别对第一版本的代码覆盖文件和第二版本的代码覆盖文件进行处理,获得第一版本的代码覆盖文件中的第一已测试代码行和第二版本的代码覆盖文件中的第二已测试代码行。
本实施例中,由于在代码覆盖信息中会对代码文件中的已测试代码行进行标识,并且不同的代码覆盖率工具对已测试代码行的标识规则可能会有所不同,因此可根据代码覆盖率工具对已测试代码行的标识规则,分别查找并确定第一代码覆盖信息和第二代码覆盖信息中的已测试代码行。
例如,在jacoco生成的代码覆盖文件中,采用绿色标识已覆盖,红色标识未覆盖,黄色标识分支覆盖,即采用不同颜色标识代码行的已测试情况,因此可从代码覆盖文件中提取用绿色标识的代码行,作为已测试代码行。
本实施例中,由于第一代码覆盖信息和第二代码覆盖信息均是由同一代码覆盖率工具所生成,根据代码覆盖率工具对代码覆盖文件命名规则,第一版本的代码覆盖文件和第二版本的代码覆盖文件的名称标识可能相同。因此当第一代码覆盖信息和第二代码覆盖信息均包括多个代码覆盖文件时,为了提高比对效率,可先比对第一版本的代码覆盖文件的名称标识与第二版本的代码覆盖文件的名称标识是否相同,只有当名称标识相同时,才会进一步打开并比对第一版本的代码覆盖文件和第一版本的代码覆盖文件中的代码行。步骤S203还可包括以下子步骤:
子步骤S203a,判断第二版本的代码覆盖文件的名称标识与第一版本的代码覆盖文件的名称标识是否相同。
子步骤S203b,如果是,则根据代码覆盖率工具对已测试代码行的标识规则,分别获得第一已测试代码行和第二已测试代码行。
可选的,为了便于进行比对,可根据代码覆盖率工具对代码覆盖文件命名规则,可提取第一版本的代码覆盖文件和第二版本的代码覆盖文件的部分文件名称作为名称标识。
例如,代码覆盖率工具jacoco生成的代码覆盖文件的后缀为“.java.html”,可将第一版本的代码覆盖文件和第二版本的代码覆盖文件名称中“.java.html”之前的部分提取为名称标识,以判断第一版本的代码覆盖文件和第二版本的代码覆盖文件的名称标识是否相同。
步骤S204,查找并删除第二已测试代码行中与第一已测试代码行相同的代码行,以获得测试用例对应的覆盖代码行。
本实施例中,由于测试用例对应的覆盖代码行为第二代码覆盖信息较第一代码覆盖信息所增加的已测试代码行,因此可在第二代码覆盖信息中的已测试代码行中删除与第一代码覆盖信息的已测试代码行相同的全部代码行。其中,查找并删除相同代码行所采取的工具或者算法不限,并且在获得测试用例对应的覆盖代码行后,可按照设定的存储规则进行存储,便于后续步骤中进行调用。
例如,可按顺序逐行提取第一版本的代码覆盖文件和第二版本的代码覆盖文件中的已测试代码行,然后通过文本比对的方式,在第二版本的代码覆盖文件中查找第一版本的代码覆盖文件的已测试代码行完全相同的已测试代码行,并在第二版本的代码覆盖文件中进行删除。待第一版本的代码覆盖文件中的全部已测试代码行比对完成后,第二版本的代码覆盖文件中未被删除的已测试代码行即为测试用例对应的覆盖代码行。
步骤S205,在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,以获得测试用例在代码文件中对应的代码行位置信息。
步骤S206,根据测试用例在代码文件中对应的代码行位置信息,获得测试用例在代码文件中对应的函数信息。
本实施例中,由于代码文件中的代码行均有对应的函数,根据编写代码文件的程序设计语言书写规则,可查找并确定代码文件中任一代码行对应的函数。因此为了获得更为全面的测试用例对应的代码位置信息,除了代码行位置信息外,还可根据编写代码文件的程序设计语言书写规则,利用测试用例在代码文件中对应的代码行位置信息,查找并确定代码行所在的函数,从而获得测试用例在代码文件中对应的函数信息,其中函数信息至少用于标识函数的名称。
步骤S207,按照设定的显示规则,在代码文件中突出显示测试用例在代码文件中对应的代码行和/或测试用例在代码文件中对应的代码行所在的函数。
本实施例中,为了便于测试人员或者程序开发人员查看测试用例在代码文件中对应的代码行,可按照设定的显示规则对测试用例在代码文件中对应的代码行和/或测试用例在代码文件中对应的代码行所在的函数突出显示。突出显示的具体方式不限,例如,可以为不同颜色的文字或者背景色,也可以为不同字号或者字体,又或者是对代码行进行加粗,增加下划线、边框、使用选定的文字进行标识等。
可选的,为了降低数据的处理量,还可根据测试用例在代码文件中对应的代码行位置信息,生成用于突出显示测试用例对应的代码行和/或测试用例在代码文件中对应的代码行所在的函数的显示文件,并将显示文件存储至数据库中,以使得后续需要查看测试用例对应的代码行和/或代码行所在的函数时,可直接从数据库中获取显示文件进行展示。
本实施例中,为了便于测试人员或者程序开发人员后续查找测试用例对应的代码位置,可创建代码位置相关的信息与测试用例的名称标识之间的索引关系,并将索引关系存储至数据库中。其中,代码位置相关的信息可包括代码文件的名称标识、测试用例在代码文件中对应的函数信息、测试用例在代码文件中对应的代码行位置信息中的至少其一。
可选的,可创建并存储测试用例的名称标识与代码文件的名称标识、测试用例在代码文件中对应的函数信息、测试用例在代码文件中对应的代码行位置信息之间的索引关系。通过创建并存储索引关系,测试人员或者程序开发人员可按照不同层级查看测试用例对应的代码位置。
例如,在创建索引关系后,可在平台页面中展示多个测试用例的列表,列表中包括每个测试用例的名称标识。测试人员点击一个测试用例的名称标识后,可展开显示该测试用例对应的一个或者多个代码文件的名称标识;点击其中一个代码文件的名称标识后,可进一步展开显示测试用例在该代码文件中对应的一个或者多个函数的名称标识;点击其中一个函数的名称标识后,可展示该函数对应的全部代码行,并且突出显示测试用例对应的代码行。
由以上本发明实施例可见,本发明通过先比对第二版本的代码覆盖文件的名称标识与第一版本的代码覆盖文件的名称标识是否相同,只有当名称标识相同时,才会进一步比对第一版本的代码覆盖文件和第二版本的代码覆盖文件中的代码行,从而可降低数据处理量,提高比对效率;按照设定的显示规则,在代码文件中突出显示测试用例在代码文件中对应的原生代码行,便于测试人员或者程序开发人员进行查看;通过创建并存储测试用例的名称标识与代码文件的名称标识、测试用例在代码文件中对应的函数信息、测试用例在代码文件中对应的代码行位置信息之间的索引关系,便于测试人员或者程序开发人员按照不同层级查找测试用例的代码位置。
实施例三
图3示出了本发明的实施例三的测试用例的代码定位装置的结构框图。如图3,本发明的实施例三的测试用例的代码定位装置包括:
第一收集模块301,用于通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集代码覆盖率工具生成的第一代码覆盖信息。
第二收集模块302,用于执行测试用例,并在测试用例执行完成后收集代码覆盖率工具生成的第二代码覆盖信息。
对比分析模块303,用于将第二代码覆盖信息和第一代码覆盖信息进行比对分析,获得测试用例对应的覆盖代码行,其中,测试用例对应的覆盖代码行为第二代码覆盖信息较第一代码覆盖信息所增加的已测试代码行。
定位模块304,用于在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,以获得测试用例在代码文件中对应的代码行位置信息。
本实施例中,第一代码覆盖信息中包括第一版本的代码覆盖文件,第二代码覆盖信息中包括第二版本的代码覆盖文件;对比分析模块303包括:
文件处理单元303a,用于分别对第一版本的代码覆盖文件和第二版本的代码覆盖文件进行处理,获得第一版本的代码覆盖文件中的第一已测试代码行和第二版本的代码覆盖文件中的第二已测试代码行。
代码行删除单元303b,用于查找并删除第二已测试代码行中与第一已测试代码行相同的代码行,以获得测试用例对应的覆盖代码行。
本实施例中,比分析模块303还包括:
名称标识判断单元303c,用于判断第二版本的代码覆盖文件的名称标识与第一版本的代码覆盖文件的名称标识是否相同。
已测试代码行获取单元303d,用于如果第二版本的代码覆盖文件的名称标识与第一版本的代码覆盖文件的名称标识相同时,根据代码覆盖率工具对已测试代码行的标识规则,分别获得第一已测试代码行和第二已测试代码行。
本实施例中,还包括函数信息获取模块305,用于根据测试用例在代码文件中对应的代码行位置信息,获得测试用例在代码文件中对应的函数信息。
本实施例中,还包括索引创建模块306,用于创建并存储测试用例的名称标识与代码文件的名称标识、测试用例在代码文件中对应的函数信息、测试用例在代码文件中对应的代码行位置信息之间的索引关系。
本实施例中,还包括显示模块307,用于按照设定的显示规则,在代码文件中突出显示测试用例在代码文件中对应的代码行和/或测试用例在代码文件中对应的代码行所在的函数。
通过本实施例的测试用例的代码定位装置,可以实现前述多个方法实施例中相应的测试用例的代码定位方法,并具有相应方法实施例的有益效果,在此不再赘述。
实施例四
本发明还提供了一种计算机存储介质,计算机存储介质中存储有:
用于通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集代码覆盖率工具生成的第一代码覆盖信息的指令。
用于执行测试用例,并在测试用例执行完成后收集代码覆盖率工具生成的第二代码覆盖信息的指令。
用于将第二代码覆盖信息和第一代码覆盖信息进行比对分析,获得测试用例对应的覆盖代码行,其中,测试用例对应的覆盖代码行为第二代码覆盖信息较第一代码覆盖信息所增加的已测试代码行的指令。
用于在代码文件中查找与测试用例对应的覆盖代码行相同的原生代码行,以获得测试用例在代码文件中对应的代码行位置信息的指令。
本实施例中,还包括:用于根据测试用例在代码文件中对应的代码行位置信息,获得测试用例在代码文件中对应的函数信息的指令。
本实施例中,还包括:用于创建并存储测试用例的名称标识与代码文件的名称标识、测试用例在代码文件中对应的函数信息、测试用例在代码文件中对应的代码行位置信息之间的索引关系的指令。
本实施例中,第一代码覆盖信息中包括第一版本的代码覆盖文件,第二代码覆盖信息中包括第二版本的代码覆盖文件;还包括:
用于分别对第一版本的代码覆盖文件和第二版本的代码覆盖文件进行处理,获得第一版本的代码覆盖文件中的第一已测试代码行和第二版本的代码覆盖文件中的第二已测试代码行的指令。
用于查找并删除第二已测试代码行中与第一已测试代码行相同的代码行,以获得测试用例对应的覆盖代码行的指令。
本实施例中,还包括:用于判断第二代码覆盖文件的名称标识与第一代码覆盖文件的名称标识是否相同的指令。
用于如果是,则根据代码覆盖率工具对已测试代码行的标识规则,分别获得第一已测试代码行和第二已测试代码行的指令。
本实施例中,还包括:用于按照设定的显示规则,在代码文件中突出显示测试用例在代码文件中对应的代码行和/或测试用例在代码文件中对应的代码行所在的函数的指令。
通过本实施例的计算机存储介质,可以实现前述多个方法实施例中相应的测试用例的代码定位方法,并具有相应方法实施例的有益效果,在此不再赘述。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的测试用例的代码定位方法。此外,当通用计算机访问用于实现在此示出的测试用例的代码定位方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的测试用例的代码定位方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。

Claims (10)

1.一种测试用例的代码定位方法,其特征在于,包括:
通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集所述代码覆盖率工具生成的第一代码覆盖信息;
执行所述测试用例,并在所述测试用例执行完成后收集所述代码覆盖率工具生成的第二代码覆盖信息;
将所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行,其中,所述测试用例对应的覆盖代码行为所述第二代码覆盖信息较所述第一代码覆盖信息所增加的已测试代码行;
在所述代码文件中查找与所述测试用例对应的覆盖代码行相同的原生代码行,以获得所述测试用例在所述代码文件中对应的代码行位置信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述测试用例在所述代码文件中对应的代码行位置信息,获得所述测试用例在所述代码文件中对应的函数信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
创建并存储所述测试用例的名称标识与所述代码文件的名称标识、所述测试用例在所述代码文件中对应的函数信息、所述测试用例在所述代码文件中对应的代码行位置信息之间的索引关系。
4.根据权利要求1所述的方法,其特征在于,所述第一代码覆盖信息中包括第一版本的代码覆盖文件,所述第二代码覆盖信息中包括第二版本的代码覆盖文件;所述对所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行包括:
分别对所述第一版本的代码覆盖文件和所述第二版本的代码覆盖文件进行处理,获得所述第一版本的代码覆盖文件中的第一已测试代码行和所述第二版本的代码覆盖文件中的第二已测试代码行;
查找并删除所述第二已测试代码行中与所述第一已测试代码行相同的代码行,以获得所述测试用例对应的覆盖代码行。
5.根据权利要求4所述的方法,其特征在于,所述获得所述第一版本的代码覆盖文件中的第一已测试代码行和所述第二版本的代码覆盖文件中的第二已测试代码行包括:
判断所述第二版本的代码覆盖文件的名称标识与所述第一版本的代码覆盖文件的名称标识是否相同;
如果是,则根据所述代码覆盖率工具对已测试代码行的标识规则,分别获得所述第一已测试代码行和所述第二已测试代码行。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照设定的显示规则,在所述代码文件中突出显示所述测试用例在所述代码文件中对应的代码行和/或所述测试用例在所述代码文件中对应的代码行所在的函数。
7.一种测试用例的代码定位装置,其特征在于,包括:
第一收集模块,用于通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集所述代码覆盖率工具生成的第一代码覆盖信息;
第二收集模块,用于执行所述测试用例,并在所述测试用例执行完成后收集所述代码覆盖率工具生成的第二代码覆盖信息;
对比分析模块,用于将所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行,其中,所述测试用例对应的覆盖代码行为所述第二代码覆盖信息较所述第一代码覆盖信息所增加的已测试代码行;
定位模块,用于在所述代码文件中查找与所述测试用例对应的覆盖代码行相同的原生代码行,以获得所述测试用例在所述代码文件中对应的代码行位置信息。
8.根据权利要求7所述的装置,其特征在于,所述第一代码覆盖信息中包括第一版本的代码覆盖文件,所述第二代码覆盖信息中包括第二版本的代码覆盖文件;所述对比分析模块包括:
文件处理单元,用于分别对所述第一版本的代码覆盖文件和所述第二版本的代码覆盖文件进行处理,获得所述第一版本的代码覆盖文件中的第一已测试代码行和所述第二版本的代码覆盖文件中的第二已测试代码行;
代码行删除单元,用于查找并删除所述第二已测试代码行中与所述第一已测试代码行相同的代码行,以获得所述测试用例对应的覆盖代码行。
9.根据权利要求7所述的装置,其特征在于,所述比分析模块还包括:
名称标识判断单元,用于判断所述第二代码覆盖文件的名称标识与所述第一代码覆盖文件的名称标识是否相同;
已测试代码行获取单元,用于如果第二代码覆盖文件的名称标识与所述第一代码覆盖文件的名称标识相同时,根据所述代码覆盖率工具对已测试代码行的标识规则,分别获得所述第一已测试代码行和所述第二已测试代码行。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有:
用于通过代码覆盖率工具对代码文件进行插桩编译,并在测试用例执行之前收集所述代码覆盖率工具生成的第一代码覆盖信息的指令;
用于执行所述测试用例,并在所述测试用例执行完成后收集所述代码覆盖率工具生成的第二代码覆盖信息的指令;
用于将所述第二代码覆盖信息和所述第一代码覆盖信息进行比对分析,获得所述测试用例对应的覆盖代码行,其中,所述测试用例对应的覆盖代码行为所述第二代码覆盖信息较所述第一代码覆盖信息所增加的已测试代码行的指令;
用于在所述代码文件中查找与所述测试用例对应的覆盖代码行相同的原生代码行,以获得所述测试用例在所述代码文件中对应的代码行位置信息的指令。
CN201910307119.6A 2019-04-17 2019-04-17 一种测试用例的代码定位方法、装置及计算机存储介质 Pending CN111831535A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910307119.6A CN111831535A (zh) 2019-04-17 2019-04-17 一种测试用例的代码定位方法、装置及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910307119.6A CN111831535A (zh) 2019-04-17 2019-04-17 一种测试用例的代码定位方法、装置及计算机存储介质

Publications (1)

Publication Number Publication Date
CN111831535A true CN111831535A (zh) 2020-10-27

Family

ID=72915487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910307119.6A Pending CN111831535A (zh) 2019-04-17 2019-04-17 一种测试用例的代码定位方法、装置及计算机存储介质

Country Status (1)

Country Link
CN (1) CN111831535A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631926A (zh) * 2020-12-29 2021-04-09 平安银行股份有限公司 代码测试覆盖率显示方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160179659A1 (en) * 2014-12-17 2016-06-23 International Business Machines Corporation Techniques for automatically generating testcases
CN108491321A (zh) * 2018-03-06 2018-09-04 平安科技(深圳)有限公司 测试用例范围确定方法、装置及存储介质
CN109388566A (zh) * 2018-09-27 2019-02-26 北京城市网邻信息技术有限公司 一种代码覆盖率分析方法、装置、设备及存储介质
CN109460357A (zh) * 2018-10-19 2019-03-12 北京新能源汽车股份有限公司 一种代码覆盖率的测试方法、装置和设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160179659A1 (en) * 2014-12-17 2016-06-23 International Business Machines Corporation Techniques for automatically generating testcases
CN108491321A (zh) * 2018-03-06 2018-09-04 平安科技(深圳)有限公司 测试用例范围确定方法、装置及存储介质
CN109388566A (zh) * 2018-09-27 2019-02-26 北京城市网邻信息技术有限公司 一种代码覆盖率分析方法、装置、设备及存储介质
CN109460357A (zh) * 2018-10-19 2019-03-12 北京新能源汽车股份有限公司 一种代码覆盖率的测试方法、装置和设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631926A (zh) * 2020-12-29 2021-04-09 平安银行股份有限公司 代码测试覆盖率显示方法、装置、计算机设备及存储介质
CN112631926B (zh) * 2020-12-29 2024-06-25 平安银行股份有限公司 代码测试覆盖率显示方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN107908541B (zh) 接口测试方法、装置、计算机设备及存储介质
CN110413506A (zh) 测试用例推荐方法、装置、设备及存储介质
US8397104B2 (en) Creation of test plans
CN108446221A (zh) 系统测试方法、装置、计算机设备和存储介质
CN105068925A (zh) 软件安全缺陷发现系统
US20090100299A1 (en) Methods and Apparatus for Patternizing Device Responses
CN111290950B (zh) 程序测试中测试点获取方法、装置、存储介质和设备
CN105760299A (zh) 一种基于智能变电站全自动脚本测试方法
CN108459954A (zh) 应用程序漏洞检测方法和装置
CN107080945B (zh) 测试游戏中人工智能行为的方法、装置及电子设备
CN113342685A (zh) 精准测试方法、装置、计算机设备和存储介质
CN106557419B (zh) 程序的测试方法及装置
CN106294109B (zh) 获取缺陷代码的方法及装置
CN111831535A (zh) 一种测试用例的代码定位方法、装置及计算机存储介质
CN111694735B (zh) 一种页面性能测试方法、装置、电子设备及存储介质
CN112612706A (zh) 自动化测试方法、计算机设备及存储介质
CN112153375A (zh) 基于视频信息的前端性能测试方法、装置、设备及介质
CN111400171A (zh) 一种接口测试方法、系统、装置及可读存储介质
CN114490413A (zh) 测试数据的准备方法及装置、存储介质和电子设备
CN112235145B (zh) 流量状态检测方法和装置
CN114490906A (zh) 电子地图中地区边界线绘制是否合规的审查方法及装置
CN113656318A (zh) 软件版本测试方法、装置及计算机设备
CN111666471A (zh) 信息采集方法、装置、计算机设备及存储介质
CN111338956A (zh) 一种自动化的压测方法、装置、设备和存储介质
CN115344438A (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: 20201027