CN113326190A - 代码覆盖率的确定方法、装置和电子设备 - Google Patents
代码覆盖率的确定方法、装置和电子设备 Download PDFInfo
- Publication number
- CN113326190A CN113326190A CN202110587216.2A CN202110587216A CN113326190A CN 113326190 A CN113326190 A CN 113326190A CN 202110587216 A CN202110587216 A CN 202110587216A CN 113326190 A CN113326190 A CN 113326190A
- Authority
- CN
- China
- Prior art keywords
- tested
- code
- determining
- coverage rate
- target
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012360 testing method Methods 0.000 claims abstract description 98
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 2
- 239000000126 substance Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 9
- 238000013522 software testing Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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
技术领域
本公开涉及计算机技术领域,尤其涉及一种代码覆盖率的确定方法、装置和电子设备,具体可用于软件测试技术领域。
背景技术
获取和分析代码覆盖率是确保测试质量的重要手段。代码覆盖率描述的是代码被测试的比例和程度。只是编写测试用例测试代码,而不检测哪些代码被测试过,哪些代码未被测试过,这样很容易形成测试漏洞,因此,通过代码覆盖率可以进一步辅助测试用例。
现有技术中,在通过代码覆盖率工具,确定代码覆盖率时,以Android编程为例,Android编程可能用到Java语言、Kotlin语言、以及C语言三种编码语言,由于现有的代码覆盖率工具,在使用时受限于编码语言,每一种代码覆盖率工具仅适应于一种编码语言,因此,在Android编程中,可能要使用三种代码覆盖率工具,才能获取Android编程的代码覆盖率结果。
鉴于现有的覆盖率工具使用时受限于编码语言,每一种代码覆盖率工具仅适应于一种编码语言,其通用性较差,因此,如何提供一种通用的覆盖率测试工具,用于确定代码覆盖率是本领域技术人员亟待解决的问题。
发明内容
本公开提供了一种代码覆盖率的确定方法、装置和电子设备,在确定代码覆盖率时,其确定过程不再受限于编码语言,通用性较好,提高了覆盖率测试工具的通用性。
根据本公开的第一方面,提供了一种代码覆盖率的确定方法,该代码覆盖率的确定方法可以包括:
确定待测试对象,所述待测试对象处于代码调试模式。
根据所述待测试对象对应的目标编码类型,在覆盖率测试工具中确定所述目标编码类型对应的目标代码调试协议;其中,所述覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,且所述多种编码类型包括所述目标编码类型。
基于所述目标代码调试协议获取所述待测试对象的运行数据。
根据所述运行数据,确定所述待测试对象对应的代码覆盖率。
根据本公开的第二方面,提供了一种代码覆盖率的确定装置,该代码覆盖率的确定装置可以包括:
第一确定单元,用于确定待测试对象,所述待测试对象处于代码调试模式。
处理单元,用于根据所述待测试对象对应的目标编码类型,在覆盖率测试工具中确定所述目标编码类型对应的目标代码调试协议;其中,所述覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,且所述多种编码类型包括所述目标编码类型。
第一获取单元,用于基于所述目标代码调试协议获取所述待测试对象的运行数据。
第二确定单元,用于根据所述运行数据,确定所述待测试对象对应的代码覆盖率。
根据本公开的第三方面,提供了一种电子设备,该电子设备可以包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面所述的代码覆盖率的确定方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述第一方面所述的代码覆盖率的确定方法。
根据本公开的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序,所述计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得电子设备执行第一方面所述的代码覆盖率的确定方法。
根据本公开的技术方案,在确定代码覆盖率时,先确定处于代码调试模式的待测试对象,由于覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,因此,针对多种编码类型中任一种编码类型对应的待测试对象,可以根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议;并基于目标代码调试协议获取待测试对象的运行数据,再根据运行数据,确定测试对象对应的代码覆盖率,其代码覆盖率的确定过程不再受限于编码语言,解决了一种代码覆盖率工具仅适应于一种编码语言的问题,通用性较好,提高了覆盖率测试工具的通用性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例提供的代码覆盖率的确定方法的流程示意图;
图2是根据本公开第二实施例提供的基于目标代码调试协议获取待测试对象的运行数据的方法的流程示意图;
图3是本公开实施例提供的一种获取待测试对象的运行数据的框架示意图;
图4是根据本公开第三实施例提供的确定待测试对象对应的代码覆盖率的方法的流程示意图;
图5是根据本公开第四实施例提供的代码覆盖率的确定装置的结构示意图;
图6是根据本公开实施例提供的一种电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。在本公开的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。
本公开实施例提供的代码覆盖率的确定方法,可以应用于代码测试的场景中。例如,在新增代码后,对新增代码进行测试的场景中。在代码测试场景中,不仅要通过测试用例,对代码进行测试,而且还需要通过代码覆盖率进一步辅助测试用例,否则,很容易形成测试漏洞。
现有技术中,在通过代码覆盖率工具,确定代码覆盖率时,鉴于现有的覆盖率工具使用时受限于编码语言,每一种代码覆盖率工具仅适应于一种编码语言,其通用性较差,因此,如何提供一种通用的覆盖率测试工具,用于确定代码覆盖率是本领域技术人员亟待解决的问题。
为了提供一种通用的代码覆盖率的覆盖率测试工具,使其在确定代码覆盖率时,不再受限于编码语言,从而提高覆盖率测试工具的通用性,考虑到每种编码语言都具有debug功能,因此,可以将其debug功能作为切入点,获取每一种编码语言对应的debug协议,这样就可以基于编码语言对应的debug协议,获取待检测应用的运行数据,并根据运行数据进一步确定待检测应用对应的代码覆盖率。
基于上述技术构思,本公开实施例提供一种代码覆盖率的确定方法,下面,将通过具体的实施例对本公开提供的代码覆盖率的确定方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
实施例一
图1是根据本公开第一实施例提供的代码覆盖率的确定方法的流程示意图,该代码覆盖率的确定方法可以由软件和/或硬件装置执行,例如,该硬件装置可以为覆盖率测试工具所属的测试平台。示例的,请参见图1所示,该代码覆盖率的确定方法可以包括:
S101、确定待测试对象,待测试对象处于代码调试模式。
示例的,待测试对象可以为待测试的服务和/或应用。示例的,待测试的服务可以为java服务或者web服务鞥;待测试的服务可以为例如安卓应用或者IOS应用;具体可以根据实际需要进行设置,在此,对于待测试对象的类型,本公开实施例不做具体限制。
示例的,在获取待测试对象时,可以接收输入的测试信息;其中,测试信息用于指示待测试对象的起始位置和终止位置;并根据待测试对象的起始位置和终止位置,在待测试对象中打断点,从而根据起始位置和终止位置,确定待测试对象。
可以理解的是,在一种方式下,测试信息可以包括待测试对象的起始行的标识和终止行的标识;或者,在另一种方式下,测试信息也可以包括待测试对象的起始行的标识和待测试的总行数。这两种方式下的测试信息均可以指示待测试对象的起始位置和终止位置,因此,测试平台可以根据起始位置和终止位置,确定出待测试对象。
可以理解的是,在确定待测试对象的起始位置和终止位置时,本公开实施例只是以这两种方式为例,对测试信息进行说明,但并不代表本公开实施例仅局限于此。
此外,之所以控制待测试对象处于代码调试模式,原因在于:只有在待测试对象处于代码调试模式时,测试平台才可以基于各编码类型对应的代码调试功能,将各编码类型对应的代码调试功能作为切入点,获取各编码类型对应的代码调试协议;这样在确定待测试对象时,才能根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议,并根据目标代码调试协议获取待测试对象的运行数据,即执行下述S102和S103:
S102、根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议;其中,覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,多种编码类型包括目标编码类型。
示例的,覆盖率测试工具中包括的各编码类型对应的代码调试协议,可以通过编码类型与代码调试协议之间的映射关系进行维护,每一种编码类型在覆盖率测试工具中均对应一个代码调试客户端,不同编码类型对应的代码调试客户端不同。
测试平台在获取到待测试对象后,可以根据待测试对象先确定待测试对象对应的编码类型,即采用哪种编码语言编码的,可记为目标编码类型,并在确定出待测试对象对应的目标编码类型后,鉴于覆盖率测试工具中包括了多种编码类型中各编码类型对应的代码调试协议,因此,测试平台可以通过维护的编码类型与代码调试协议之间的映射关系,确定目标编码类型对应的代码调试协议,可记为目标代码调试协议,这样在确定目标编码类型对应的目标代码调试协议后,就可以进一步基于目标代码调试协议获取待测试对象的运行数据,即执行下述S103:
S103、基于目标代码调试协议获取待测试对象的运行数据。
示例的,运行数据可以包括已测试的代码行数,也可以包括已测试的代码行数的标识、代码的参数等信息,具体可以根据实际需要进行设置。需要说明的是,在本公开实施例中,当运行数据包括代码的参数时,通过参数信息可以分析出if分支内的运行情况,这是大部分覆盖率工具所不具有的,进一步提高了覆盖率测试工具的测试能力。
S104、根据运行数据,确定待测试对象对应的代码覆盖率。
可以看出,本公开实施例中,在确定代码覆盖率时,先确定处于代码调试模式的待测试对象,由于覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,因此,针对多种编码类型中任一种编码类型对应的待测试对象,可以根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议;并基于目标代码调试协议获取待测试对象的运行数据,再根据运行数据,确定测试对象对应的代码覆盖率,其代码覆盖率的确定过程不再受限于编码语言,解决了一种代码覆盖率工具仅适应于一种编码语言的问题,通用性较好,提高了覆盖率测试工具的通用性。
可以理解的是,在确定出待测试对象对应的代码覆盖率后,可以向用户输出代码覆盖率,以供用户查看测试结果。此外,在向用户输出代码覆盖率的同时,还可以通过颜色渲染的方式,在待测试对象中标注已测试的代码,这样使得用户可以更直观地查看测试结果,从而在一定程度上提高了用户体验。
基于上述图1所示的实施例,可以理解的是,在根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议之前,可以先构建该覆盖率测试工具,这样才能根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议。
示例的,在构建覆盖率测试工具时,鉴于每种编码语言都具有代码调试功能,因此,可以借助于各编码类型对应的代码调试功能,将各编码类型对应的代码调试功能作为切入点,预先获取各编码类型对应的代码调试协议,并在获取到各编码类型对应的代码调试协议后,就可以基于各编码类型对应的代码调试协议,构建覆盖率测试工具,这样在构建得到覆盖率测试工具后,由于覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,因此,针对多种编码类型中任一种编码类型对应的测试对象,通过该覆盖率测试工具均可以获取到其编码类型对应的测试对象的运行数据,并根据运行数据,确定测试对象对应的代码覆盖率,其代码覆盖率的确定过程不再受限于编码语言,通用性较好,提高了覆盖率测试工具的通用性。
基于上述图1所示的实施例,在上述S103中,基于目标代码调试协议获取待测试对象的运行数据时,可以先与待测试对象建立网络连接,并在连接建立后,基于目标代码调试协议获取待测试对象的运行数据。下面,将通过下述图2所示的实施例二,对如何基于目标代码调试协议获取待测试对象的运行数据进行详细的描述。
实施例二
图2是根据本公开第二实施例提供的基于目标代码调试协议获取待测试对象的运行数据的方法的流程示意图,该基于目标代码调试协议获取待测试对象的运行数据的方法同样可以由软件和/或硬件装置执行。示例的,请参见图2所示,该基于目标代码调试协议获取待测试对象的运行数据的方法可以包括:
S201、获取待测试对象的地址信息。
其中,地址信息也可以为待测试对象的代码调试功能模块的网际协议(InternetProtocol,IP)地址。
示例的,在获取待测试对象的地址信息时,可以接收输入的地址信息,从而获取到待测试对象的地址信息。可以理解的是,在通过接收输入的方式获取待测试对象的地址信息时,该地址信息可以与上述S101中描述的测试信息可以一并接收,也可以分开接收,具体可以根据实际需要进行设置,在此,本公开实施例不做具体限制。
示例的,除了接收待测试对象的地址信息之外,还可以接收输入的待测试对象的端口号,使得测试平台后续可以基于端口号与待测试对象进行数据交互。
在获取到待测试分对象的地址信息之后,就可以根据该待测试对象的地址信息与待测试对象建立网络连接。
S202、根据地址信息与待测试对象建立网络连接。
示例的,在根据地址信息与待测试对象建立网络连接时,可以先根据地址信息找到对应的待测试对象,并在找到待测试对象后,向待测试对象发送连接请求消息;待测试对象确认可与测试平台建立网络连接后,向测试平台发送连接响应消息;对应的测试平台接收到待测试对象发送的连接响应消息后,与待测试对象建立网络连接。
需要说明的是,由于地址信息为待测试对象的代码调试功能模块的IP地址,因此,在本公开实施例中,与待测试对象建立网络连接,其实质是与待测试对象的代码调试功能模块建立连接。
在根据地址信息与待测试对象建立网络连接后,就可以在连接态下,基于目标代码调试协议获取待测试对象的运行数据,即执行下述S203:
S203、在连接态下,基于目标代码调试协议获取待测试对象的运行数据。
示例的,结合上述S201中的描述,若除了接收待测试对象的地址信息之外,还接收到了待测试对象的端口号,则测试平台可以先基于该端口号,确定待测试对象的端口,并基于目标代码调试协议,通过待测试对象的端口获取待测试对象的运行数据。
示例的,可参见图3所示,图3是本公开实施例提供的一种获取待测试对象的运行数据的框架示意图,假设待测试对象包括java服务、安卓应用以及其它对象,则可以先控制启动java服务、安卓应用以及其它对象的代码调试模式,使得java服务、安卓应用以及其它对象均处于代码调试模式,则待测试对象对应的目标编码类型可以包括java服务对应的编码类型、安卓应用对应的编码类型以及其它对象对应的编码类型,鉴于覆盖率测试工具中包括java服务对应的编码类型、安卓应用对应的编码类型以及其它对象对应的编码类型,因此,可以根据java服务对应的编码类型,在覆盖率测试工具中确定java服务对应的编码类型,对应的代码调试协议;根据安卓应用对应的编码类型,在覆盖率测试工具中确定安卓应用对应的编码类型,对应的代码调试协议;以及根据其它对象对应的编码类型,在覆盖率测试工具中确定其它对象对应的编码类型,对应的代码调试协议,并在覆盖率测试工具分别与java服务、安卓应用以及其它对象建立socket连接后,基于各自对应的代码调试协议获取其对应的运行数据,从而根据各自对应的运行数据确定其对应的代码覆盖率。
可以看出,本公开实施例中,在基于目标代码调试协议获取待测试对象的运行数据时,可以先获取待测试对象的地址信息,并根据地址信息与待测试对象建立网络连接,这样在于待测试对象建立网络连接后,就可以基于目标代码调试协议获取待测试对象的运行数据,实现了运行数据的获取,同时,也为确定测试对象对应的代码覆盖率提供依据。
基于上述图1或2所示的实施例,在基于目标代码调试协议获取待测试对象的运行数据之后,就可以根据运行数据,确定待测试对象对应的代码覆盖率。为了便于理解在本公开实施例中,如何根据运行数据,确定待测试对象对应的代码覆盖率,下面,将通过下述图4所示的实施例三,对如何根据运行数据,确定待测试对象对应的代码覆盖率进行详细的描述。
实施例三
图4是根据本公开第三实施例提供的确定待测试对象对应的代码覆盖率的方法的流程示意图,该确定待测试对象对应的代码覆盖率的方法同样可以由软件和/或硬件装置执行。示例的,请参见图4所示,该确定待测试对象对应的代码覆盖率的方法可以包括:
S401、将运行数据与待测试对象进行匹配,确定运行数据中已测试代码的行数。
示例的,运行数据可以包括已测试的代码行数,也可以包括已测试的代码行数的标识、代码的参数等信息,具体可以根据实际需要进行设置。
在获取到运行数据后,可以对运行数据进行解析分析,获取待检测对象在运行时的轨迹,包括变量信息等,并根据运行时的轨迹确定运行数据中已测试代码的行数,这样就可以根据已测试代码的行数与待测试对象的行数,确定待测试对象对应的代码覆盖率,即执行下述S402:
S402、根据已测试代码的行数与待测试对象的行数,确定待测试对象对应的代码覆盖率。
示例的,在根据已测试代码的行数与待测试对象的行数,确定待测试对象对应的代码覆盖率时,可以先确定已测试代码的行数与待测试对象的行数之间的比值;根据比值确定待测试对象对应的代码覆盖率。
示例的,在根据比值确定待测试对象对应的代码覆盖率时,可以直接将比值确定为待测试对象对应的代码覆盖率,也可以对比值做一定的处理,例如,四舍五入或者取整处理等,并将处理结果确定为待测试对象对应的代码覆盖率,具体可以根据实际需要进行设置。
可以看出,在确定代码覆盖率时,可以先将运行数据与待测试对象进行匹配,确定运行数据中已测试代码的行数,并根据已测试代码的行数与待测试对象的行数,确定待测试对象对应的代码覆盖率,实现了代码覆盖率的确定,且其代码覆盖率的确定过程不再受限于编码语言,通用性较好,提高了覆盖率测试工具的通用性。
基于上述实施例,当待测试对象中包括条件分支代码,且运行数据中包括代码的参数时,则确定运行数据中已测试代码的行数后,还可以进一步获取已测试代码中参数的取值,并根据已测试代码中参数的取值,确定条件分支代码的运行情况;其中,运行情况包括运行正确或者运行错误,这是大部分覆盖率工具所不具有的,进一步提高了覆盖率测试工具的测试能力。
示例的,条件分支代码的类型可以为if(a||b){执行};或者,其它更复杂的多条件判断,具体可以根据实际需要进行设置,通过本公开实施例提供的技术方案,均可以根据已测试代码中参数的取值,确定条件分支代码的运行情况。
假设在对待测试对象进行测试时,先运行待测试对象的APP文件第24行的代码、再运行第21行的代码、接下来,再依次运行RuntimeUtil文件第29行的代码、第42行的代码、第77行的代码、第82行的代码、第83行的代码以及第84行的代码,且可以获取cmds数组和cmd两个参数的值,因此,在运行到待测试对象中的分支代码时,可以通过分支代码运行时,获取到的数据对条件分支代码的条件语句覆盖情况,精准地分析哪些条件语句已运行,哪些条件语句未运行,这是大部分覆盖率工具所不具有的,进一步提高了覆盖率测试工具的测试能力;此外,还可以直观地向用户展示代码覆盖率的情况,提高了用户体验。
实施例四
图5是根据本公开第四实施例提供的代码覆盖率的确定装置50的结构示意图,示例的,请参见图5所示,该代码覆盖率的确定装置50可以包括:
第一确定单元501,用于确定待测试对象,待测试对象处于代码调试模式。
处理单元502,用于根据待测试对象对应的目标编码类型,在覆盖率测试工具中确定目标编码类型对应的目标代码调试协议;其中,覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,且多种编码类型包括目标编码类型。
第一获取单元503,用于基于目标代码调试协议获取待测试对象的运行数据。
第二确定单元504,用于根据运行数据,确定待测试对象对应的代码覆盖率。
可选的,第二确定单元504包括第一确定模块和第二确定模块。
第一确定模块,用于将运行数据与待测试对象进行匹配,确定运行数据中已测试代码的行数。
第二确定模块,用于根据已测试代码的行数与待测试对象的行数,确定待测试对象对应的代码覆盖率。
可选的,第二确定模块包括第一确定子模块和第二确定子模块。
第一确定子模块,用于确定已测试代码的行数与待测试对象的行数之间的比值。
第二确定子模块,用于根据比值,确定待测试对象对应的代码覆盖率。
可选的,待测试对象中包括条件分支代码,代码覆盖率的确定装置50还包括第二获取单元和第三确定单元。
第二获取单元,用于获取已测试代码中参数的取值。
第三确定单元,用于根据已测试代码中参数的取值,确定条件分支代码的运行情况;其中,运行情况包括运行正确或者运行错误。
可选的,代码覆盖率的确定装置50还包括第三获取单元和构建单元。
第三获取单元,用于预先获取各编码类型对应的代码调试协议。
构建单元,用于基于各编码类型对应的代码调试协议,构建覆盖率测试工具。
可选的,第一获取单元503包括第一获取模块、第二获取模块以及第三获取模块。
第一获取模块,用于获取待测试对象的地址信息。
第二获取模块,用于根据地址信息与待测试对象建立网络连接。
第三获取模块,用于在连接态下,基于目标代码调试协议获取待测试对象的运行数据。
可选的,第一确定单元501包括第三确定模块和第四确定模块。
第三确定模块,用于接收输入的测试信息;其中,测试信息用于指示待测试对象的起始位置和终止位置。
第四确定模块,用于根据起始位置和终止位置,确定待测试对象。
本公开实施例提供的代码覆盖率的确定装置50,可以执行上述任一实施例所示的代码覆盖率的确定方法的技术方案,其实现原理以及有益效果与代码覆盖率的确定方法的实现原理及有益效果类似,可参见代码覆盖率的确定方法的实现原理及有益效果,此处不再进行赘述。
根据本公开的实施例,本公开还提供了一种电子设备和一种可读存储介质。
根据本公开的实施例,本公开还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
图6是根据本公开实施例提供的一种电子设备60的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,电子设备60包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备60操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备60中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备60通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如代码覆盖率的确定方法。例如,在一些实施例中,代码覆盖率的确定方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备60上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的代码覆盖率的确定方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行代码覆盖率的确定方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (17)
1.一种代码覆盖率的确定方法,包括:
确定待测试对象,所述待测试对象处于代码调试模式;
根据所述待测试对象对应的目标编码类型,在覆盖率测试工具中确定所述目标编码类型对应的目标代码调试协议;其中,所述覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,且所述多种编码类型包括所述目标编码类型;
基于所述目标代码调试协议获取所述待测试对象的运行数据;
根据所述运行数据,确定所述待测试对象对应的代码覆盖率。
2.根据权利要求1所述的方法,其中,所述根据所述运行数据,确定所述待测试对象对应的代码覆盖率,包括:
将所述运行数据与所述待测试对象进行匹配,确定所述运行数据中已测试代码的行数;
根据所述已测试代码的行数与所述待测试对象的行数,确定所述待测试对象对应的代码覆盖率。
3.根据权利要求2所述的方法,其中,所述根据所述已测试代码的行数与所述待测试对象的行数,确定所述待测试对象对应的代码覆盖率,包括:
确定所述已测试代码的行数与所述待测试对象的行数之间的比值;
根据所述比值,确定所述待测试对象对应的代码覆盖率。
4.根据权利要求2所述的方法,所述待测试对象中包括条件分支代码,所述方法还包括:
获取所述已测试代码中参数的取值;
根据所述已测试代码中参数的取值,确定所述条件分支代码的运行情况;其中,所述运行情况包括运行正确或者运行错误。
5.根据权利要求1-4任一项所述的方法,所述方法还包括:
预先获取所述各编码类型对应的代码调试协议;
基于所述各编码类型对应的代码调试协议,构建所述覆盖率测试工具。
6.根据权利要求1-5任一项所述的方法,其中,所述基于所述目标代码调试协议获取所述待测试对象的运行数据,包括:
获取所述待测试对象的地址信息;
根据所述地址信息与所述待测试对象建立网络连接;
在连接态下,基于所述目标代码调试协议获取所述待测试对象的运行数据。
7.根据权利要求1-6任一项所述的方法,其中,所述确定待测试对象,包括:
接收输入的测试信息;其中,所述测试信息用于指示所述待测试对象的起始位置和终止位置;
根据所述起始位置和所述终止位置,确定所述待测试对象。
8.一种代码覆盖率的确定装置,包括:
第一确定单元,用于确定待测试对象,所述待测试对象处于代码调试模式;
处理单元,用于根据所述待测试对象对应的目标编码类型,在覆盖率测试工具中确定所述目标编码类型对应的目标代码调试协议;其中,所述覆盖率测试工具中包括多种编码类型中各编码类型对应的代码调试协议,且所述多种编码类型包括所述目标编码类型;
第一获取单元,用于基于所述目标代码调试协议获取所述待测试对象的运行数据;
第二确定单元,用于根据所述运行数据,确定所述待测试对象对应的代码覆盖率。
9.根据权利要求8所述的装置,其中,所述第二确定单元包括第一确定模块和第二确定模块;
所述第一确定模块,用于将所述运行数据与所述待测试对象进行匹配,确定所述运行数据中已测试代码的行数;
所述第二确定模块,用于根据所述已测试代码的行数与所述待测试对象的行数,确定所述待测试对象对应的代码覆盖率。
10.根据权利要求9所述的装置,其中,所述第二确定模块包括第一确定子模块和第二确定子模块;
所述第一确定子模块,用于确定所述已测试代码的行数与所述待测试对象的行数之间的比值;
所述第二确定子模块,用于根据所述比值,确定所述待测试对象对应的代码覆盖率。
11.根据权利要求9所述的装置,所述待测试对象中包括条件分支代码,所述装置还包括第二获取单元和第三确定单元;
所述第二获取单元,用于获取所述已测试代码中参数的取值;
所述第三确定单元,用于根据所述已测试代码中参数的取值,确定所述条件分支代码的运行情况;其中,所述运行情况包括运行正确或者运行错误。
12.根据权利要求8-11任一项所述的装置,所述装置还包括第三获取单元和构建单元;
所述第三获取单元,用于预先获取所述各编码类型对应的代码调试协议;
所述构建单元,用于基于所述各编码类型对应的代码调试协议,构建所述覆盖率测试工具。
13.根据权利要求8-12任一项所述的装置,其中,所述第一获取单元包括第一获取模块、第二获取模块以及第三获取模块;
所述第一获取模块,用于获取所述待测试对象的地址信息;
所述第二获取模块,用于根据所述地址信息与所述待测试对象建立网络连接;
所述第三获取模块,用于在连接态下,基于所述目标代码调试协议获取所述待测试对象的运行数据。
14.根据权利要求8-13任一项所述的装置,其中,所述第一确定单元包括第三确定模块和第四确定模块;
所述第三确定模块,用于接收输入的测试信息;其中,所述测试信息用于指示所述待测试对象的起始位置和终止位置;
所述第四确定模块,用于根据所述起始位置和所述终止位置,确定所述待测试对象。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的代码覆盖率的确定方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的代码覆盖率的确定方法。
17.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的代码覆盖率的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110587216.2A CN113326190A (zh) | 2021-05-27 | 2021-05-27 | 代码覆盖率的确定方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110587216.2A CN113326190A (zh) | 2021-05-27 | 2021-05-27 | 代码覆盖率的确定方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113326190A true CN113326190A (zh) | 2021-08-31 |
Family
ID=77421782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110587216.2A Pending CN113326190A (zh) | 2021-05-27 | 2021-05-27 | 代码覆盖率的确定方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113326190A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294503A1 (en) * | 2005-06-24 | 2006-12-28 | Microsoft Corporation | Code coverage analysis |
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
US20070250815A1 (en) * | 2006-04-21 | 2007-10-25 | Microsoft Corporation | Measuring code coverage |
CN108319548A (zh) * | 2017-01-18 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 一种程序代码调试方法和装置 |
CN110795329A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 覆盖率测试方法及系统、处理器、存储介质 |
CN111427771A (zh) * | 2020-02-29 | 2020-07-17 | 平安科技(深圳)有限公司 | 一种代码覆盖率分析方法、设备、服务器及可读存储介质 |
CN112148590A (zh) * | 2020-08-27 | 2020-12-29 | 浙江大搜车融资租赁有限公司 | 一种代码覆盖率的确定方法、装置及设备 |
CN112631926A (zh) * | 2020-12-29 | 2021-04-09 | 平安银行股份有限公司 | 代码测试覆盖率显示方法、装置、计算机设备及存储介质 |
CN112685298A (zh) * | 2020-12-25 | 2021-04-20 | 北京百度网讯科技有限公司 | 应用程序的代码覆盖测试方法、装置以及电子设备 |
CN112799939A (zh) * | 2021-01-22 | 2021-05-14 | 网易(杭州)网络有限公司 | 增量代码覆盖率测试方法及装置、存储介质、电子设备 |
-
2021
- 2021-05-27 CN CN202110587216.2A patent/CN113326190A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294503A1 (en) * | 2005-06-24 | 2006-12-28 | Microsoft Corporation | Code coverage analysis |
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
US20070250815A1 (en) * | 2006-04-21 | 2007-10-25 | Microsoft Corporation | Measuring code coverage |
CN108319548A (zh) * | 2017-01-18 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 一种程序代码调试方法和装置 |
CN110795329A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 覆盖率测试方法及系统、处理器、存储介质 |
CN111427771A (zh) * | 2020-02-29 | 2020-07-17 | 平安科技(深圳)有限公司 | 一种代码覆盖率分析方法、设备、服务器及可读存储介质 |
CN112148590A (zh) * | 2020-08-27 | 2020-12-29 | 浙江大搜车融资租赁有限公司 | 一种代码覆盖率的确定方法、装置及设备 |
CN112685298A (zh) * | 2020-12-25 | 2021-04-20 | 北京百度网讯科技有限公司 | 应用程序的代码覆盖测试方法、装置以及电子设备 |
CN112631926A (zh) * | 2020-12-29 | 2021-04-09 | 平安银行股份有限公司 | 代码测试覆盖率显示方法、装置、计算机设备及存储介质 |
CN112799939A (zh) * | 2021-01-22 | 2021-05-14 | 网易(杭州)网络有限公司 | 增量代码覆盖率测试方法及装置、存储介质、电子设备 |
Non-Patent Citations (1)
Title |
---|
林广栋;耿锐;赵香;: "BWDSP软件代码覆盖率统计工具实现方案", 电脑知识与技术, no. 05, pages 72 - 76 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114024884A (zh) | 一种测试方法、装置、电子设备及存储介质 | |
CN114417780B (zh) | 状态同步方法、装置、电子设备及存储介质 | |
CN113641544B (zh) | 用于检测应用状态的方法、装置、设备、介质和产品 | |
CN113219505B (zh) | 用于车路协同隧道场景的采集gps坐标的方法、装置和设备 | |
CN113795039A (zh) | 运营商网络切换方法、装置、设备和计算机可读存储介质 | |
CN109656791B (zh) | 一种基于Jmeter的gRPC性能测试方法及装置 | |
CN113326190A (zh) | 代码覆盖率的确定方法、装置和电子设备 | |
CN112131092A (zh) | 页面调试方法和装置 | |
CN115687406A (zh) | 一种调用链数据的采样方法、装置、设备及存储介质 | |
CN115599438A (zh) | 应用程序的发布包的构建方法、装置、设备及介质 | |
CN115187821A (zh) | 验证模型转换前后正确性的方法、相关装置及程序产品 | |
CN114091909A (zh) | 一种协同开发的方法、系统、装置及电子设备 | |
CN114218166A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN113660635A (zh) | 连接方法、装置、电子设备、存储介质及程序产品 | |
CN115361290B (zh) | 配置比对方法、装置、电子设备及存储介质 | |
CN114791996B (zh) | 信息处理方法、装置、系统、电子设备及存储介质 | |
CN113836016B (zh) | 写接口存储质量测试方法、系统、电子设备及存储介质 | |
CN117056110B (zh) | 一种系统故障排查方法、装置、电子设备及存储介质 | |
CN113407844B (zh) | 小程序框架的版本推荐方法、装置、设备以及存储介质 | |
CN113032040A (zh) | 用于处理任务的方法、装置、设备、介质和产品 | |
CN114860614A (zh) | 数据处理方法、装置、设备、介质和产品 | |
CN113986661A (zh) | 日志输出的方法、装置、电子设备和存储介质 | |
CN116232638A (zh) | 访问请求的处理方法、装置、电子设备与可读存储介质 | |
CN116628383A (zh) | 页面跳转方法、装置、电子设备及存储介质 | |
CN114238075A (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 |