CN112783779A - 测试用例的生成方法、装置、电子设备和存储介质 - Google Patents

测试用例的生成方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN112783779A
CN112783779A CN202110121343.3A CN202110121343A CN112783779A CN 112783779 A CN112783779 A CN 112783779A CN 202110121343 A CN202110121343 A CN 202110121343A CN 112783779 A CN112783779 A CN 112783779A
Authority
CN
China
Prior art keywords
interface
parameter
target
interface parameter
parameter pair
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.)
Granted
Application number
CN202110121343.3A
Other languages
English (en)
Other versions
CN112783779B (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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202110121343.3A priority Critical patent/CN112783779B/zh
Publication of CN112783779A publication Critical patent/CN112783779A/zh
Application granted granted Critical
Publication of CN112783779B publication Critical patent/CN112783779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3684Test management for test design, e.g. generating new test cases

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是根据本公开的实施例示出的一种测试用例的生成***的示意图;
图6是根据本公开的实施例示出的一种测试用例的生成装置的示意框图;
图7是根据本公开的实施例示出的一种电子设备的结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
为实现软件***快速稳定的迭代,在软件发布前通常需要对待发布软件进行测试,其中,接口测试是常用的测试手段。
在相关技术中,通常采用自动化测试工具对测试用进行自动管理和执行。但是现阶段的自动化测试工具仍然需要测试人员针对待测试接口编写原始协议接口文档,并据此在源数据文件表格中设计实现测试用例。例如,需要测试人员先设计测试用例的报文头与报文体,然后通过配置文件或界面选择找到测试用例对应的源数据文件,再选中用例集名称最终生成测试用例。
可见,在使用当前的自动化测试工具的过程中,测试人员往往需要花费较高的时间成本用于设计和维护测试用例,因此整体测试效率不高;而且,因为由测试人员自行编写原始协议接口文档并据此生成测试用例,因此测试用例的测试效果较大程度上依赖于测试人员对接口的熟悉程度,导致测试用例往往难以完整覆盖核心测试场景,甚至测试功能缺失。
为解决上述问题,本公开实施例提出一种测试用例的生成方法,采用目标软件运行过程中产生的原始日志作为样本,通过对多个接口参数对进行频繁模式搜索从中筛选出被频繁调用的目标接口以及目标接口的调用参数中被频繁使用的调用参数,从而根据目标接口及这部分调用参数生成针对接接口的测试用例,实现测试用例的全自动生成。不仅能够有效降低测试人员的时间成本,显著提升整体测试效率,而且能够较为完整的覆盖核心测试场景,从而有效避免了测试功能缺失。
图1是本说明书一示例性实施例示出的一种测试用例的生成方法的流程图。如图1所示,该方法应用于软件测试设备,可以包括以下步骤:
步骤101,获取目标软件运行时产生的原始日志,并对所述原始日志进行预处理得到接口参数对集合,所述接口参数对集合中的任一接口参数对包含接口和所述接口的调用参数。
在本实施例中,采用所述测试用例的生成方法所生成的测试用例,能够用于对待测试软件的目标接口进行测试。而且本实施例所示方法的下述测试用例的处理逻辑可以以可调用功能组件的形式集成在软件测试***中,作为该***的一部分被测试人员使用;也可以作为独立的测试用例生成工具提供给测试测试人员使用,本公开实施例并不对此进行限制。
在本实施例中,可以通过连接处于在线运行状态的目标软件并进行相应的参数配置,获取目标软件实时产生的原始日志;或者,也可以将从预设存储路径下获取目标软件在历史运行过程中产生的原始日志,如前一天、前一周、前一月的历史日志等,还可以按照地域范围获取处于不同地区的用户设备运行目标软件产生的原始日志等,本公开实施例并不对此进行限制。
在本实施例中,生成的测试用例可以用于测试待测试软件的目标接口,而该待测试软件可以用于更新上述目标软件。换言之,待测试软件可以为用于更新上述目标软件的高版本软件。因为在软件更新前后,待测试软件和目标软件之间通常包含较多的相同接口,所以在对目标软件进行更新之前,使用目标软件运行过程中产生的原始日志生成测试用例,有助于保证所生成的测试用例更加符合待测试软件上线后的真实流量(因为上述原始日志可以用于表征目标软件运行过程中的真实流量及接口请求情况),进而保证了对待测试软件进行测试的测试结果的准确性。
在本实施例中,可以采用多种方式对原始日志进行预处理。在一实施例中,软件测试设备可以对原始日志进行清洗,即从原始日志中提取出被该日志所对应请求调用的接口以及该接口的调用参数。例如,可以先确定原始日志中包含的被调用的接口,然后检查原始日志中是否同时包含接口的调用参数:在原始日志中包含接口的调用参数的情况下,可以提取该接口及其调用参数,然后使用提取得到的接口和调用参数创建接口参数对,并将该接口参数对记录在接口参数对集合中。具体的,可以预先设置记录有预设规则的若干正则表达式,然后依次检查日志数据是否与上述正则表达式相匹配,并将匹配于该正则表达式的日志数据分别确定为接口或其调用参数。通过正则表达式匹配的方式,能够准确提取到符合预设规则的全部接口及其调用参数,有助于保证清洗的准确性。当然,也可以对其他形式的接口或其调用参数进行查找与提取,不再一一赘述。
在另一实施例中,原始日志中也可能仅包含被调用的接口,而不包含接口的调用参数,即该日志所对应请求无需调用参数即可调用该接口。但是欲使用该原始日志中包含的接口进行后续统计处理,就需要将该接口创建为一个接口参数对,此时可以为不存在调用参数的单一接口指定预设参数。例如,在原始日志中不包含接口的调用参数的情况下,可以为该接口指定预设参数;然后使用该接口和上述预设参数创建接口参数对,并将该接口参数对记录在接口参数对集合中。具体的,可以为所有不存在调用参数的单一接口均添加一个“null”空字段,从而保证能够建立这类单一接口对应的接口参数对,以使其参与后续的频繁模式搜索中,进而保证了对大量原始日志进行频繁模式搜索的结果准确性。该方式相当于对不存在调用参数的单一接口进行的边界召回处理,以保证所有原始日志中的全部接口均可以被生成相应的接口参数对,实现对接口的兜底性召回,并保证所生成接口参数对满足统一的格式规范。
在一实施例中,任一接口对应的调用参数可能包含时间戳、ID、日期等经常变化的数字(同一类原始日志中可能仅有这部分数字不相同),这类变化的数字可能会在后续的频繁模式搜索中引入频率无关因素,所以为排除这类数字的不利影响,可以对这类数据进行模糊化处理。例如,若接口参数对中任一调用参数的取值为预设格式的数字,则可以使用预设字符替换该任一调用参数,从而将预设格式的数字(即上述经常变化的数字)转换为预设的无关字符。
实际业务场景下,任一原始日志中可能包含至少一个被调用的接口,任一接口可能对应于至少一个调用参数。实际上,对于任一原始日志,均可以使用上述实施例所述的清洗方式提取其中包含的接口及其调用参数。而对于任一原始日中中的任一接口,可以通过上述实施例所述的边界召回和/或模糊化进行处理,以规范预处理所得接口参数对的格式,进而保证后续频繁模式搜索的顺利进行。
步骤102,对所述接口参数对集合中的多个接口参数对进行频繁模式搜索,以筛选出多个目标接口参数对,其中任一目标接口参数对所包含的目标接口和所述目标接口的目标调用参数满足预设频繁条件。
在一实施例中,软件测试设备可以通过较为成熟有效的频繁模式挖掘算法实现对多个接口参数的频繁模式搜索,例如,可以采用Apriori(先验)算法或者FP-Growth算法。上述两种算法具有不同的特性,因此适用于不同的业务场景,可以根据接口的调用参数的个数选择相应的算法进行计算。一般情况下,Apriori算法采用逐层搜索的迭代方式进行频繁模式搜索,因此该算法的实现过程无需复杂的理论推导,实现方式较为简单,因此可以在接口的调用参数的个数较少的情况下使用该算法;而FP-Growth算法采用分而治之的策略,只需遍历两次待挖掘数据,即可完成频繁模式搜索,因此更适用于大数据量场景下的频繁模式搜索,所以可以在接口的调用参数的个数较多的情况下使用该算法。其中,因为在实际应用场景下,从大量的原始日志中通常能够提取出多个被调用的接口,而且各个接口的调用参数个数相差较大,所以可以将从原始日志中提取出的各个接口的调用参数的数量平均值作为上述“接口的调用参数的个数”,以确定相应的频繁模式搜索算法。
其中,在采用上述Apriori算法时,对于接口参数对集合中的多个接口参数对,可以通过下述方式筛选出接口参数对集合中的目标接口参数对。软件测试设备可以生成多个接口参数对分别对应的单参数对列表,并筛除单参数对列表中支持度小于一级支持度阈值的参数对表项,其中,该单参数对列表中的任一参数对表项唯一对应于一个接口参数对;然后可以将单参数对列表中剩余的参数对表项两两组合以生成双参数对列表,并对该双参数对列表中的各个双参数对按照相同表项进行排序,并从排序后列表中筛除其中支持度小于二级支持度阈值的参数对表项,类似于对上述处理过程,可以依次增大参数对列表中参数对表项所包含参数对的个数,并迭代执行上述筛除操作,直至参数对列表中的所有参数对表项的支持度均小于相应的支持度阈值时停止,并将此时各个参数对列表中剩余的参数对表项作为筛选出的目标接口参数对。其中,上述一级支持度阈值、二级支持度阈值……等,可以均为预设的固定值,而且各个支持度阈值可以相同或不同,具体值可以根据实际使用场景进行设置,本公开实施例并不对此进行限制。
在另一实施例中,软件测试设备还可以利用并行运行的多个处理器,采用基于数据划分的算法实现频繁模式搜索。例如,可以先将参数对集合划分为多个接口参数对子集合,并分别多个处理器分别并行对多个接口参数对子集合的多个接口参数对进行频繁模式搜索,然后将多个处理器分别并行处理得到的多组中间接口参数对合并至中间接口参数对集合,最后从该中间接口参数对集合所包含的各个中间接口参数中筛选出满足上述预设频繁条件的多个中间接口参数对,以作为目标接口参数对。其中,上述多个处理器可以由同一管理处理器进行管理,以对接口参数对分别进行筛选处理,并在对接口参数对子集合进行频繁模式搜索完成后,分别将处理得到的多组中间接口参数对发送至该管理处理器,以由该管理处理器求取上述支持度并筛选出多个目标频繁模式搜索。上述任一处理器对接口参数对子集合进行频繁模式搜索的过程中可以采用上述Apriori算法,也可以采用相关技术中的Eclat算法等,本公开实施例并不对此进行限制。通过并行运行的多个处理器并行处理互不相交的多个接口参数对子集合,从而将对于接口参数对集合中的S个接口参数对进行的频繁模式搜索处理过程,划分为同步进行的对S/n(其中n为接口参数对子集合的数量)个接口参数对进行的频繁模式搜索处理过程,有效利用了多处理器的并行处理能力,显著降低了频繁模式搜索的耗时,提升了测试用例的生成效率。
在一实施例中,上述预设频繁条件可以包括:接口的支持度不小于预设的支持度阈值,且接口与其对应的调用参数的置信度不小于预设的置信度阈值,其中,任一接口的支持度用于表征包含该接口的接口参数对在上述接口参数对集合中所占的比例(如包含该接口的接口参数对的个数与接口参数对集合中全部接口参数对总数的比值),任一接口与其对应的调用参数的置信度用于表征该任一接口与该调用参数之间的对应关系的可信程度;此时,软件测试设备可以根据上述支持度阈值和置信度阈值筛选目标接口参数对。例如,可以将依次计算各个接口在接口参数对集合中的支持度,并将支持度不小于支持度阈值的接口确定为频繁接口,然后依次计算确定出的各个频繁接口的与其对应的调用参数在接口参数对集合中的置信度,并将置信度不小于置信度阈值的调用参数确定为相应频繁接口的频繁参数,最后使用各个频繁接口及其各自对应的频繁参数创建接口参数对,以作为筛选出的目标接口参数对。通过该方式筛选出的多个目标接口参数对能够严格符合上述支持度阈值和置信度阈值,从而保证目标接口参数对能够反映原始日志中各个目标接口的真实频繁程度。
进一步的,上述支持度阈值和置信度阈值可以在进行频繁模式搜索之前,通过配置文件预先配置,例如,可以先根据实际应用场景确定上述支持度阈值和置信度阈值,然后将其保存在预设的配置文件中的预设位置处,以便软件测试设备在使用时能够从该文件中获取上述阈值。其中,为充分保证对于接口所对应核心测试场景的覆盖度,可以将上述支持度阈值设置的相对较低;同时,为筛除尽可能多的弱相关关系的接口参数对,可以将上述置信度阈值设置的相对较高。当然,上述支持度阈值和置信度阈值的具体取值可以根据实际应用场景、目标软件的实际实际业务需求等情况进行设置,本公开实施例并不对此进行限制。
需要说明的是,在上述各个实施例中,通过接口和其调用参数创建接口参数对时,可以将该接口与其至少一个调用参数依次按序拼接为接口参数对。例如,可以将接口J1置于最前的接口字段中,并将其三个调用参数P1、P2和P3依次按序排列在各个参数字段中,然后使用特殊字符“|”(当然也可以为其他字符)作为上述各个字段之间的分隔符,从而创建完成接口参数对“J1|P1|P2|P3”,表征该接口参数对对应的频繁接口为J1,频繁接口J1对应的各个频繁参数分别为P1、P2和P3。例如,上述接口参数对“J1|P1|P2|P3”可以为“URL|Chapter|PageNum|Mode”;进一步的,在用户设备请求查看某地址下的文档资源这一场景下,该接口参数对“J1|P1|P2|P3”可以为“https://12345678|第5章|第2页|read”。
步骤103,根据所述多个目标接口参数对生成分别用于测试各个目标接口的测试用例。
在本实施例中,通过上述方式能够筛选出多个目标接口参数对,其中每一目标接口参数对对应于一个目标接口(即该目标接口参数对中包含的接口)。当然,多个目标接口参数对可以对应于同一个目标接口,例如,对应于同一接口J1,可以存在“J1|P1|P2|P3”、“J1|P1|P2”和“J1|P1|P3|P4”共3个目标接口参数对。
在一实施例中,可以通过下述方式生成相应的测试用例:从多个目标接口参数对中确定包含任一目标接口的至少一个特定接口参数对,然后确定各个特定接口参数对分别对应的原始日志,并根据各个原始日志确定分别对应于至少一个特定接口参数对的至少一组必备调用参数,再将目标接口与上述至少一组必备调用参数分别组合以构建至少一个用例接口参数对,并使用原始日志的参数取值配置至少一个用例接口参数对中的必备调用参数,从而可以将配置完成后的至少一个用例接口参数对作为针对上述任一目标接口的至少一个测试用例。
根据本公开的实施例,将目标软件运行过程中产生的原始日志作为样本,并通过对原始日志进行预处理得到的接口参数对中包含的多个接口参数对进行频繁模式搜索,筛选出满足预设频繁条件的目标接口参数对,进而基于这部分接口参数对生成用于测试目标接口的测试用例。因为上述原始日志是目标软件运行过程中产生的用于接口调用的真实流量,所以通过对大量原始日志进行频繁模式搜索得到的目标接口参数对能够反映软件接口所面临的尽可能多的业务场景,因而在原始日志的基础上生成的测试用例能够较为完整的覆盖核心测试场景,从而有效避免测试功能缺失。而且,因为上述频繁模式搜索的对象是对原始日志进行预处理得到的接口参数对,即能够实现测试用例生成流程的完全自动化,所以并不需要测试人员自行设计或生成测试用例,有效降低了测试人员的时间成本,显著提升了整体测试效率。
图2是本说明书一示例性实施例示出的另一种测试用例的生成方法的流程图,如图2所示,该方法应用于软件测试设备。下面结合图2对本公开实施例所述方法对应的测试用例的生成过程进行详细说明,该过程可以包括下述步骤201-207。
步骤201,配置config文件。
在本实施例中,可以设置预设频繁条件为:接口的支持度不小于预设的支持度阈值,且调用参数的置信度不小于预设的置信度阈值,进而可以将上述支持度阈值和置信度阈值保存在预设的config文件(该文件即为配置文件)中的预设位置处,以便软件测试设备在使用时能够从该文件中获取上述阈值。其中,为充分保证对于接口所对应核心测试场景的覆盖度,可以将上述支持度阈值设置的相对较低,如可以设置为0.1、0.15等;同时,为筛除尽可能多的弱相关关系的接口参数对,可以将上述置信度阈值设置的相对较高,如可以设置为0.85、0.99等。当然,上述支持度阈值和置信度阈值的具体取值可以根据实际应用场景、目标软件的实际实际业务需求等情况进行设置,本公开实施例并不对此进行限制。
步骤202,获取目标软件产生的原始日志。
在本实施例中,可以通过连接处于在线运行状态的目标软件并进行相应的参数配置,获取目标软件实时产生的原始日志;或者,也可以将从预设存储路径下获取目标软件在历史运行过程中产生的原始日志,如前一天、前一周、前一月的历史日志等;再或者,还可以按照地域范围获取处于不同地区的用户设备运行目标软件产生的原始日志等,本公开实施例并不对此进行限制。
在本实施例中,生成的测试用例可以用于测试待测试软件的目标接口,而该待测试软件可以用于更新上述目标软,即上述待测试软件可以为用于更新上述目标软件的高版本软件。在软件更新前后,待测试软件和目标软件之间通常包含较多的相同接口,所以在对目标软件进行更新之前,使用目标软件运行过程中产生的原始日志生成测试用例,有助于保证所生成的测试用例更加符合待测试软件上线后的真实流量(因为上述原始日志可以用于表征目标软件运行过程中的真实流量及接口请求情况),进而保证了对待测试软件进行测试的测试结果的准确性。
其中,通过该方式获取得到的任一原始日志中可以包括多种数据,例如可以包括该日志所对应请求调用的接口以及该接口的调用参数。还可以包括与本方案无关的其他数据,如请求响应(或称respons)数据、请求的执行对象的入参(或称input)数据、模式(或称mode)数据、调试(或称debug)数据等。
步骤203,对原始日志进行预处理以得到多个接口参数对。
对于获取到的大量原始日志,可以进行统一的预处理,其中,对于其中任一原始日志进行预处理的过程,即是从该原始日志的日志数据中提取被该原始日志所对应请求调用的接口及其调用参数的过程。例如,可以先对原始日志进行清洗处理,进一步的,在必要情况下还可以执行边界召回和模糊化处理,下面分别进行说明。
对于任一原始日志进行清洗处理时,可以先确定该原始日志中包含的被调用的接口,并在原始日志中还包含接口的调用参数的情况下,提取该接口及其调用参数。这一过程可以通过正则匹配的方式实现,例如,可以预先设置记录有预设规则的若干正则表达式,然后依次检查日志数据中匹配于该正则表达式的日志数据,并将匹配的日志数据分别确定为接口或其调用参数。以URL形式的接口为例,可以设置正则表达式var matchString='https://i.cnblogs.com/EditPosts.aspx',以通过该表达式匹配日志数据中以“https://”为头部的全部URL。当然,也可以对其他形式的接口或其调用参数进行查找与提取,不再一一赘述。通过正则表达式匹配的方式,能够准确提取到符合预设规则的全部接口及其调用参数,有助于保证清洗的准确性。
进一步的,在原始日志中仅包含接口而不包含其调用参数的情况下,表明该原始日志对应的请求无需参数即可实现对接口的调用。但是为了使用该原始日志中包含的接口进行后续统计处理,需要将该接口创建为一个接口参数对,因此可以为不存在调用参数的单一接口指定预设参数,以实现对该接口的边界召回,从而保证所生成的全部接口参数对符合统一的格式规范。例如,在原始日志中不包含接口的调用参数的情况下,可以为该接口指定预设参数;然后使用该接口和上述预设参数创建接口参数对,并将该接口参数对记录在接口参数对集合中。如可以为所有不存在调用参数的单一接口均添加一个“null”空字段,从而保证能够建立这类单一接口对应的接口参数对,以使其参与后续的频繁模式搜索中,进而保证了对大量原始日志进行频繁模式搜索的结果准确性。
另外,任一接口对应的调用参数可能包含时间戳、ID、日期等经常变化的数字(同一类原始日志中可能仅有这部分数字不相同),这类变化的数字可能会在后续的频繁模式搜索中引入频率无关因素,所以为排除这类数字的不利影响,可以对这类数据进行模糊化处理。例如,可以在接口参数对中任一调用参数的取值为预设格式的数字的情况下,使用预设字符替换该任一调用参数,从而将预设格式的数字(即上述经常变化的数字)转换为预设的无关字符。其中,上述预设格式可以为“xx/yy/zz”的日期格式、预设位置处包含固定字符(如数字头部为“id”的用户标识、头部为“http://”的URL)或者数字之间符合预设校验规则的ID格式等;另外,上述预设字符可以为“*”、“…”等特殊字符,本公开对于上述预设格式和预设字符的具体形式并不进行限制。
实际业务场景下,任一原始日志中可能包含至少一个被调用的接口,任一接口可能对应于至少一个调用参数。对于其中任一原始日志,均可以使用上述实施例所述的清洗方式提取其中包含的接口及其调用参数。而对于任一原始日志中的任一接口,可以通过上述实施例所述的边界召回和/或模糊化进行处理,以规范预处理所得接口参数对的格式,保证后续频繁模式搜索的顺利进行。
步骤204,选取频繁模式挖掘算法。
在本实施例中,软件测试设备可以通过Apriori算法或者FP-Growth算法等较为成熟有效的频繁模式挖掘算法实现对多个接口参数的频繁模式搜索,频繁模式搜索的过程即为在接口参数对集合中筛选出目标接口参数对的过程。因为上述算法具有不同的特性,所以适用于不同的业务场景,可以根据接口的调用参数的个数选择相应的算法进行计算。例如,可以在接口的调用参数的个数较少的情况下使用Apriori算法;而在接口的调用参数的个数较多的情况下使用FP-Growth算法。
因为在实际应用场景下,从大量的原始日志中通常能够提取出多个被调用的接口,而且各个接口的调用参数个数相差较大(如一条原始日志中的接口J1存在3个参数,另一条原始日志中的接口J2存在20个参数),所以可以将从原始日志中提取出的各个接口的调用参数的数量平均值作为上述“接口的调用参数的个数”,以确定具体使用的频繁模式挖掘算法。如可以设置数量阈值为15,则在上述数量平均值小于15的情况下,选用Apriori算法对预处理得到的全部接口参数对进行频繁模式搜索;而在上述数量平均值小于15的情况下,选用FP-Growth算法进行频繁模式搜索。
步骤205,对多个接口参数对进行频繁模式搜索以得到多个目标接口参数对。
通过Apriori算法或者FP-Growth算法对接口参数对进行频繁模式搜索的具体过程可以参见相关技术中公开的内容,本公开实施例并不对此进行限制。上述频繁模式搜索过程中可以按照预设阈值设置预设频繁条件,例如可以利用前述步骤201中在配置文件中设置的支持度阈值和置信度阈值设置预设频繁条件为:接口的支持度不小于预设的支持度阈值且调用参数的置信度不小于预设的置信度阈值。以FP-Growth算法为例,通过该预设频繁条件执行接口参数对的基本思路可以参见下述图3所示实施例的记载,此处暂不赘述。当然,在上述频繁模式搜索过程中,还可以在搜索出上述目标接口参数对后,进一步确定各个目标接口参数对之间的关联规则,相应的,下述步骤206中可以基于上述目标接口参数对及其之间的关联规则构建测试用例。
步骤206,利用多个目标接口参数对生成针对多个目标接口的测试用例。
对于上述步骤205中得到的多个接口参数对,可以进一步生成针对多个目标接口的测试用例,具体生成生成过程可以参见下述图4所示实施例的记载,此处暂不赘述。
对应于上述步骤205的具体步骤可参见图3所示的一种频繁模式搜索的流程图。如图3所示的频繁模式搜索过程可以包括下述步骤2051-2055。
步骤2051,计算预处理得到的多个接口参数对对应的各个接口的支持度。
对于预处理得到的接口参数对集合,可以依次确定该集合中各个接口参数对分别对应的接口,例如,在任一接口参数对中包含某一接口J1的情况下,可以确定该任一接口参数对对应于该接口J1,当然,任一接口参数对中可以同时对应于多个接口,如接口J1、J2、J3和J4等。某一接口参数对对应于某一接口,表明用于提取该接口参数对的原始日志对应的请求用于调用该接口。
在一实施例中,可以根据各个接口在接口参数对集合中对应的接口参数对的个数,计算各个接口在该接口参数对集合中的支持度。例如,在接口参数对集合中包含的10个接口参数对分别为“J1|P1”、“J2|P2|P4”、“J1|P2|P5”、“J3|P1”、“J2|P5”、“J3|P5”、“J3|P5”、“J1|P3”、“J1|P3”和“J4|P3|P2”的情况下(其中,接口参数对“Jx|Py”表征接口Jx对应的参数为Py),可以统计得到接口J1、J2、J3和J4在接口参数对集合中的出现比例值分别为0.4、0.2、0.3和0.1。
步骤2052,筛选支持度不小于预设的支持度阈值的频繁接口。
承接于上述实施例,假设预设的支持度阈值为0.25,则接口参数对集合中各个接口参数对对应的全部接口J1、J2、J3和J4中,接口J1和J3会被确定为频繁接口,从而从全部接口中筛选出J1和J3作为频繁接口,进而能够从接口参数对集合中筛选出J1和J3对应的“J1|P1”、“J1|P2|P5”、“J3|P1”、“J3|P5”、“J3|P5”、“J1|P3”和“J1|P3”作为中间接口参数对。
步骤2053,计算各个频繁接口的各个调用参数的置信度。
进一步的,可以依次计算P1和P3分别对应的各个参数的置信度。例如,对于接口J1,可以统计出其对应的各个参数组合“P1”、“P2|P5”和“P3”出现的比例值依次为0.25、0.25和0.5。类似的,可以计算出接口J3对应的各个参数组合“P1”和“P5”出现的比例值分别为0.33和0.67。
步骤2054,筛选各个接口的调用参数中置信度不小于预设置信度预置的频繁参数。
承接于上述实施例,假设预设的置信度阈值为0.3,则可以从J1对应的全部参数组合中确定出“P3”为其频繁参数,并从J3对应的全部参数组合中确定出“P5”为其频繁参数。
步骤2055,通过筛选出的各个频繁接口和各个频繁接口的频繁参数创建目标接口参数对。
此时,可以利用上述频繁接口和频繁参数创建目标接口参数对。例如对,对于接口J1,可以将接口J1置于接口字段,将参数P3置于参数字段,从而创建得到目标接口参数对“J1|P3”;类似度对于接口J3,可以将接口J3置于接口字段,将参数P5置于参数字段,从而创建得到目标接口参数对“J3|P5”。
实际上,对于接口参数对集合中全部接口参数对对应的全部接口,均可以使用上述方式创建相应的目标接口参数对,不再赘述。至此,完成针对接口参数对集合中多个接口参数对的频繁模式搜索过程。
对应于上述步骤206的具体步骤可参见图4所示的一种针对目标接口生成测试用例的流程图。如图4所示的测试用例的生成过程可以包括下述步骤2061-2066。
步骤2061,确定目标接口。
确定筛选出的多个目标接口参数对对应的全部接口后,可以对各个接口分别进行下述步骤2062-2066的处理。首先,将全部接口中的任一接口确定为目标接口。
步骤2062,筛选目标接口对应的特定接口参数对。
在确定目标接口后,可以将频繁模式搜索得到的所有目标接口参数对中确定对应于上述目标接口的特定接口参数对。因为目标接口可能会被以不同方式调用多次,所以该方式可以筛选出目标接口对应的全部特定接口参数对。
步骤2063,确定筛选出的各个特定接口参数对对应的原始日志。
步骤2064,确定目标接口的至少一组必备调用参数。
进一步的,对于目标接口对应的全部接口参数对,可以进一步的确定各自对应的原始日志,然后基于该原始日志确定目标接口的至少一组必备调用参数。
例如,对于任一目标J,可以多个目标接口参数对中确定J对应的3个特定接口参数对“J|P1|P2|P3”、“J|P1|P2”和“J|P1|P3|P4”,进而根据三者分别对应的原始日志确定出三者分别对应的完整调用参数为“P1、P2、P3”、“P1、P2、P3”和“P1、P3、P4”,从而根据出接口J对应的两组必备调用参数为“P1、P2、P3”和“P1、P3、P4”,进而将二者与接口J组合得到两个用例接口参数对“J|P1|P2|P3”和“J|P1|P3|P4”。
步骤2065,使用原始日志中的参数取值配置必备调用参数。
进一步的,可以分别获取上述两个用例接口参数对分别对应的参数“P1、P2、P3”和“P1、P3、P4”的具体取值,并将各个具体取值相应的反填入两个用例接口参数对中,最终得到针对接口J的两个测试用例,如可以为“https://123123|60|down|left”和“https://123123|60|left|0”,此时得到的测试用例既可以用于生成针对接口J的请求。
步骤2066,删除相同取值的必备调用参数。
在上述步骤2065中,通过三组完整调用参数得到两组必备调用过程,实际上即是对接口参数对进行的第一去重操作,以保证同一目标接口对应的多个用例接口参数对中的多组用例接口参数互不相同。
而同一目标接口的多个原始日志中对应于必备参数的具体参数取值可能相同(如同一用户设备在不同时刻向服务端多次发送执行同一操作的多个请求),因此在将各个具体指反填入用例接口参数对中之后,可能存在多个接口参数对具有相同取值的必备参数。例如,在接口J对应的原始日志中存在两条包含“P1、P2和P3”这一组必备参数的原始日志的情况下,反填后可能得到对应于接口J三条测试用例,如可以为“https://123123|60|down|left”、“https://123123|61|down|left”和“https://123123|60|left|0”,此时这三条测试用例均可以用于测试针对接口J。然而,在反填后也可能得到对应于接口J的测试用例分别为“https://123123|60|down|left”、“https://123123|60|down|left”和“https://123123|60|left|0”,此时这三条测试用例中的前两条完全一致(如不同用户设备在不同时刻向服务端两次发送执行同一操作的两个请求),因此为避免重复执行,可以仅保留二者中的其中一条,最终得到用于测试目标接口J的两条测试用例“https://123123|60|down|left”和“https://123123|60|left|0”。通过上述方式生成的测试用例即可用于创建针对目标接口的请求,已测试目标接口的功能。
当然,对于全部目标接口参数对对应的各个接口,均可以分别使用上述步骤所述的方法生成其对应的测试用例,不再赘述。
对应于上述实施例所述的测试用例的生成方法,本公开实施例还提出一种如图5所示的测试用例的生成***。图5是根据本公开的实施例示出的一种测试用例的生成***的示意图,如图5所示,该***可以包括文件输入单元501、日志预处理单元502、接口参数对单元503和测试用例生成单元504等四部分。
其中,文件传输单元501用于向日志预处理单元502发送包含原始日志的日志文件,以便向日志预处理单元502输入原始日志,文件传输单元501还可以向日志预处理单元502发送包含预设的支持度阈值和置信度阈值的配置文件(即前述配置文件),以向日志预处理单元502指定上述支持度阈值和置信度阈值。对应于图1所示实施例,该文件传输单元501执行的动作可参见前述步骤201-202的记载,此处不再赘述。
日志预处理单元502可以对上述日志文件中包含的原始日志进行清洗、边界召回和/或模糊化等预处理,以将其中包含的接口及其调用参数提取出来,并创建相应的接口参数对,以将创建的各个接口参数对构成的接口参数对集提供至接口参数对单元503。对应于图1所示实施例,该日志预处理单元502执行的动作可参见前述步骤203的记载,此处不再赘述。
接口参数对单元503可以用于根据接口中包含的参数的平均个数确定频繁模式搜索算法,如可以在平均个数小于预设阈值的情况下,选用Apriori算法,或者在平均个数不小于预设阈值的情况下,选用FP-Growth算法。当然,该选择过程并非必须,也可以预先指定频繁模式挖掘算法进行频繁模式搜索处理,该处理过程中可以用到上述预设的支持度阈值。对于频繁模式搜索处理后得到的多个接口参数对,可以进一步通过深度挖掘的方式使用预设的置信度阈值筛选其中的目标接口参数对,并将筛选出的目标接口参数对提供至测试用例生成单元504。对应于图1所示实施例,该接口参数对单元503执行的动作可参见前述步骤204-205的记载,此处不再赘述。
测试用例生成单元504可以在接收到目标W后,使用各个目标接口参数对分别对应的原始日志的参数取值反填入生成的用例接口参数对的参数中,以实现对目标接口参数对的可执行化。进一步的,对于任一接口,在其对应的多个用例接口参数对中的参数及其取值相同的情况下,可以选取其中之一作为该接口的用例接口参数对,以实现对用例接口参数对的去重处理。经过上述处理得到的对应于各个接口的多个用例接口参数对,即可作为分别对应于各个接口的测试用例,因此,测试用例生成单元504可以输出得到的上述测试用例。进一步的,基于上述测试用例创建的请求可以被用于测试相应的接口。对应于图1所示实施例,该测试用例生成单元504执行的动作可参见前述步骤206的记载,此处不再赘述。
与前述测试用例的生成方法的实施例相对应地,本公开还提出了测试用例的生成装置的实施例。
图6是根据本公开的实施例示出的一种测试用例的生成装置的示意框图。本实施例所示的测试用例的生成装置可以适用于软件测试设备,该软件测试设备可以为服务器,如可以为包含一独立主机的物理服务器、主机集群承载的虚拟服务器、云服务器等;或者也可以为终端设备,如电脑、平板、手机、可穿戴设备等电子设备,不再赘述。
如图6所示,所述测试用例的生成装置可以包括:
预处理模块601,被配置为获取目标软件运行时产生的原始日志,并对所述原始日志进行预处理得到接口参数对集合,所述接口参数对集合中的任一接口参数对包含接口和所述接口的调用参数;
模式挖掘模块602,被配置为对所述接口参数对集合中的多个接口参数对进行频繁模式搜索,以筛选出多个目标接口参数对,其中任一目标接口参数对所包含的目标接口和所述目标接口的目标调用参数满足预设频繁条件;
用例生成模块603,被配置为根据所述多个目标接口参数对生成分别用于测试各个目标接口的测试用例。
可选的,所述预处理模块601包括:
确定子模块6011,被配置为确定所述原始日志中包含的被调用的接口;
提取子模块6012,被配置为在所述原始日志中包含所述接口的调用参数的情况下,提取所述接口及所述调用参数;
创建子模块6013,被配置为使用所述接口和所述调用参数创建接口参数对,并将所述接口参数对记录在接口参数对集合中。
可选的,还包括:
参数指定模块604,被配置为在所述原始日志中不包含所述接口的调用参数的情况下,为所述接口指定预设参数;
所述创建子模块6013还被配置为使用所述接口和所述预设参数创建接口参数对,并将所述接口参数对记录在接口参数对集合中。
可选的,还包括:
参数替换模块605,被配置为在所述接口参数对中任一调用参数的取值为预设格式的数字的情况下,使用预设字符替换所述任一调用参数。
可选的,所述模式挖掘模块602包括:
搜索子模块6021,被配置为将所述接口参数对集合划分为多个接口参数对子集合,并通过多个处理器分别对所述多个接口参数对子集合所包含的多个接口参数对进行频繁模式搜索;
合并子模块6022,被配置为将所述多个处理器分别并行处理得到的多组中间接口参数对合并至中间接口参数对集合;
筛选子模块6023,被配置为从所述中间接口参数对集合所包含的各个中间接口参数中筛选出满足所述预设频繁条件的多个中间接口参数对,以作为所述目标接口参数对。
可选的,所述预设频繁条件包括:接口的支持度不小于预设的支持度阈值,且接口与其对应的调用参数的置信度不小于预设的置信度阈值,其中,任一接口的支持度用于表征包含所述任一接口的接口参数对在所述接口参数对集合中所占的比例,任一接口与其对应的调用参数的置信度用于表征所述任一接口与该调用参数之间的对应关系的可信程度;所述模式挖掘模块602还被配置为:
依次计算各个接口在所述接口参数对集合中的支持度,并将支持度不小于所述支持度阈值的接口确定为频繁接口;
依次计算各个频繁接口与其对应的调用参数在所述接口参数对集合中的置信度,并将置信度不小于所述置信度阈值的调用参数确定为相应频繁接口的频繁参数;
使用所述各个频繁接口及其各自对应的频繁参数创建接口参数对,以作为筛选出的所述目标接口参数对。
可选的,还包括:
阈值配置模块606,被配置为在进行所述频繁模式搜索之前,通过配置文件配置所述支持度阈值和所述置信度阈值。
可选的,所述用例生成模块603还被配置为:
从所述多个目标接口参数对中确定包含任一目标接口的至少一个特定接口参数对;
确定各个所述特定接口参数对分别对应的原始日志,并根据各个原始日志确定分别对应于所述至少一个特定接口参数对的至少一组必备调用参数;
将所述目标接口与所述至少一组必备调用参数分别组合以构建至少一个用例接口参数对,并使用所述原始日志的参数取值配置所述至少一个用例接口参数对中的必备调用参数,将配置完成后的所述至少一个用例接口参数对作为针对所述任一目标接口的至少一个测试用例。
可选的,所述测试用例用于测试待测试软件的所述目标接口,所述待测试软件用于更新所述目标软件。
本公开的实施例还提出一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述任一实施例所述的测试用例的生成方法。
本公开的实施例还提出一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一实施例所述的测试用例的生成方法。
图7是根据本公开的实施例示出的一种电子设备的示意框图。例如,电子设备700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图7,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件718。
处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述测试用例的生成方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在电子设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理***,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
多媒体组件708包括在电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件718发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到电子设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
图像采集组件716可以用于采集被摄对象的图像数据,以形成关于被摄对象的图像,并可以对该图像进行必要的处理。该图像采集组件716可以包括相机模组,相机模组中的图像传感器(Sensor)通过镜头感应来自被摄对象的光线,将得到的感光数据提供给图像信号处理器(ISP,Image Signal Processing),由后者根据感光数据生成对应于被摄对象的图像。其中,上述图像传感器可以为CMOS传感器或CCD传感器,当然,也可以为红外传感器、深度传感器等;相机模组可以内置在电子设备700中,也可以为电子设备700的外接模组;上述ISP可以内置在相机模组中,也可以外挂在上述电子设备中(不在相机模组内)。
通信组件718被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件718经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件718还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在本公开一实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述测试用例的生成方法。
在本公开一实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述测试用例的生成方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序和/或指令,所述计算机程序和/或指令被处理器执行时实现上述任一实施例所述的测试用例的生成方法。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
需要说明的是,在本公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本公开实施例所提供的方法和装置进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。

Claims (10)

1.一种测试用例的生成方法,其特征在于,包括:
获取目标软件运行时产生的原始日志,并对所述原始日志进行预处理得到接口参数对集合,所述接口参数对集合中的任一接口参数对包含接口和所述接口的调用参数;
对所述接口参数对集合中的多个接口参数对进行频繁模式搜索,以筛选出多个目标接口参数对,其中任一目标接口参数对所包含的目标接口和所述目标接口的目标调用参数满足预设频繁条件;
根据所述多个目标接口参数对生成分别用于测试各个目标接口的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述对所述原始日志进行预处理得到接口参数对集合,包括:
确定所述原始日志中包含的被调用的接口;
在所述原始日志中包含所述接口的调用参数的情况下,提取所述接口及所述调用参数;
使用所述接口和所述调用参数创建接口参数对,并将所述接口参数对记录在接口参数对集合中。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述原始日志中不包含所述接口的调用参数的情况下,为所述接口指定预设参数;
使用所述接口和所述预设参数创建接口参数对,并将所述接口参数对记录在接口参数对集合中。
4.根据权利要求2所述的方法,其特征在于,还包括:
在所述接口参数对中任一调用参数的取值为预设格式的数字的情况下,使用预设字符替换所述任一调用参数。
5.根据权利要求1所述的方法,其特征在于,所述对所述接口参数对集合中的多个接口参数对进行频繁模式搜索,以筛选出多个目标接口参数对,包括:
将所述接口参数对集合划分为多个接口参数对子集合,并通过多个处理器分别对所述多个接口参数对子集合所包含的多个接口参数对进行频繁模式搜索;
将所述多个处理器分别并行处理得到的多组中间接口参数对合并至中间接口参数对集合;
从所述中间接口参数对集合所包含的各个中间接口参数中筛选出满足所述预设频繁条件的多个中间接口参数对,以作为所述目标接口参数对。
6.根据权利要求1所述的方法,其特征在于,所述预设频繁条件包括:接口的支持度不小于预设的支持度阈值,且接口与其对应的调用参数的置信度不小于预设的置信度阈值,其中,任一接口的支持度用于表征包含所述任一接口的接口参数对在所述接口参数对集合中所占的比例,任一接口与其对应的调用参数的置信度用于表征所述任一接口与该调用参数之间的对应关系的可信程度;所述对所述接口参数对集合中的多个接口参数对进行频繁模式搜索,以筛选出多个目标接口参数对,包括:
依次计算各个接口在所述接口参数对集合中的支持度,并将支持度不小于所述支持度阈值的接口确定为频繁接口;
依次计算各个频繁接口与其对应的调用参数在所述接口参数对集合中的置信度,并将置信度不小于所述置信度阈值的调用参数确定为相应频繁接口的频繁参数;
使用所述各个频繁接口及其各自对应的频繁参数创建接口参数对,以作为筛选出的所述目标接口参数对。
7.一种测试用例的生成装置,其特征在于,包括:
预处理模块,被配置为获取目标软件运行时产生的原始日志,并对所述原始日志进行预处理得到接口参数对集合,所述接口参数对集合中的任一接口参数对包含接口和所述接口的调用参数;
模式挖掘模块,被配置为对所述接口参数对集合中的多个接口参数对进行频繁模式搜索,以筛选出多个目标接口参数对,其中任一目标接口参数对所包含的目标接口和所述目标接口的目标调用参数满足预设频繁条件;
用例生成模块,被配置为根据所述多个目标接口参数对生成分别用于测试各个目标接口的测试用例。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的测试用例的生成方法。
9.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6中任一项所述的测试用例的生成方法。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1至6中任一项所述的测试用例的生成方法。
CN202110121343.3A 2021-01-28 2021-01-28 测试用例的生成方法、装置、电子设备和存储介质 Active CN112783779B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110121343.3A CN112783779B (zh) 2021-01-28 2021-01-28 测试用例的生成方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110121343.3A CN112783779B (zh) 2021-01-28 2021-01-28 测试用例的生成方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN112783779A true CN112783779A (zh) 2021-05-11
CN112783779B CN112783779B (zh) 2024-06-04

Family

ID=75759548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110121343.3A Active CN112783779B (zh) 2021-01-28 2021-01-28 测试用例的生成方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN112783779B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878496A (zh) * 2023-02-16 2023-03-31 中国铁塔股份有限公司 一种算法能力测试方法及装置
CN116841913A (zh) * 2023-08-31 2023-10-03 美云智数科技有限公司 测试用例生成方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067639A (en) * 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
US20090094486A1 (en) * 2007-10-05 2009-04-09 Stefan Dipper Method For Test Case Generation
KR20130022708A (ko) * 2011-08-26 2013-03-07 강원대학교산학협력단 요구 인터페이스의 명세 정보를 이용한 소프트웨어 컴포넌트의 테스트 케이스 생성 방법 및 실행 방법
US20140289699A1 (en) * 2009-08-18 2014-09-25 Adobe Systems Incorporated Methods and Systems for Data Service Development
US20180004637A1 (en) * 2016-07-01 2018-01-04 Wipro Limited Method and a system for automatically identifying violations in one or more test cases
US20180210823A1 (en) * 2017-01-25 2018-07-26 Wipro Limited System and method for performing script-less unit testing
CN109726098A (zh) * 2018-03-16 2019-05-07 平安科技(深圳)有限公司 接口测试方法、装置及计算机可读存储介质
CN110119354A (zh) * 2019-04-19 2019-08-13 平安普惠企业管理有限公司 基于测试用例生成的软件测试方法、装置及电子设备
CN110147320A (zh) * 2019-04-19 2019-08-20 平安普惠企业管理有限公司 接口测试方法、装置及电子设备
CN110334009A (zh) * 2019-05-28 2019-10-15 中国平安人寿保险股份有限公司 测试用例自动生成方法、装置、终端及存储介质
CN110750442A (zh) * 2019-09-06 2020-02-04 平安医疗健康管理股份有限公司 测试用例的生成方法、装置、设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067639A (en) * 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
US20090094486A1 (en) * 2007-10-05 2009-04-09 Stefan Dipper Method For Test Case Generation
US20140289699A1 (en) * 2009-08-18 2014-09-25 Adobe Systems Incorporated Methods and Systems for Data Service Development
KR20130022708A (ko) * 2011-08-26 2013-03-07 강원대학교산학협력단 요구 인터페이스의 명세 정보를 이용한 소프트웨어 컴포넌트의 테스트 케이스 생성 방법 및 실행 방법
US20180004637A1 (en) * 2016-07-01 2018-01-04 Wipro Limited Method and a system for automatically identifying violations in one or more test cases
US20180210823A1 (en) * 2017-01-25 2018-07-26 Wipro Limited System and method for performing script-less unit testing
CN109726098A (zh) * 2018-03-16 2019-05-07 平安科技(深圳)有限公司 接口测试方法、装置及计算机可读存储介质
CN110119354A (zh) * 2019-04-19 2019-08-13 平安普惠企业管理有限公司 基于测试用例生成的软件测试方法、装置及电子设备
CN110147320A (zh) * 2019-04-19 2019-08-20 平安普惠企业管理有限公司 接口测试方法、装置及电子设备
CN110334009A (zh) * 2019-05-28 2019-10-15 中国平安人寿保险股份有限公司 测试用例自动生成方法、装置、终端及存储介质
CN110750442A (zh) * 2019-09-06 2020-02-04 平安医疗健康管理股份有限公司 测试用例的生成方法、装置、设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
S.GHOSH, A.P.MATHUR: "Interface mutation", SOFTWARE TESTING, VERIFICATION AND RELIABILITY, vol. 11, no. 4 *
吴奎;周献中;萧毅鸿;施爱博;田卫萍;: "基于本体的Web服务连接研究", ***工程与电子技术, no. 01 *
张盛: "基于接口参数的列控中心测试用例生成算法", 计算机工程, vol. 37, no. 1 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878496A (zh) * 2023-02-16 2023-03-31 中国铁塔股份有限公司 一种算法能力测试方法及装置
CN116841913A (zh) * 2023-08-31 2023-10-03 美云智数科技有限公司 测试用例生成方法、装置、电子设备及存储介质
CN116841913B (zh) * 2023-08-31 2023-12-29 美云智数科技有限公司 测试用例生成方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN112783779B (zh) 2024-06-04

Similar Documents

Publication Publication Date Title
US11663468B2 (en) Method and apparatus for training neural network, and storage medium
CN105144156B (zh) 将元数据与个人图像集合中的图像相关联
CN105930247A (zh) ***重启问题的处理方法、装置以及移动终端
CN113239232B (zh) 图神经网络推荐***、方法、装置、电子设备及存储介质
CN111553464B (zh) 基于超网络的图像处理方法、装置及智能设备
CN112783779A (zh) 测试用例的生成方法、装置、电子设备和存储介质
CN111461304A (zh) 分类神经网络的训练方法、文本分类方法、装置及设备
CN111984803B (zh) 多媒体资源处理方法、装置、计算机设备及存储介质
CN106126592B (zh) 搜索数据的处理方法及装置
CN104636164A (zh) 启动页面生成方法及装置
CN112148923B (zh) 搜索结果的排序方法、排序模型的生成方法、装置及设备
CN114925092B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN110941727B (zh) 一种资源推荐方法、装置、电子设备及存储介质
CN112131466A (zh) 群组展示方法、装置、***和存储介质
CN110019916A (zh) 基于用户画像的事件处理方法、装置、设备和存储介质
CN110309339A (zh) 图片标签生成方法及装置、终端及存储介质
CN107707759B (zh) 终端控制方法、装置以及***、存储介质
CN113779257A (zh) 文本分类模型的解析方法、装置、设备、介质及产品
CN111797746B (zh) 人脸识别方法、装置及计算机可读存储介质
CN111382161A (zh) 状态数据处理方法、装置、电子设备及存储介质
CN113590605B (zh) 数据处理方法、装置、电子设备及存储介质
CN113609380B (zh) 标签体系更新方法、搜索方法、装置以及电子设备
CN114968960A (zh) 日志处理方法、装置、计算机设备及存储介质
CN114201484A (zh) 信息处理方法、装置、电子设备及存储介质
CN112269730A (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