CN112559365A - 一种测试用例筛选方法、装置、计算机设备和存储介质 - Google Patents
一种测试用例筛选方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112559365A CN112559365A CN202011537961.8A CN202011537961A CN112559365A CN 112559365 A CN112559365 A CN 112559365A CN 202011537961 A CN202011537961 A CN 202011537961A CN 112559365 A CN112559365 A CN 112559365A
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- code coverage
- test cases
- coverage 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
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
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
技术领域
本申请涉及软件测试技术领域,特别是涉及一种测试用例筛选方法、装置、计算机设备和存储介质。
背景技术
随着软件测试技术的发展,在测试过程中为衡量某个特殊目标,通常针对该特殊目标编写测试用例进行自动化测试。
现有技术中,由于软件***有可能经历多次修改或升级,每次修改或升级后,都要用到所有测试用例对软件***进行多遍测试,该方式没有对测试用例进行筛选,测试用例的针对性不强,从而有可能导致在测试过程中进行重复冗余的工作,而使得测试效率不高。
发明内容
有鉴于此,本发明提供一种测试用例筛选方法、装置、计算机设备和存储介质,以解决现有技术中测试用例的数量较多导致测试工作重复、冗余,存在测试效率较低的问题。
第一方面,提供了一种测试用例筛选方法,所述方法包括:
获取目标服务的多个测试用例;
通过测试用例执行引擎执行多个所述测试用例,获得各个所述测试用例对应的代码覆盖数据;
获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据;
对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
进一步地,所述获取目标服务的多个测试用例,包括:
获取所述目标服务的接口参数信息,所述接口参数信息包括解析所述目标服务的实际流量数据而得到的所有接口参数各自的参数实际值;
根据各个所述接口参数的参数实际值以及所述目标服务的特征信息对所有所述接口参数进行机器学习,得到各个所述接口参数的参数取值规则;
根据各个所述接口参数的参数取值规则,对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例。
进一步地,所述根据各个所述接口参数的参数取值规则,对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例之前,所述方法还包括:
针对每一个所述接口参数,判断所述接口参数是否预设有参数取值规则,若有,则将所述接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择;
接收所述用户端针对所述接口参数的参数取值规则的选择信息,并将所述选择信息指示的参数取值规则确定为所述接口参数的参数取值规则。
进一步地,所述根据各个所述接口参数的参数取值规则,对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例,包括:
根据各个所述接口参数的参数取值规则,并结合等价类划分或/和边界值法对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例。
进一步地,所述获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据,包括:
根据各个所述测试用例对应的代码覆盖数据,对各个所述测试用例与各个所述测试用例覆盖到的程序代码段进行绑定;
针对所有所述测试用例中的每一个目标测试用例,计算所述目标测试用例绑定的程序代码段与所有所述测试用例中的其他测试用例绑定的程序代码段之间的相同程度,并根据计算结果,获取所述目标测试用例对应的代码覆盖数据与所述其他测试用例对应的代码覆盖数据之间的相似度;
判断所述相似度是否满足预设相似条件,若满足,则确定所述目标测试用例对应的代码覆盖数据与所述其他测试用例对应的代码覆盖数据彼此互为相似。
进一步地,所述对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选,包括:
对所述彼此互为相似的代码覆盖数据各自对应的测试用例归类到同一个测试用例子集中;
确定每个所述测试用例子集中的各所述测试用例对应的代码覆盖率;
根据每个所述测试用例子集中的各所述测试用例对应的代码覆盖率,对每个所述测试用例子集进行筛选。
进一步地,所述根据每个所述测试用例子集中的各所述测试用例对应的代码覆盖率,对每个所述测试用例子集进行筛选,包括:
针对每一个所述测试用例子集,对所述测试用例子集中的每个测试用例按照代码覆盖率从高至低的顺序进行排序,得到排序结果;以及
筛选出所述排序结果中排在前N位的测试用例,以作为最优测试用例,其中,N大于等于1。
第二方面,提供了一种测试用例筛选装置,所述装置包括:
用例获取模块,用于获取目标服务的多个测试用例;
用例执行模块,用于通过测试用例执行引擎执行多个所述测试用例,获得各个所述测试用例对应的代码覆盖数据;
相似确定模块,用于获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据;
用例筛选模块,用于对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
进一步地,所述用例获取模块包括:
参数获取单元,用于获取所述目标服务的接口参数信息,所述接口参数信息包括解析所述目标服务的实际流量数据而得到的所有接口参数各自的参数实际值;
机器学习单元,用于根据各个所述接口参数的参数实际值以及所述目标服务的特征信息对所有所述接口参数进行机器学习,得到各个所述接口参数的参数取值规则;
用例生成单元,用于根据各个所述接口参数的参数取值规则,对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例。
进一步地,所述装置还包括参数规则处理模块,所述参数规则处理模块用于:
针对每一个所述接口参数,判断所述接口参数是否预设有参数取值规则,若有,则将所述接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择;
接收所述用户端针对所述接口参数的参数取值规则的选择信息,并将所述选择信息指示的参数取值规则确定为所述接口参数的参数取值规则。
进一步地,所述用例生成单元具体用于:
根据各个所述接口参数的参数取值规则,并结合等价类划分或/和边界值法对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例。
进一步地,所述相似确定模块具体用于:
根据各个所述测试用例对应的代码覆盖数据,对各个所述测试用例与各个所述测试用例覆盖到的程序代码段进行绑定;
针对所有所述测试用例中的每一个目标测试用例,计算所述目标测试用例绑定的程序代码段与所有所述测试用例中的其他测试用例绑定的程序代码段之间的相同程度,并根据计算结果,获取所述目标测试用例对应的代码覆盖数据与所述其他测试用例对应的代码覆盖数据之间的相似度;
判断所述相似度是否满足预设相似条件,若满足,则确定所述目标测试用例对应的代码覆盖数据与所述其他测试用例对应的代码覆盖数据彼此互为相似。
进一步地,所述用例筛选模块包括:
用例归类单元,用于对所述彼此互为相似的代码覆盖数据各自对应的测试用例归类到同一个测试用例子集中;
覆盖率确定单元,用于确定每个所述测试用例子集中的各所述测试用例对应的代码覆盖率;
用例筛选单元,用于根据每个所述测试用例子集中的各所述测试用例对应的代码覆盖率,对每个所述测试用例子集进行筛选。
进一步地,所述用例筛选单元具体用于:
针对每一个所述测试用例子集,对所述测试用例子集中的每个测试用例按照代码覆盖率从高至低的顺序进行排序,得到排序结果;以及
筛选出所述排序结果中排在前N位的测试用例,以作为最优测试用例,其中,N大于等于1。
第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下操作步骤:
获取目标服务的多个测试用例;
通过测试用例执行引擎执行多个所述测试用例,获得各个所述测试用例对应的代码覆盖数据;
获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据;
对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下操作步骤:
获取目标服务的多个测试用例;
通过测试用例执行引擎执行多个所述测试用例,获得各个所述测试用例对应的代码覆盖数据;
获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据;
对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
本发明提供的测试用例筛选方法、装置、计算机设备和存储介质,获取目标服务的多个测试用例;通过测试用例执行引擎执行多个测试用例,获得各个测试用例对应的代码覆盖数据;获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据;对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选,由于对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选,这样筛选出的测试用例不但针对性强,而且能够有效降低软件的测试用例的数量,避免大量冗余测试用例的执行,节省了测试时间,提高了软件***的测试效率。
附图说明
图1为一个实施例中测试用例筛选方法的流程示意图;
图2为图1所示方法中步骤101的流程示意图;
图3为图1所示方法中步骤103的流程示意图;
图4为图1所示方法中步骤104的流程示意图;
图5为一个实施例中测试用例筛选装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
此外,在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
如前述背景技术所述,目前的由于软件***有可能经历多次修改或升级,每次修改或升级后,都要用到所有测试用例对软件***进行多遍测试,该方式没有对测试用例进行筛选,测试用例的针对性不强,从而有可能导致在测试过程中进行重复冗余的工作,而使得测试效率不高。为此,本申请提供一种测试用例筛选方法,该方法由于对每一个代码覆盖数据及其相似的代码覆盖数据各自对应的测试用例进行筛选,这样筛选出的测试用例不但针对性强,而且能够避免大量冗余测试用例的执行,节省了测试时间,提高了软件***的测试效率。
在一个实施例中,提供了一种测试用例筛选方法,该方法可以应用于计算机设备,计算机设备可以用独立的服务器或者是多个服务器组成的服务器集群来实现,如图1所示,该方法可以包括以下步骤:
101,获取目标服务的多个测试用例。
其中,目标服务可以是任何类型的服务,目标服务通常有一个或多个接口,用例数据指的是该测试用例中用于进行接口测试的测试数据,可以包括接口请求数据和期望的接口响应数据。
具体地,本发明对获取测试用例的过程不加以限定。
102,通过测试用例执行引擎执行多个测试用例,获得各个测试用例对应的代码覆盖数据。
其中,目标服务对应的服务程序代码保存保存在预设服务代码中,服务程序代码包括多个程序代码段,不同程序代码段具有不同的程序功能。
具体地,通过测试用例执行引擎在测试环境中执行多个测试用例,获取目标服务的服务代码的覆盖率报告,从覆盖率报告中抽取代码覆盖数据,代码覆盖数据包括:测试覆盖到代码信息、未测试覆盖到代码信息以及代码覆盖率,代码信息具体可以是代码特征,代码特征包括但不限于:业务线、服务名、类名、方法名和代码行号等,代码覆盖率可以根据测试覆盖到代码信息和未测试覆盖到代码信息计算得到的,例如计算某个测试用例覆盖到的代码的行数占目标服务的程序代码的总行数的比例,得到该测试用例的代码覆盖率。这里,测试环境是指模拟出的接近真实生产环境的环境,例如,可以是staging测试环境。
103,获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据。
具体地,可以通过对代码覆盖数据包括的测试覆盖到代码信息、未测试覆盖到代码信息以及代码覆盖率进行分析,得到各个测试用例对应的代码覆盖数据之间的相似度,根据各个测试用例对应的代码覆盖数据之间的相似度以及预设相似条件,判断是否存在相似度满足预设相似条件的至少两个代码覆盖数据,若存在,则确定出这至少两个代码覆盖数据是彼此互为相似的代码覆盖数据。
其中,预设相似条件可以根据实际需要进行设定,例如当某两个代码覆盖数据之间的相似度超过预设的相似度值时,确定这两个代码覆盖数据彼此互为相似。
104,对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
具体地,从彼此互为相似的代码覆盖数据各自对应的测试用例筛选中筛选出满足预设条件的测试用例作为最优测试用例。
本发明实施例提供的用例筛选方法,通过获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据,以及对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选,这样筛选出的测试用例不但针对性强,而且能够有效降低软件的测试用例的数量,避免大量冗余测试用例的执行,节省了测试时间,提高了软件***的测试效率。
在一个实施例中,如图2所示,上述步骤101中获取目标服务的多个测试用例的实现过程可以包括步骤:
1011,获取目标服务的接口参数信息,接口参数信息包括解析目标服务的实际流量数据而得到的所有接口参数各自的参数实际值。
其中,目标服务的实际流量数据包括目标服务的各个接口的实际流量数据,实际流量数据包括请求报文和响应报文。
具体地,可以预先录制目标服务在生产环境中的实际流量数据存储至数据库中,当服务器接收到测试用例生成指令时,根据测试用例生成指令确定被选定的目标服务,从数据库中拉取该目标服务的实际流量数据,对实际流量数据进行脱敏处理后,然后根据目标服务的各个接口对应的接口出入参结构对实际流量数据进行解析,得到接口名称、接口参数字段名以及接口参数对应的字段属性等信息,此外还可以解析得到接口参数的其他信息,例如接口统一资源定位符、接口方法类型、接口入参类型以及接口出参类型等。
其中,接口参数的字段类型包括入参字段以及出参字段,各个参数字段具有对应的参数字段名以及参数字段名对应的字段属性信息、字段类型。服务器的数据库中预先存储有各个参数字段对应的预设的参数取值规则,参数取值规则包括参数取值范围和/或正则表达式,参数取值范围,如安全值、上边界值、下边界值、空值null、非本字段类型的参数值等。
1012,根据各个接口参数的参数实际值以及目标服务的特征信息对所有接口参数进行机器学习,得到各个接口参数的参数取值规则。
其中,目标服务的特征信息包括服务名称、域名以及目标服务的业务功能点等信息。
具体地,对接口参数的参数字段名、参数字段名对应的参数实际值以及目标服务的服务名称、域名以及目标服务的业务功能点等进行机器学习,分析出各个接口参数的参数取值规则,即找出参数取值规则的规律。
其中,机器学习可以采用例如聚类算法、神经网络、贝叶斯、回归分析等算法对各个接口参数进行分析参数取值规则,生成参数取值规则的规律结果(例如聚类或者分类结果等)。
应理解,本发明实施例对具体的机器学习过程不加以限定。
1013,根据各个接口参数的参数取值规则,对各个接口参数进行赋值,生成目标服务的多个测试用例。
其中,步骤103的实现过程可以包括:
根据各个接口参数的参数取值规则,并结合等价类划分或/和边界值法对各个接口参数进行赋值,生成目标服务的多个测试用例。
其中,等价类划分法将测试数据分为有效等价类数据和无效等价类数据,有效等价类数据为符合限定规则的合理、有意义的数据集合,无效等价类数据为不合理、无意义的数据集合;边界值分析法通过选取指定数据域的上点、内点和离点来测试输入或输出的边界。
此外,还可以考虑其它测试用例设计方法,例如场景法、正交表等方法。本实施例对具体的测试用例生成过程不作限定。
本实施例中,由于目标服务的接口参数信息中包括解析目标服务的实际流量数据而得到的多个接口参数各自的参数实际值,这样根据各个接口参数的参数实际值以及目标服务的特征信息对所有接口参数进行机器学习,得到各个接口参数的参数取值规则,以及根据各个接口参数的参数取值规则,对各个接口参数进行赋值,生成目标服务的多个测试用例,能够使得测试用例更加接近生产环境中的实际流量,从而能够有效地提高了测试用例的准确性。此外,采用该方法还可以快速、高效地生成目标服务的测试用例,提高测试用例的生成效率,从而减轻测试人员编写自动化测试用例的工作量。
在一个实施例中,上述步骤1013执行之前,方法还包括:
针对每一个接口参数,判断接口参数是否预设有参数取值规则,若有,则将接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择;以及
接收用户端针对接口参数的参数取值规则的选择信息,并将选择信息指示的参数取值规则确定为接口参数的参数取值规则。
其中,服务器的数据库中预先存储有各个接口参数的参数字段对应的预设的参数取值规则。其中,可以向用户端提供可视化配置界面以接收用户通过可视化配置界面对接口参数进行配置的参数取值规则,并将对接口参数字段与对应的配置的参数取值规则按键值对形式存储到数据库中。
本实施例中,通过将接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择,以及接收用户端针对接口参数的参数取值规则的选择信息,并将选择信息指示的参数取值规则确定为接口参数的参数取值规则,可以使得接口参数的参数取值规则更加准确,从而提高后续测试用例生成的准确性。
在一个实施例中,将接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择,该过程可以包括:
对接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则进行相似度计算,确定相似度结果超过预设相似度阈值的目标接口参数,将目标接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端。
其中,预设相似度阈值可以根据实际需要进行预先设定。相似度计算方法可以参照现有技术,例如采用欧式距离、汉明距离、余弦距离等。
本实施例,通过相似度结果超过预设相似度阈值的目标接口参数预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,并接收到的选择信息指示的参数取值规则确定为接口参数的参数取值规则,如此可以减少用户对参数取值规则进行选择操作的工作量,进一步提高后续测试用例的生成效率。
在一个实施例中,如图3所示,上述步骤103中获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据,该过程可以包括步骤:
1031,根据各个测试用例对应的代码覆盖数据,对各个测试用例与各个测试用例覆盖到的程序代码段进行绑定。
具体地,可以根据各个测试用例对应的代码覆盖数据中的测试覆盖到代码信息,确定各个测试用例覆盖到的程序代码段,建立各个测试用例与各个测试用例覆盖到的程序代码段之间的绑定关系。建立“测试用例-代码段”的绑定关系中,用于指示每个测试用例覆盖到哪些代码行,即每个测试用例均绑定与其覆盖到的代码段。
可以理解的是,一个测试用例可以绑定一个或多个程序代码段,一个程序代码段包含至少一个代码行。
1032,针对所有测试用例中的每一个目标测试用例,计算目标测试用例绑定的程序代码段与所有测试用例中的其他测试用例绑定的程序代码段之间的相同程度,并根据计算结果,获取目标测试用例对应的代码覆盖数据与其他测试用例对应的代码覆盖数据之间的相似度。
其中,目标测试用例可以是从所有测试用例中随机选取的测试用例,其他测试用例是所有测试用例中除目标测试用例之外的测试用例。
为了便于描述,将目标测试用例绑定的程序代码段作为第一程序代码行,将其他测试用例绑定的程序代码段作为第二程序代码段。
具体地,上述步骤1032的实现过程可以包括:
针对目标测试用例,遍历所有测试用例中除该目标测试用例之外的每一个其他测试用例,每遍历到一个其他测试用例时,对目标测试用例绑定的第一程序代码段以及遍历到的其他测试用例绑定的第二程序代码段各自的代码特征进行特征匹配,计算目标测试用例绑定的第一程序代码段与其他测试用例绑定的第二程序代码段之间的相同程度,将相同程度确定为测试用例对应的代码覆盖数据与其他测试用例对应的代码覆盖数据之间的相似度。本实施例对具体的相似度获取过程不作限定。
可以理解的是,当两个测试用例各自绑定的程序代码段之间的相同程度越高时,这两个测试用例对应的代码覆盖数据越相似。这两个测试用例各自绑定的程序代码段的数量可以是一个,也可以是多个。
1033,判断相似度是否满足预设相似条件,若满足,则确定目标测试用例对应的代码覆盖数据与其他测试用例对应的代码覆盖数据彼此互为相似。
其中,预设相似条件可以设定为:当任意两个代码覆盖数据之间的相似度超过预设阈值时,则两个代码覆盖数据是相似的代码覆盖数据,可以理解的是,预设阈值可以根据实际情况进行设定,例如设定为80%。
在一个实施例中,如图4所示,上述步骤104中对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选,该过程可以包括步骤:
1041,对彼此互为相似的代码覆盖数据各自对应的测试用例归类到同一个测试用例子集中。
其中,对彼此互为相似的代码覆盖数据各自对应的测试用例进行归类到同一个测试子集中,得到多个测试用例子集。
示例性地,假如测试用例a与测试用例b各自对应的代码覆盖数据彼此互为相似,则将测试用例a与测试用例b归类到同一个测试用例子集中。
可以理解的是,同一个测试用例子集中的各测试用例对应的代码覆盖率彼此互为相似,而与其他测试用例子集中的各测试用例对应的代码覆盖率不相似。
1042,确定每个测试用例子集中的各测试用例对应的代码覆盖率。
1043,根据每个测试用例子集中的各测试用例对应的代码覆盖率,对每个测试用例子集进行筛选。
具体地,根据每个测试用例子集中的各测试用例对应的代码覆盖率,对每个测试用例子集进行筛选,该过程可以包括:
针对每一个测试用例子集,对测试用例子集中的每个测试用例按照代码覆盖率从高至低的顺序进行排序,得到排序结果,筛选出排序结果中排在前N位的测试用例,以作为最优测试用例,其中,N大于等于1。
本实施例中,对彼此互为相似的代码覆盖数据各自对应的测试用例进行归类到同一个测试子集中,得到多个测试用例子集,以及根据每个测试用例子集中的各测试用例对应的代码覆盖率,对每个测试用例子集进行筛选,不但筛选出的测试用例针对性强,能够有效降低软件的测试用例的数量,避免大量冗余测试用例的执行,而且使得筛选出的测试用例更全面,这样即便是有较少的测试用例测试覆盖到的程序代码段也可以被测试到,能够提高测试有效性以及全面性。
在一个实施例中,提供了一种测试用例筛选装置,如图5所示,该装置可以包括:
用例获取模块51,用于获取目标服务的多个测试用例;
用例执行模块52,用于通过测试用例执行引擎执行多个测试用例,获得各个测试用例对应的代码覆盖数据;
相似确定模块53,用于获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据;
用例筛选模块54,用于对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
在一个实施例中,用例获取模块51包括:
参数获取单元,用于获取目标服务的接口参数信息,接口参数信息包括解析目标服务的实际流量数据而得到的所有接口参数各自的参数实际值;
机器学习单元,用于根据各个接口参数的参数实际值以及目标服务的特征信息对所有接口参数进行机器学习,得到各个接口参数的参数取值规则;
用例生成单元,用于根据各个接口参数的参数取值规则,对各个接口参数进行赋值,生成目标服务的多个测试用例。
在一个实施例中,装置还包括参数规则处理模块,参数规则处理模块用于:
针对每一个接口参数,判断接口参数是否预设有参数取值规则,若有,则将接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择;
接收用户端针对接口参数的参数取值规则的选择信息,并将选择信息指示的参数取值规则确定为接口参数的参数取值规则。
在一个实施例中,用例生成单元具体用于:
根据各个接口参数的参数取值规则,并结合等价类划分或/和边界值法对各个接口参数进行赋值,生成目标服务的多个测试用例。
在一个实施例中,相似确定模块53具体用于:
根据各个测试用例对应的代码覆盖数据,对各个测试用例与各个测试用例覆盖到的程序代码段进行绑定;
针对所有测试用例中的每一个目标测试用例,计算目标测试用例绑定的程序代码段与所有测试用例中的其他测试用例绑定的程序代码段之间的相同程度,并根据计算结果,获取目标测试用例对应的代码覆盖数据与其他测试用例对应的代码覆盖数据之间的相似度;
判断相似度是否满足预设相似条件,若满足,则确定目标测试用例对应的代码覆盖数据与其他测试用例对应的代码覆盖数据彼此互为相似。
在一个实施例中,用例筛选模块54包括:
用例归类单元,用于对彼此互为相似的代码覆盖数据各自对应的测试用例归类到同一个测试用例子集中;
覆盖率确定单元,用于确定每个测试用例子集中的各测试用例对应的代码覆盖率;
用例筛选单元,用于根据每个测试用例子集中的各测试用例对应的代码覆盖率,对每个测试用例子集进行筛选。
在一个实施例中,用例筛选单元具体用于:
针对每一个测试用例子集,对测试用例子集中的每个测试用例按照代码覆盖率从高至低的顺序进行排序,得到排序结果;以及
筛选出排序结果中排在前N位的测试用例,以作为最优测试用例,其中,N大于等于1。
关于测试用例筛选装置的具体限定可以参见上文中对于测试用例筛选方法的限定,在此不再赘述。上述测试用例筛选装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该服务器包括通过***总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与其他设备通过网络连接通信。该计算机程序被处理器执行时以实现一种测试用例筛选方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取目标服务的多个测试用例;
通过测试用例执行引擎执行多个测试用例,获得各个测试用例对应的代码覆盖数据;
获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据;
对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取目标服务的多个测试用例;
通过测试用例执行引擎执行多个测试用例,获得各个测试用例对应的代码覆盖数据;
获取各个测试用例对应的代码覆盖数据之间的相似度,并根据各个相似度,确定出彼此互为相似的代码覆盖数据;
对彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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.根据权利要求2所述的方法,其特征在于,所述根据各个所述接口参数的参数取值规则,对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例之前,所述方法还包括:
针对每一个所述接口参数,判断所述接口参数是否预设有参数取值规则,若有,则将所述接口参数的预设的参数取值规则以及通过机器学习得到的参数取值规则推送至用户端,以供用户选择;
接收所述用户端针对所述接口参数的参数取值规则的选择信息,并将所述选择信息指示的参数取值规则确定为所述接口参数的参数取值规则。
4.根据权利要求1至3任一所述的方法,其特征在于,所述获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据,包括:
根据各个所述测试用例对应的代码覆盖数据,对各个所述测试用例与各个所述测试用例覆盖到的程序代码段进行绑定;
针对所有所述测试用例中的每一个目标测试用例,计算所述目标测试用例绑定的程序代码段与所有所述测试用例中的其他测试用例绑定的程序代码段之间的相同程度,并根据计算结果,获取所述目标测试用例对应的代码覆盖数据与所述其他测试用例对应的代码覆盖数据之间的相似度;
判断所述相似度是否满足预设相似条件,若满足,则确定所述目标测试用例对应的代码覆盖数据与所述其他测试用例对应的代码覆盖数据彼此互为相似。
5.根据权利要求1至3任一所述的方法,其特征在于,所述对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选,包括:
对所述彼此互为相似的代码覆盖数据各自对应的测试用例归类到同一个测试用例子集中;
确定每个所述测试用例子集中的各所述测试用例对应的代码覆盖率;
根据每个所述测试用例子集中的各所述测试用例对应的代码覆盖率,对每个所述测试用例子集进行筛选。
6.根据权利要求5所述的方法,其特征在于,所述根据每个所述测试用例子集中的各所述测试用例对应的代码覆盖率,对每个所述测试用例子集进行筛选,包括:
针对每一个所述测试用例子集,对所述测试用例子集中的每个测试用例按照代码覆盖率从高至低的顺序进行排序,得到排序结果;以及
筛选出所述排序结果中排在前N位的测试用例,以作为最优测试用例,其中,N大于等于1。
7.一种测试用例筛选装置,其特征在于,所述装置包括:
用例获取模块,用于获取目标服务的多个测试用例;
用例执行模块,用于通过测试用例执行引擎执行多个所述测试用例,获得各个所述测试用例对应的代码覆盖数据;
相似确定模块,用于获取各个所述测试用例对应的代码覆盖数据之间的相似度,并根据各个所述相似度,确定出彼此互为相似的代码覆盖数据;
用例筛选模块,用于对所述彼此互为相似的代码覆盖数据各自对应的测试用例进行筛选。
8.根据权利要求7所述的装置,其特征在于,所述用例获取模块包括:
参数获取单元,用于获取所述目标服务的接口参数信息,所述接口参数信息包括解析所述目标服务的实际流量数据而得到的所有接口参数各自的参数实际值;
机器学习单元,用于根据各个所述接口参数的参数实际值以及所述目标服务的特征信息对所有所述接口参数进行机器学习,得到各个所述接口参数的参数取值规则;
用例生成单元,用于根据各个所述接口参数的参数取值规则,对各个所述接口参数进行赋值,生成所述目标服务的多个测试用例。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011537961.8A CN112559365A (zh) | 2020-12-23 | 2020-12-23 | 一种测试用例筛选方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011537961.8A CN112559365A (zh) | 2020-12-23 | 2020-12-23 | 一种测试用例筛选方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112559365A true CN112559365A (zh) | 2021-03-26 |
Family
ID=75030928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011537961.8A Pending CN112559365A (zh) | 2020-12-23 | 2020-12-23 | 一种测试用例筛选方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559365A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190439A (zh) * | 2021-04-22 | 2021-07-30 | 北京百度网讯科技有限公司 | 测试用例的执行方法、装置和电子设备 |
CN113342664A (zh) * | 2021-06-16 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 拨测方法、装置、存储介质及计算机设备 |
CN113535563A (zh) * | 2021-07-19 | 2021-10-22 | 上海复深蓝软件股份有限公司 | 测试用例去重方法、装置、计算机设备及存储介质 |
CN113672506A (zh) * | 2021-08-06 | 2021-11-19 | 中国科学院软件研究所 | 基于机器学习的动态比例测试用例排序选择方法及*** |
CN113722234A (zh) * | 2021-09-14 | 2021-11-30 | 京东科技控股股份有限公司 | 测试用例的筛选方法、装置、电子设备及存储介质 |
CN114003305A (zh) * | 2021-10-22 | 2022-02-01 | 济南浪潮数据技术有限公司 | 设备相似度计算方法、计算机设备和存储介质 |
CN114385492A (zh) * | 2021-12-30 | 2022-04-22 | 大连理工大学 | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 |
CN115437965A (zh) * | 2022-10-27 | 2022-12-06 | 南京讯优智超软件科技有限公司 | 适用于测试管理平台的数据处理方法 |
CN115543856A (zh) * | 2022-12-02 | 2022-12-30 | 中国汽车技术研究中心有限公司 | 蓝牙协议模糊测试用例筛选方法、装置、设备及存储介质 |
CN118260209A (zh) * | 2024-05-24 | 2024-06-28 | 摩尔线程智能科技(北京)有限责任公司 | 代码测试方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-23 CN CN202011537961.8A patent/CN112559365A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190439A (zh) * | 2021-04-22 | 2021-07-30 | 北京百度网讯科技有限公司 | 测试用例的执行方法、装置和电子设备 |
CN113190439B (zh) * | 2021-04-22 | 2024-03-22 | 北京百度网讯科技有限公司 | 测试用例的执行方法、装置和电子设备 |
CN113342664B (zh) * | 2021-06-16 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 拨测方法、装置、存储介质及计算机设备 |
CN113342664A (zh) * | 2021-06-16 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 拨测方法、装置、存储介质及计算机设备 |
CN113535563A (zh) * | 2021-07-19 | 2021-10-22 | 上海复深蓝软件股份有限公司 | 测试用例去重方法、装置、计算机设备及存储介质 |
CN113672506A (zh) * | 2021-08-06 | 2021-11-19 | 中国科学院软件研究所 | 基于机器学习的动态比例测试用例排序选择方法及*** |
CN113722234A (zh) * | 2021-09-14 | 2021-11-30 | 京东科技控股股份有限公司 | 测试用例的筛选方法、装置、电子设备及存储介质 |
CN114003305A (zh) * | 2021-10-22 | 2022-02-01 | 济南浪潮数据技术有限公司 | 设备相似度计算方法、计算机设备和存储介质 |
CN114003305B (zh) * | 2021-10-22 | 2024-03-15 | 济南浪潮数据技术有限公司 | 设备相似度计算方法、计算机设备和存储介质 |
CN114385492A (zh) * | 2021-12-30 | 2022-04-22 | 大连理工大学 | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 |
CN115437965A (zh) * | 2022-10-27 | 2022-12-06 | 南京讯优智超软件科技有限公司 | 适用于测试管理平台的数据处理方法 |
CN115543856B (zh) * | 2022-12-02 | 2023-03-24 | 中国汽车技术研究中心有限公司 | 蓝牙协议模糊测试用例筛选方法、装置、设备及存储介质 |
CN115543856A (zh) * | 2022-12-02 | 2022-12-30 | 中国汽车技术研究中心有限公司 | 蓝牙协议模糊测试用例筛选方法、装置、设备及存储介质 |
CN118260209A (zh) * | 2024-05-24 | 2024-06-28 | 摩尔线程智能科技(北京)有限责任公司 | 代码测试方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559365A (zh) | 一种测试用例筛选方法、装置、计算机设备和存储介质 | |
CN112559364A (zh) | 一种测试用例生成方法、装置、计算机设备和存储介质 | |
CN110413506B (zh) | 测试用例推荐方法、装置、设备及存储介质 | |
CN108427613B (zh) | 异常接口定位方法、装置、计算机设备和存储介质 | |
CN110730107B (zh) | 测试数据生成方法、装置、计算机设备和存储介质 | |
CN108491321B (zh) | 测试用例范围确定方法、装置及存储介质 | |
CN109766261B (zh) | 覆盖测试方法、装置、计算机设备和存储介质 | |
US11809406B2 (en) | Event records in a log file | |
CN112733146B (zh) | 基于机器学习的渗透测试方法、装置、设备及存储介质 | |
CN112363937B (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
CN111290950B (zh) | 程序测试中测试点获取方法、装置、存储介质和设备 | |
CN113282513B (zh) | 接口测试案例的生成方法、装置、计算机设备及存储介质 | |
CN110362479B (zh) | ***升级测试方法和*** | |
JP7404839B2 (ja) | ソフトウェアプログラム不良位置の識別 | |
CN113656404A (zh) | 数据校验方法、装置、计算机设备及存储介质 | |
CN114610635A (zh) | 接口测试用例生成方法、装置、计算机设备及存储介质 | |
CN111984527A (zh) | 软件的性能测试方法、装置、设备和介质 | |
CN112363936A (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
CN114064497A (zh) | 应用程序测试方法、装置、计算机设备及存储介质 | |
CN111459796B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
CN112346981A (zh) | 联调测试覆盖率检测方法及*** | |
CN112596723A (zh) | 数据库脚本生成方法、装置、设备及介质 | |
CN111124937A (zh) | 基于插桩函数辅助提高生成测试用例效率的方法及*** | |
CN111752819A (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 |