CN115248779A - 一种代码覆盖测试方法、装置、计算机设备及存储介质 - Google Patents
一种代码覆盖测试方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115248779A CN115248779A CN202210926853.2A CN202210926853A CN115248779A CN 115248779 A CN115248779 A CN 115248779A CN 202210926853 A CN202210926853 A CN 202210926853A CN 115248779 A CN115248779 A CN 115248779A
- Authority
- CN
- China
- Prior art keywords
- target
- test
- tool
- testing
- code coverage
- 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
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/3696—Methods or tools to render software testable
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为本发明一个实施例中计算机设备的内部结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本发明实施例中的代码覆盖测试方法应用于代码覆盖测试装置,代码覆盖测试装置设置于计算机设备;计算机设备可以是终端,例如,手机或平板电脑,计算机设备还可以是一台服务器,或者多台服务器组成的服务集群。
如图1所示,图1为本发明实施例中代码覆盖测试方法的应用场景示意图,本发明实施例中代码覆盖测试方法的应用场景中包括计算机设备100(计算机设备100中集成有代码覆盖测试装置),计算机设备100中运行代码覆盖测试方法对应的计算机可读存储介质,以执行代码覆盖测试方法的步骤。
可以理解的是,图1所示代码覆盖测试方法的应用场景中的计算机设备,或者计算机设备中包含的装置并不构成对本发明实施例的限制,即,代码覆盖测试方法的应用场景中包含的设备数量、设备种类,或者各个设备中包含的装置数量、装置种类不影响本发明实施例中技术方案整体实现,均可以算作本发明实施例要求保护技术方案的等效替换或衍生。
本发明实施例中计算机设备100可以是独立的设备,也可以是设备组成的设备网络或设备集群,例如,本发明实施例中所描述的计算机设备100,其包括但不限于电脑、网络主机、单个网络设备、多个网络设备集或多个设备构成的云设备。其中,云设备由基于云计算(Cloud Computing)的大量电脑或网络设备构成。
本领域技术人员可以理解,图1中示出的应用场景,仅仅是与本发明的技术方案对应的一种应用场景,并不构成对本发明的技术方案的应用场景的限定,其他的应用场景还可以包括比图1中所示更多或更少的计算机设备,或者计算机设备网络连接关系,例如图1中仅示出1个计算机设备,可以理解的,该代码覆盖测试方法的场景还可以包括一个或多个其他计算机设备,具体此处不作限定;该计算机设备100中还可以包括存储器,用于存储代码覆盖测试方法相关的信息。
此外,本发明实施例中的代码覆盖测试方法的应用场景中计算机设备100可以设置显示装置,或者计算机设备100中不设置显示装置并与外接的显示装置200通讯连接,显示装置200用于输出计算机设备中代码覆盖测试方法执行的结果。计算机设备100可以访问后台数据库300(后台数据库300可以是计算机设备100的本地存储器,后台数据库300还可以设置在云端),后台数据库300中保存有代码覆盖测试方法相关的信息。
需要说明的是,图1所示的代码覆盖测试方法的应用场景仅仅是一个示例,本发明实施例描述的代码覆盖测试方法的应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定。
基于上述代码覆盖测试方法的应用场景,提出了代码覆盖测试方法的实施例。
第一方面,如图2所示,在一个实施例中,本发明提供一种代码覆盖测试方法,包括:
步骤201,获取调用方发送的测试请求以及对应的初始待测代码数据;
其中,初始待测代码数据可以直接被包含在调用方发送的测试请求中(在该方式中,需要通过解析测试请求来获取该初始待测代码数据),也可以存储在某个地址中,而该地址被包含在调用方发送的测试请求中,采用地址的方式,可以降低测试请求的数据量,从而节省传输资源;
其中,调用方是指需要发送测试请求来调用服务方对对应的软件应用进行代码覆盖测试的终端设备,同调用方一样,本实施例中的代码覆盖测试方法的执行主体为服务方,是指响应于调用方的测试请求来进行代码覆盖测试的终端设备;通常情况下,调用方和服务方式基于不同的终端设备分别发送测试请求和响应测试请求,其中调用方和服务方可通过HTTP协议(超文本传输协议HyperText Transfer Protoco,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则)来发送和接收测试请求,即测试请求为http请求(http请求包括http请求行、http请求头和http请求正文),在该http请求中,初始待测代码数据或地址数据存放在http请求正文中;
步骤202,确定用于测试初始待测代码数据的多个目标测试工具以及各目标测试工具的目标类型权重;
其中,目标类型权重表征对应得到的初始代码覆盖率在评价体系中的影响因素大小,目标类型权重具体取决于对应的目标测试工具的测试侧重点与初始待测代码数据的重心的吻合程度,吻合程度越高,对应的目标类型权重越大,反之越小;也即目标类型权重表征了初始代码覆盖率在最终得到的目标代码覆盖率中的占比大小;
其中,目标类型权重是通过应用测试领域中的经验值进行确定,可预先设置在本地;
步骤203,分别基于各目标测试工具,对初始待测代码数据进行代码覆盖测试,得到各目标测试工具各自对应的初始代码覆盖率;
其中,针对每个目标测试工具,具体包括:确定初始待测代码数据的代码脚本语言与该目标测试工具的处理脚本语言;若初始待测代码数据的代码脚本语言与该目标测试工具的处理脚本语言不一致时,对初始待测代码数据进行脚本语言转换,得到目标待测代码数据;目标待测代码数据的代码脚本语言与该目标测试工具的处理脚本语言一致;基于该目标测试工具,对目标待测代码数据进行代码覆盖测试,得到该目标测试工具对应的初始代码覆盖率;
其中,通过脚本语言转换后,目标待测代码数据的代码脚本语言与目标测试工具的处理脚本语言一致,因此能够使用目标测试工具对目标待测代码数据进行代码覆盖测试,最终得到所需要的目标代码覆盖率;
其中,脚本语言转换可以通过第三方服务方来实现,比如在确定目标测试工具的处理脚本语言后,将目标测试工具的处理脚本语言作为转换的期望脚本语言,向第三方服务方发送包含初始待测代码数据的转换请求,当转换完成后,接收第三方服务方发送的目标待测代码数据,由于目标待测代码数据是以目标测试工具的处理脚本语言作为转换的期望脚本语言进行转换得到,因此目标待测代码数据的代码脚本语言与目标测试工具的处理脚本语言一致;
其中,上述步骤已经提到,脚本语言转换可通过第三方服务方来实现,但如此会存在数据传输,当初始待测代码数据的数据量较大时,会极大的降低测试的效率,因此可在本地预设脚本语言转换引擎,在测试过程中需要进行脚本语言转换时,直接调用该脚本语言转换引擎即可;
其中,脚本语言转换引擎中设置了多个转换策略,每个转换策略都对应一种脚本语言到另一种脚本语言的转换规则;因此,在确定目标测试工具的处理脚本语言以及初始待测代码数据的代码脚本语言后,即可确定用于实现该转换目的的转换策略,最终根据该转换策略完成脚本语言转换;
其中,目标测试工具包括脚本语言为c/c++(c语言)的测试工具(比如gcc+gcov+lcov、单元测试:CUnit、CPPUnit、Google GTest)、脚本语言为Java的测试工具(Mavencobertura插件、Clover、EMMA、Jtest、eclipse中的eclemma插件)、脚本语言为Python的测试工具(PyUnit+coverage.py)、脚本语言为PHP的测试工具(phpunit+–coverage-html+Xdebug)、脚本语言为Perl的测试工具(Test::Class和Devel::Cover)以及脚本语言为Shell的测试工具(shUnit2+shcov)等;
步骤204,根据各目标测试工具的目标类型权重,对各目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率;
其中,加权处理可以是加权求和的方式,比如确定的目标测试工具包括目标测试工具A、目标测试工具B、目标测试工具C、目标测试工具D,若得到的初始代码覆盖率分别为80%、80%、90%、90%,且对应的目标类型权重分别为30%、30%、20%、20%,则最终的目标代码覆盖率为:
80%*30%+80%*30%+90%*20%+90%*20%=24%+24%+18%+18%=84%。
通过上述代码覆盖测试方法,在接收到调用方发送的初始待测代码数据后,确定用于测试的多个目标测试工具以及每个目标测试工具的目标类型权重,由于目标类型权重表征对应得到的初始代码覆盖率在评价体系中的影响因素大小,因此在基于每个目标测试工具得到各自对应的初始代码覆盖率后,通过目标类型权重进行加权处理,最终得到一个结合多个目标测试工具的测试侧重点的目标代码覆盖率,从而使测试维度更加全面,测试得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
在一个实施例中,确定用于测试初始待测代码数据的多种目标测试工具,包括:
对调用方发送的测试请求进行解析,得到用于测试初始待测代码数据的多个测试工具的目标工具类型;
其中,测试人员可根据自身的经验判断,选择合适待测应用的测试工具,即通过调用方发送测试请求时,在测试请求中添加选择的测试工具的目标工具类型;从而服务方在对测试请求进行解析时,能够得到该目标工具类型;
确定分别与各目标工具类型匹配的多个测试工具为多个目标测试工具;
其中,可预先对提供的多个测试工具进行管理建库,比如可预先建立测试工具库,测试工具库包括多个样本测试工具以及样本测试工具的样本工具类型;从而在得到目标工具类型后,可根据目标工具类型,在测试工具库中匹配对应的样本工具类型,最终将匹配到的样本工具类型对应的样本测试工具确定为目标测试工具,便于后续使用。
通过本实施例中的测试工具库,能够使测试人员灵活的选择所需要的测试工具,提高测试的灵活性。
在一个实施例中,确定用于测试初始待测代码数据的多个目标测试工具,包括:
确定初始待测代码数据对应的待测应用的目标应用类型;
其中,其中,不同类型的应用对应的代码侧重点不同,因此对于某种类型的应用,使用不同的测试工具,对应的测试效果也不同;通过确定待测应用的目标应用类型,能够在后续确定到对于待测应用而言测试效果更好的测试工具;
获取预设的测试工具库;
其中,测试工具库包括多个样本应用类型以及样本应用类型对应的多个样本测试工具;
其中,可预先对提供的多个测试工具进行管理建库,从而得到测试工具库,测试工具与应用类型之间的映射关系可通过大数据经验值得到;
根据目标应用类型,在测试工具库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的多个样本测试工具确定为多个目标测试工具;
通过本实施例中的测试工具库,能够自动确定待测应用所需要的目标测试工具,无需通过测试人员手动选择,提高了测试的效率。
在一个实施例中,确定各目标测试工具的目标类型权重,包括:
获取预设的目标权重配置表;
其中,目标权重配置表包括多个样本类型权重以及样本类型权重对应的样本测试工具的样本工具类型;
其中,目标权重配置表是由测试人员根据经验值预设设置的,目标权重配置表中包含有待测应用对应的所有工具类型的类型权重;
针对每个目标测试工具,根据该目标测试工具的目标工具类型,在目标权重配置表中匹配对应的样本工具类型,将匹配到的样本工具类型对应的样本类型权重设置为该目标测试工具的目标类型权重;
其中,在获取到目标权重配置表后,即可根据工具类型匹配到对应的类型权重;比如,确定到的目标测试工具包括目标测试工具A、目标测试工具B、目标测试工具C、目标测试工具D这四个目标工具类型的测试工具,则只需在目标权重配置表中匹配与这四个目标工具类型对应的样本类型权重并将其设置为目标类型权重。
在一个实施例中,获取预设的目标权重配置表,包括:
获取预设的配置表模板库;
其中,配置表模板库包括多个样本权重配置表以及样本权重配置表对应的样本应用类型;
其中,测试人员可预先根据经验值针对应用类型设置多个权重配置表,不同类型的应用对应的测试侧重点不同,比如有的应用更加看重语句覆盖,有的应用更加看重分支覆盖,因此不同类型的应用在进行测试时所需要的权重配置表不同,也即在配置表模板库中包含有所有应用类型对应的权重配置表;
确定初始待测代码数据对应的待测应用的目标应用类型;
其中,目标应用类型可通过对初始待测代码数据进行识别分析来得到,也可以是由测试人员通过调用方发送测试请求时,将目标应用类型添加在测试请求中,从而在接收到该测试请求后对其进行解析来得到;
其中,当通过识别分析来得到目标应用类型时,可通过AI(ArtificialIntelligence,人工智能)模型,使用各种典型的高性能机器学习算法进行高效处理;具体的,获取训练好的类型识别模型,将初始待测代码数据输入到类型识别模块中,得到类型识别模型输出的目标应用类型,利用AI算法的优势,通过大量数据的训练、学习,使得类型识别模型能够自动规避部分误差,从而极大的提高了识别的精度和效率;
根据目标应用类型,在配置表模板库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的样本权重配置表设置为目标权重配置表;
其中,在获取到配置表模板库后,即可根据应用类型匹配到对应的权重配置表;比如,待测应用的目标应用类型为“侧重判断覆盖”,则只需在配置表模板库中匹配与“侧重判断覆盖”对应的样本权重配置表并将其设置为目标权重配置表,若待测应用为其他应用类型,则同理根据应用类型在配置表模块库中进行匹配即可。
在一个实施例中,类型识别模型的训练步骤包括:
获取训练样本集,训练样本集中包括由多个训练样本,每个训练样本包括训练待测代码数据和训练应用类型;其中,训练应用类型由训练待测代码数据经过人工处理得到;
获取一个训练样本,将训练待测代码数据作为类型识别模型的输入,将训练应用类型作为类型识别模型的期望输出,对类型识别模型进行训练,即完成一次训练;
确定类型识别模型的实际输出与期望输出的比对结果,若比对结果不满足要求时,根据比对结果更新类型识别模型的模型参数;
获取下一个训练样本,然后重新进入将训练待测代码数据作为类型识别模型的输入,将训练应用类型作为类型识别模型的期望输出,对类型识别模型进行训练的步骤,直至得到的比对结果满足要求时,停止训练,得到训练好的类型识别模型。
在一个实施例中,根据各目标测试工具的目标类型权重,对各目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率,包括:
将各目标测试工具各自对应的初始代码覆盖率按照各目标测试工具的目标类型权重进行加权平均,得到目标代码覆盖率;
其中,由于不同应用所需要的目标测试工具不同,比如待测应用A需要的目标测试工具为目标测试工具A、目标测试工具B、目标测试工具C、目标测试工具D,待测应用B需要的目标测试工具为目标测试工具A、目标测试工具B、目标测试工具D,若待测应用A需要的目标权重配置表和待测应用B的需要的目标权重配置表相同,则该目标权重配置表中至少包括目标测试工具A、目标测试工具B、目标测试工具C、目标测试工具D分别对应的目标类型权重,若这四个目标类型权重的和为1,当采用加权求和时,待测应用A测试得到的目标代码覆盖率的总值为100%,由于目标类型权重的值是固定的,当仍然采用加权求和时会导致缺少目标测试工具C的待测应用B测试得到的目标代码覆盖率的总值低于100%,从而不便于后续测试人员查看,还需要进行进一步的转换;通过加权平均处理,能够使每个待测应用测试得到的目标代码覆盖率的总值为100%,便于测试人员查看。
在一个实施例中,分别基于各目标测试工具,对初始待测代码数据进行代码覆盖测试,得到各目标测试工具各自对应的初始代码覆盖率;针对每个目标测试工具,包括:
基于该目标测试工具,对初始待测代码数据进行代码执行,得到初始待测代码数据的代码覆盖数据;
其中,代码覆盖数据是指初始待测代码数据通过该目标测试工具的执行后,得到的包含有对已执行代码数据的标记的代码数据,标记的已执行代码数据能够用于后续代码覆盖率的计算;
确定代码覆盖数据的初始代码覆盖率;
其中,对于代码覆盖数据,可通过不同的覆盖分析策略,来得到对应的目标代码覆盖率;比如可以采用判定覆盖分析策略(指出源代码的每个布尔表达式正确或错误执行的情况,判定覆盖的目标是通过检查并确保每个判定点的每个分支至少执行一次来覆盖和验证所有可访问的源代码)、分支覆盖分析策略(对来自代码模块(语句或循环)的每个结果进行测试,分支覆盖的目的是确保来自每个分支的每个决策条件至少执行一次,它有助于测量独立代码段的百分比,并找出没有分支的部分;例如,如果结果是布尔类型,则需要同时测试True和False结果)或条件覆盖分析策略(用于测试和评估条件语句中的变量或子表达式,条件覆盖的目标是检查每个逻辑条件的单个结果,与判定覆盖相比,条件覆盖对控制流的敏感性更高)。
在一个实施例中,确定代码覆盖数据的初始代码覆盖率,包括:
确定代码覆盖数据中的已执行代码数据和总代码数据;
其中,上述已经提到,在代码覆盖数据中,对已执行过的代码数据进行了标记,因此只需基于标记即可获取到已执行代码数据,而总代码数据即为代码覆盖数据本身;
根据已执行代码数据和总代码数据的数量比值,确定得到初始代码覆盖率;
其中,根据数量比值来确定对应的代码覆盖率是一种高效的覆盖分析策略,即语句覆盖分析策略(源代码中的所有可执行语句至少执行一次,它用于计算源代码中已执行的语句数,语句覆盖的主要目的是覆盖源代码中所有可能的路径、行和语句);
其中,若已执行代码数据包括800个语句,总代码数据包括1000个语句,则对应的数量比值为800/1000,转换为百分比,即可得到对应的初始代码覆盖率:80%。
语句覆盖分析策略的结构简单,容易处理代码量较大的待测代码数据。
在一个实施例中,在得到目标代码覆盖率的步骤之后,上述代码覆盖测试方法还包括:
对目标代码覆盖率进行评估分析,得到与目标代码覆盖率对应的覆盖率分析报告;
根据覆盖率分析报告,输出提示信息;
其中,覆盖率分析报告可直接添加在提示信息中从而一并输出至测试人员的终端设备上,当测试人员接收到提示信息时,即可立即获取到对应的覆盖率分析报告;
其中,得到的目标代码覆盖率仅仅为一个百分比数,相关人员无法基于该百分比数进行深层次的分析,而在测试服务方中,由于存在各项中间数据,可进一步分析目标代码覆盖率的具体构成,比如哪部分代码的覆盖率较低,哪部分代码的覆盖率较高,从而得到一个全面的覆盖率分析报告,当相关人员查看该覆盖率分析报告时,能够非常直观的判断初始待测代码数据的质量情况;
其中,提示信息的输出可以采用邮件、短信以及电话等方式,可以理解的是,不同输出方式对应的提示信息的数据形式不同,包括语音、文本、图片和视频等形式;
其中,提示信息可根据覆盖率分析报告的评价标识进行调整,评价标识用于表征目标代码覆盖率的大小,比如目标代码覆盖率低于百分之六十,则评价标识可以为“差”,比如目标代码覆盖率高于百分之九十,则评价标识可以为“好”;若评价标识为“差”时,提示信息可以同时通过邮件、短信以及电话等方式进行多线路输出,若评价标识为“好”时,提示信息可以只通过邮件的方式进行单线路输出,从而使得提示信息的输出考虑了覆盖率分析报告的紧急程度,以便于更加高效的使用输出资源。
第二方面,如图3所示,在一个实施例中,本发明提供一种代码覆盖测试装置,包括:
数据获取模块301,用于获取调用方发送的测试请求以及对应的初始待测代码数据;
权重确定模块302,用于确定用于测试初始待测代码数据的多个目标测试工具以及各目标测试工具的目标类型权重;
覆盖测试模块303,用于分别基于各目标测试工具,对初始待测代码数据进行代码覆盖测试,得到各目标测试工具各自对应的初始代码覆盖率;
加权处理模块304,用于根据各目标测试工具的目标类型权重,对各目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率。
通过上述代码覆盖测试装置,在接收到调用方发送的初始待测代码数据后,确定用于测试的多个目标测试工具以及每个目标测试工具的目标类型权重,由于目标类型权重表征对应得到的初始代码覆盖率在评价体系中的影响因素大小,因此在基于每个目标测试工具得到各自对应的初始代码覆盖率后,通过目标类型权重进行加权处理,最终得到一个结合多个目标测试工具的测试侧重点的目标代码覆盖率,从而使测试维度更加全面,测试得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
在一个实施例中,权重确定模块具体用于对调用方发送的测试请求进行解析,得到用于测试初始待测代码数据的多个测试工具的目标工具类型;确定分别与各目标工具类型匹配的多个测试工具为多个目标测试工具。
在一个实施例中,权重确定模块具体用于确定初始待测代码数据对应的待测应用的目标应用类型;获取预设的测试工具库;测试工具库包括多个样本应用类型以及样本应用类型对应的多个样本测试工具;根据目标应用类型,在测试工具库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的多个样本测试工具确定为多个目标测试工具。
在一个实施例中,权重确定模块具体用于获取预设的目标权重配置表;目标权重配置表包括多个样本类型权重以及样本类型权重对应的样本测试工具的样本工具类型;针对每个目标测试工具,根据该目标测试工具的目标工具类型,在目标权重配置表中匹配对应的样本工具类型,将匹配到的样本工具类型对应的样本类型权重设置为该目标测试工具的目标类型权重。
在一个实施例中,权重确定模块具体用于获取预设的配置表模板库;配置表模板库包括多个样本权重配置表以及样本权重配置表对应的样本应用类型;确定初始待测代码数据对应的待测应用的目标应用类型;根据目标应用类型,在配置表模板库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的样本权重配置表设置为目标权重配置表。
在一个实施例中,加权处理模块具体用于将各目标测试工具各自对应的初始代码覆盖率按照各目标测试工具的目标类型权重进行加权平均,得到目标代码覆盖率。
在一个实施例中,上述代码覆盖测试装置还包括:
提示输出模块,用于在得到目标代码覆盖率的步骤之后,对目标代码覆盖率进行评估分析,得到与目标代码覆盖率对应的覆盖率分析报告;根据覆盖率分析报告,输出提示信息。
第三方面,在一个实施例中,本发明提供一种计算机设备,如图4所示,其示出了本发明所涉及的计算机设备的结构,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的计算机设备的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和计算机程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,以执行如下步骤:
获取调用方发送的测试请求以及对应的初始待测代码数据;
确定用于测试初始待测代码数据的多个目标测试工具以及各目标测试工具的目标类型权重;
分别基于各目标测试工具,对初始待测代码数据进行代码覆盖测试,得到各目标测试工具各自对应的初始代码覆盖率;
根据各目标测试工具的目标类型权重,对各目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率。
通过上述计算机设备,在接收到调用方发送的初始待测代码数据后,确定用于测试的多个目标测试工具以及每个目标测试工具的目标类型权重,由于目标类型权重表征对应得到的初始代码覆盖率在评价体系中的影响因素大小,因此在基于每个目标测试工具得到各自对应的初始代码覆盖率后,通过目标类型权重进行加权处理,最终得到一个结合多个目标测试工具的测试侧重点的目标代码覆盖率,从而使测试维度更加全面,测试得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
本领域普通技术人员可以理解,上述实施例的任一种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
第四方面,在一个实施例中,本发明提供一种存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行如下步骤:
获取调用方发送的测试请求以及测试请求对应的初始待测代码数据;
确定用于测试初始待测代码数据的多个目标测试工具以及各目标测试工具的目标类型权重;
分别基于各目标测试工具,对初始待测代码数据进行代码覆盖测试,得到各目标测试工具各自对应的初始代码覆盖率;
根据各目标测试工具的目标类型权重,对各目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率。
通过上述存储介质,在接收到调用方发送的初始待测代码数据后,确定用于测试的多个目标测试工具以及每个目标测试工具的目标类型权重,由于目标类型权重表征对应得到的初始代码覆盖率在评价体系中的影响因素大小,因此在基于每个目标测试工具得到各自对应的初始代码覆盖率后,通过目标类型权重进行加权处理,最终得到一个结合多个目标测试工具的测试侧重点的目标代码覆盖率,从而使测试维度更加全面,测试得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
本领域普通技术人员可以理解,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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 (10)
1.一种代码覆盖测试方法,其特征在于,包括:
获取调用方发送的测试请求以及对应的初始待测代码数据;
确定用于测试所述初始待测代码数据的多个目标测试工具以及各所述目标测试工具的目标类型权重;
分别基于各所述目标测试工具,对所述初始待测代码数据进行代码覆盖测试,得到各所述目标测试工具各自对应的初始代码覆盖率;
根据各所述目标测试工具的目标类型权重,对各所述目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率。
2.根据权利要求1所述的代码覆盖测试方法,其特征在于,所述确定用于测试所述初始待测代码数据的多种目标测试工具,包括:
对所述调用方发送的测试请求进行解析,得到用于测试所述初始待测代码数据的多个测试工具的目标工具类型;
确定分别与各所述目标工具类型匹配的多个测试工具为所述多个目标测试工具。
3.根据权利要求1所述的代码覆盖测试方法,其特征在于,所述确定用于测试所述初始待测代码数据的多个目标测试工具,包括:
确定所述初始待测代码数据对应的待测应用的目标应用类型;
获取预设的测试工具库;所述测试工具库包括多个样本应用类型以及所述样本应用类型对应的多个样本测试工具;
根据所述目标应用类型,在所述测试工具库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的多个样本测试工具确定为所述多个目标测试工具。
4.根据权利要求1所述的代码覆盖测试方法,其特征在于,确定各所述目标测试工具的目标类型权重,包括:
获取预设的目标权重配置表;所述目标权重配置表包括多个样本类型权重以及所述样本类型权重对应的样本测试工具的样本工具类型;
针对每个所述目标测试工具,根据该目标测试工具的目标工具类型,在所述目标权重配置表中匹配对应的样本工具类型,将匹配到的样本工具类型对应的样本类型权重设置为该目标测试工具的目标类型权重。
5.根据权利要求4所述的代码覆盖测试方法,其特征在于,所述获取预设的目标权重配置表,包括:
获取预设的配置表模板库;所述配置表模板库包括多个样本权重配置表以及所述样本权重配置表对应的样本应用类型;
确定所述初始待测代码数据对应的待测应用的目标应用类型;
根据所述目标应用类型,在所述配置表模板库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的样本权重配置表设置为所述目标权重配置表。
6.根据权利要求1所述的代码覆盖测试方法,其特征在于,所述根据各所述目标测试工具的目标类型权重,对各所述目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率,包括:
将各所述目标测试工具各自对应的初始代码覆盖率按照各所述目标测试工具的目标类型权重进行加权平均,得到所述目标代码覆盖率。
7.根据权利要求1所述的代码覆盖测试方法,其特征在于,在所述得到目标代码覆盖率的步骤之后,还包括:
对所述目标代码覆盖率进行评估分析,得到与所述目标代码覆盖率对应的覆盖率分析报告;
根据所述覆盖率分析报告,输出提示信息。
8.一种代码覆盖测试装置,其特征在于,包括:
数据获取模块,用于接收调用方发送的测试请求以及所述测试请求对应的初始待测代码数据;
权重确定模块,用于确定用于测试所述初始待测代码数据的多个目标测试工具以及各所述目标测试工具的目标类型权重;
覆盖测试模块,用于分别基于各所述目标测试工具,对所述初始待测代码数据进行代码覆盖测试,得到各所述目标测试工具各自对应的初始代码覆盖率;
加权处理模块,用于根据各所述目标测试工具的目标类型权重,对各所述目标测试工具各自对应的初始代码覆盖率进行加权处理,得到目标代码覆盖率。
9.一种计算机设备,其特征在于,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的所述计算机程序,以执行权利要求1至7任一项所述的代码覆盖测试方法中的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至7任一项所述的代码覆盖测试方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210926853.2A CN115248779A (zh) | 2022-08-03 | 2022-08-03 | 一种代码覆盖测试方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210926853.2A CN115248779A (zh) | 2022-08-03 | 2022-08-03 | 一种代码覆盖测试方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115248779A true CN115248779A (zh) | 2022-10-28 |
Family
ID=83699961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210926853.2A Pending CN115248779A (zh) | 2022-08-03 | 2022-08-03 | 一种代码覆盖测试方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115248779A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658534A (zh) * | 2022-11-04 | 2023-01-31 | 上海安般信息科技有限公司 | 一种基于多引擎融合的分布式模糊测试方法及装置 |
-
2022
- 2022-08-03 CN CN202210926853.2A patent/CN115248779A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658534A (zh) * | 2022-11-04 | 2023-01-31 | 上海安般信息科技有限公司 | 一种基于多引擎融合的分布式模糊测试方法及装置 |
CN115658534B (zh) * | 2022-11-04 | 2024-01-19 | 上海安般信息科技有限公司 | 一种基于多引擎融合的分布式模糊测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109102797B (zh) | 语音识别测试方法、装置、计算机设备及存储介质 | |
CN105427695B (zh) | 编程类考题自动测评方法和系统 | |
CN108492005B (zh) | 项目数据处理方法、装置、计算机设备和存储介质 | |
CN110287332B (zh) | 云环境下仿真模型选择方法与装置 | |
CN107357727A (zh) | App运行测试方法、装置、可读存储介质和计算机设备 | |
KR102588856B1 (ko) | 소프트웨어 검증 방법 및 이를 위한 장치 | |
CN111860568B (zh) | 数据样本的均衡分布方法、装置及存储介质 | |
CN115248779A (zh) | 一种代码覆盖测试方法、装置、计算机设备及存储介质 | |
CN107341104A (zh) | 一种基于云测试的测试结果处理方法及系统 | |
CN113760718A (zh) | 自动化测试方法及装置 | |
CN111240929A (zh) | 移动机房监管方法、装置、计算机设备及存储介质 | |
CN111796578A (zh) | 一种车用控制器测试方法、装置、系统和存储介质 | |
CN111124898A (zh) | 问答系统测试方法、装置、计算机设备和存储介质 | |
CN110647523A (zh) | 数据质量的分析方法及装置、存储介质、电子设备 | |
CN112379913B (zh) | 基于风险识别的软件优化方法、装置、设备及存储介质 | |
CN109783361A (zh) | 确定代码质量的方法和装置 | |
CN112527321A (zh) | 基于深度学习的应用上线方法、系统、设备及介质 | |
CN112559343A (zh) | 测试路径生成方法及相关设备 | |
CN111476349A (zh) | 一种模型测试方法及服务器 | |
CN115328783A (zh) | 转换语言的代码测试方法、装置、计算机设备及存储介质 | |
CN111191792A (zh) | 数据分发方法、装置和计算机设备 | |
CN115344477A (zh) | 划分代码的代码测试方法、装置、计算机设备及存储介质 | |
CN115952098A (zh) | 一种性能测试调优方案推荐方法及系统 | |
CN113159537A (zh) | 电网新技术项目的评估方法、装置和计算机设备 | |
CN115080414A (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 |