泰宁新闻网

分享一种测试方法、装置、电子设备及可读存储介质与流程

泰宁新闻网 http://www.tainingxinwen.cn 2020-10-19 02:04 出处:网络
这里介绍的分享一种测试方法、装置、电子设备及可读存储介质与流程,小编为您具体介绍一下

这里介绍的分享一种测试方法、装置、电子设备及可读存储介质与流程,小编为您具体介绍一下


本申请涉及计算机技术领域,尤其涉及一种测试方法、装置、电子设备及可读存储介质。



背景技术:

软件开发工具包(softwaredevelopmentkit,sdk)一般是指软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合,它提供一套有一定结构和逻辑的对外开发接口,封装对内的业务逻辑,调用者只需按说明文档使用相应的对外开发接口就可以实现预期的功能,简化了软件开发流程,提高了软件开发速度,并在一定程度上能保证了软件的质量。

通常,在sdk交付使用前,需要对其进行测试,以保证软件的质量,但在测试时,会由于sdk发生线上崩溃和算法异常时,需要修复的周期长,而且问题难复现的问题,导致测试所花费的时间成本较高。



技术实现要素:

有鉴于此,本申请实施例至少提供一种测试方法、装置、电子设备及可读存储介质,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

本申请主要包括以下几个方面:

第一方面,本申请实施例提供一种测试方法,所述测试方法包括:

获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数;

针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值;

将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同;

基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在一种可能的实施方式中,所述针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对,包括:

从所述接口函数对应的算法参数中,筛选出对所述待测试软件工具开发包的功能影响程度排序靠前的至少两个算法参数;

针对筛选的所述至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到筛选的所述至少两个算法参数各自对应的键值对。

在一种可能的实施方式中,所述基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试,包括:

获取所述待测试软件开发工具包中定义的各个接口函数的执行顺序,以及各个接口函数之间的调用关系;

按照所述执行顺序和所述调用关系,依次通过多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在一种可能的实施方式中,针对任一个所述场景测试用例,通过所述场景测试用例,对所述待测试软件开发工具包进行测试,包括:

调用与所述场景测试用例对应的测试算法,将所述场景测试用例中的算法参数的参数值,输入至所述待测试软件开发工具包的接口函数的算法参数中,对所述待测试软件开发工具包进行测试;不同的测试算法对应的测试功能不同。

在一种可能的实施方式中,所述测试算法包括用于匹配以下至少一种场景测试用例的算法:

预先定义的通用测试的场景测试用例;

包含算法模型的全部算法参数的场景测试用例;

包含所述算法模型的部分算法参数的场景测试用例;

其中,所述算法模型与所述待测试软件开发工具相匹配。

在一种可能的实施方式中,在所述基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试之后,所述测试方法还包括:

生成多个所述场景测试用例的测试结果;

从多个所述场景测试用例中,确定测试结果为测试出错的所述场景测试用例;

根据测试出错的所述场景测试用例,生成测试报告。

在一种可能的实施方式中,所述根据测试出错的所述场景测试用例,生成测试报告,包括:

从测试出错的所述场景测试用例中,确定共同携带的所述算法参数的参数值;

将确定出的所述算法参数的参数值,确定为导致所述待测试软件开发工具包运行异常的异常值;

根据导致所述待测试软件开发工具包运行异常的异常值,生成所述测试报告。

第二方面,本申请实施例还提供一种测试装置,所述测试装置包括:

获取模块,用于获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数;

第一生成模块,用于针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值;

第二生成模块,用于将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同;

测试模块,用于基于多个所述场景测试用例,对所述待测试软件开发工具包的测试。

在一种可能的实施方式中,所述测试装置还包括筛选模块:

所述筛选模块,用于从所述接口函数对应的算法参数中,筛选出对所述待测试软件工具开发包的功能影响程度排序靠前的至少两个算法参数;

所述第一生成模块,还用于针对筛选的所述至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到筛选的所述至少两个算法参数各自对应的键值对。

在一种可能的实施方式中,所述测试模块包括:

获取单元,用于获取所述待测试软件开发工具包中定义的各个接口函数的执行顺序,以及各个接口函数之间的调用关系;

测试单元,用于按照所述执行顺序和所述调用关系,依次通过多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在一种可能的实施方式中,针对任一个所述场景测试用例,所述测试单元,用于根据以下步骤对所述待测试软件开发工具包进行测试:

调用与所述场景测试用例对应的测试算法,将所述场景测试用例中的算法参数的参数值,输入至所述待测试软件开发工具包的接口函数的算法参数中,对所述待测试软件开发工具包进行测试;不同的测试算法对应的测试功能不同。

在一种可能的实施方式中,所述测试算法包括用于匹配以下至少一种场景测试用例的算法:

预先定义的通用测试的场景测试用例;

包含算法模型的全部算法参数的场景测试用例;

包含所述算法模型的部分算法参数的场景测试用例;

其中,所述算法模型与所述待测试软件开发工具相匹配。

在一种可能的实施方式中,所述测试装置还包括:

第三生成模块,用于生成多个所述场景测试用例的测试结果;

确定模块,用于从多个所述场景测试用例中,确定测试结果为测试出错的所述场景测试用例;

第四生成模块,用于根据测试出错的所述场景测试用例,生成测试报告。

在一种可能的实施方式中,所述第四生成模块包括:

第一确定单元,用于从测试出错的所述场景测试用例中,确定共同携带的所述算法参数的参数值;

第二确定单元,用于将确定出的所述算法参数的参数值,确定为导致所述待测试软件开发工具包运行异常的异常值;

生成单元,用于根据导致所述待测试软件开发工具包运行异常的异常值,生成所述测试报告。

第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中所述的测试方法的步骤。

第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中所述的测试方法的步骤。

本申请实施例中,通过获取待测试软件开发工具包sdk的各个接口函数,并分别为各个接口函数对应的至少两个算法参数分配参数值,得到至少两个算法参数对应的键值对,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,得到覆盖多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种测试方法的流程图;

图2示出了本申请实施例所提供的另一种测试方法的流程图;

图3示出了本申请实施例所提供的一种测试装置的功能模块图之一;

图4示出了本申请实施例所提供的一种测试装置的功能模块图之二;

图5示出了图4中的测试模块的功能模块图;

图6示出了图4中的第四生成模块的功能模块图;

图7示出了本申请实施例所提供的一种电子设备的结构示意图。

主要元件符号说明:

图中:300-测试装置;310-获取模块;320-第一生成模块;330-第二生成模块;340-测试模块;342-获取单元;344-测试单元;350-筛选模块;360-第三生成模块;370-确定模块;380-第四生成模块;382-第一确定单元;384-第二确定单元;386-生成单元;700-电子设备;710-处理器;720-存储器;730-总线。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中的附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本申请保护的范围。

为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“sdk测试”,给出以下实施方式,对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。

本申请实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何需要进行sdk测试的场景,本申请实施例并不对具体的应用场景作限制,任何使用本申请实施例提供的测试方法及装置的方案均在本申请保护范围内。

需要说明的是,测试用例(testcase)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。测试用例是将软件测试的行为活动做一个科学化的组织归纳,目的是能够将软件测试的行为转化成可管理的模式,同时测试用例也是将测试具体量化的方法之一,不同类别的软件,测试用例是不同的。

值得注意的是,在本申请提出之前,在sdk交付使用前,需要对其进行测试,以保证软件的质量,但在测试时,会由于sdk发生线上崩溃和算法异常时,需要修复的周期长,而且问题难复现的问题,导致测试所花费的时间成本较高。

针对上述问题,本申请实施例,通过获取待测试软件开发工具包sdk的各个接口函数,并分别为各个接口函数对应的至少两个算法参数分配参数值,得到至少两个算法参数对应的键值对,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,得到覆盖多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

为便于对本申请进行理解,下面结合具体实施例对本申请提供的技术方案进行详细说明。

图1为本申请实施例所提供的一种测试方法的流程图。如图1所示,本申请实施例提供的测试方法,包括以下步骤:

s101:获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数。

在具体实施中,在对待测试软件开发工具包进行实际线上测试前,先获取待测试软件开发工具包的各个接口函数,并获取各个接口函数分别对应的至少一个算法参数的参数,算法参数包括输入参数和输出参数,这里,使用相应的接口函数可实现与该接口函数相对应的预期功能。

一示例中,待测试软件开发工具包为手势算法开发包,手势算法开发包包括初始化、设置参数、设置模型以及模型预测等接口函数。

s102:针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值。

在具体实施中,在获取到待测试软件开发工具包的各个接口函数的算法参数后,针对获取的接口函数对应的至少两个算法参数,为算法参数分配对应的参数值,得到该至少两个算法参数对应的键值对,这里,为算法参数分配的参数值为该算法参数对应的参数取值范围内的可以选择的数值,这里,每个算法参数对应至少一个键值对,每个键值对包括该算法参数的参数标识和参数值,其中,键值对中“键”表示算法标识,“值”表示参数值。

s103:将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同。

在具体实施中,在得到各个接口函数的算法参数的键值对后,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,可以得到覆盖该多个键值对的多个场景测试用例,即,生成的多个场景测试用例要包含全部的键值对,而且,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同,即,每个测试场景用例中至少包括两个算法参数的参数值,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量。

这里,为了更好的权衡测试性能和测试代价,且不同于大多数单元测试方法依赖于人工编写测试用例,本申请通过组合测试技术来进行场景测试用例的生成,即通过将得到的各个算法参数对应的键值对进行组合处理,可以得到多个场景测试用例,组合生成场景测试用例后,仅需较少条数的场景测试用例,就可以覆盖任意两个算法参数对应的所有参数值之间的组合,不仅可以极大的减少测试代价,而且较使用应用程序演示(appdemo)进行测试而言,覆盖了更多的测试场景。

需要说明的是,在之前的算法sdk测试工作中,大多以移动端的appdemo作为验证和交付算法的载体,具体流程如下,在一个算法需求的开发周期中,算法工程师开发算法需求效果后,会先统一集成至移动端appdemo,然后算法测试工程师在移动端appdemo进行算法预测试和版本集成测试,最后再进行版本发布,但基于appdemo的质量保障工作中,存在诸多痛点,例如,appdemo仅支持较少的“正常场景”,没有算法参数的组合和切换,算法sdk发生线上崩溃和算法异常时,修复的周期长,且问题难复现。

进一步地,由于待测试软件开发工具包的接口函数对应的算法参数较多,而这些算法参数中有的算法参数对待测试软件开发工具包的功能有影响,有的算法参数对待测试软件开发工具包的功能没有影响,或是影响较小,这里,为进一步减小测试代价,本申请从这些算法参数中选取出影响待测试软件开发工具包的功能的关键参数,并通过关键参数来生成场景测试用例,可以减少生成场景测试用例的数量,以此减少花费对场景测试用例的测试代价,也即,步骤s102中针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对,包括以下步骤:

从所述接口函数对应的算法参数中,筛选出对所述待测试软件工具开发包的功能影响程度排序靠前的至少两个算法参数;针对筛选的所述至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到筛选的所述至少两个算法参数各自对应的键值对。

s104:基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在具体实施中,在对各个算法参数的键值对进行组合处理,得到多个场景测试用例之后,通过多个场景测试用例进行测试,对待测试软件开发工具包进行测试,这里,在实际线上对sdk进行测试之前,通过多个场景测试用例,对待测试软件开发工具包进行线下模拟测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

进一步地,在对得到的多个场景测试用例进行测试时,对各个场景测试用例进行测试是需要按照顺序进行测试的,具体地,步骤s104中基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试,包括以下步骤:

步骤a1:获取所述待测试软件开发工具包中定义的各个接口函数的执行顺序,以及各个接口函数之间的调用关系。

在具体实施中,在获取到待测试软件开发工具包中各个接口函数后,确定待测试软件开发工具包中定义的各个接口函数的执行顺序,以及各个接口函数之间的调用关系,这里,在实际软件开发工具应用时,各个接口函数存在执行顺序,各个接口函数之间还存在调用关系。

一示例中,待测试软件开发工具包为手势算法开发包,手势算法开发包包括初始化、设置参数、设置模型以及模型预测等接口函数,只有先“初始化”接口函数后,才能调用“设置参数”接口函数,只有在调用“设置模型”接口函数后,才能正常调用“模型预测”接口函数。

步骤a2:按照所述执行顺序和所述调用关系,依次通过多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在具体实施中,在获取到各个接口函数的执行顺序和调用关系后,按照执行顺序和调用关系,依次找到对应的场景测试用例,并通过得到的多个场景测试用例,对待测试软件开发工具包进行测试,这里,每个场景测试用例中包含至少两个键值对,每个键值对包含算法参数的参数标识和该算法参数的一个参数值,每个接口函数包括至少一个算法参数,因而,每个场景测试用例与接口函数存在对应关系,因此,可以按照各个接口函数的执行顺序和调用关系,依次获取对应的场景测试用例,对待测试软件开发工具包进行测试。

进一步地,在实际线上对待测试软件开发工具包进行测试时,需要调用线上服务来对待测试软件开发工具包进行测试,这里,在线下通过多个场景测试用例,对待测试软件开发工具包进行测试时,可以调用测试算法,并通过获取该测试算法对应的场景测试用例,对待测试软件开发工具包进行测试,具体地,针对任一个所述场景测试用例,通过所述场景测试用例,对所述待测试软件开发工具包进行测试,包括以下步骤:

调用与所述场景测试用例对应的测试算法,将所述场景测试用例中的算法参数的参数值,输入至所述待测试软件开发工具包的接口函数的算法参数中,对所述待测试软件开发工具包进行测试;不同的测试算法对应的测试功能不同。

在具体实施中,对于得到的多个场景测试用例中的每个场景测试用例,可以通过调用与该场景测试用例相匹配的测试算法,将该场景测试用例中的算法参数的参数值,输入至待测试软件开发工具包的接口函数的算法参数中,对待测试软件开发工具包进行测试,这里,测试算法为单元测试算法,不同测试算法对应的测试功能不同,通过调用不同的测试方法,可以实现对通过全部场景测试用例,对待测试软件开发工具包进行测试的目的。

需要说明的是,单元测试算法(unittesting),是指对软件中的最小可测试单元进行检查和验证,对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如c语言中单元指一个函数,java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块,单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

进一步地,生成的多个场景测试用例的类型有所不同,包括预先定义的通用测试的场景测试用例;包含算法模型的全部算法参数的场景测试用例;包含所述算法模型的部分算法参数的场景测试用例;其中,所述算法模型与所述待测试软件开发工具相匹配。

这里,不同的测试算法包括:第一测试算法、第二测试算法和第三测试算法,其中,第一测试算法用于匹配预先定义的通用测试的场景测试用例,第二测试算法用于匹配包含算法模型的全部算法参数的场景测试用例,第三测试算法用于匹配包含所述算法模型的部分算法参数的场景测试用例。

在具体实施中,第一测试算法类似于appdemo,匹配了数量较少,但正常的场景下的场景测试用例,即,用于匹配多个场景测试用例中预定义的通用测试的场景测试用例,在第一测试算法中,通过给部分算法参数赋初始值,然后判断第一测试算法在执行流程中是否出现异常;第二测试算法,为了在测试点有所侧重,在第二测试算法中,通过设置约束条件,来保证算法模型完整型,即,用于匹配多个场景测试用例中包含待测试软件开发工具包对应的算法模型的全部算法参数的场景测试用例,因此,第二测试算法可以用于模拟正常算法模型条件下的sdk调用过程,此外,和上述第一测试算法类似,通过判断哪些参数值会导致算法执行流程中出现异常;第三测试算法不添加模型完整性约束,故第三测试算法不仅可以匹配正常模型下的sdk调用过程,而且可以测试模型损坏情况下的sdk调用过程,即,用于匹配多个场景测试用例中包含待测试软件开发工具包对应的算法模型的部分算法参数的场景测试用例。

需要说明的是,本申请将各个算法参数的键值对进行组合处理,可以得到多个场景测试用例,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同,这样,不仅可以实现场景测试用例的自动生成,而且由于引入了算法参数之间的组合,可以显著降低场景测试用例的数量,可以更好的权衡测试性能和代价;通过调用对应的测试算法,通过场景测试用例,模拟线上对待测试的软件工具包进行测试,可以模拟常见sdk调用和场景异常,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

在本申请实施例中,通过获取待测试软件开发工具包sdk的各个接口函数,并分别为各个接口函数的至少两个算法参数分配参数值,得到该至少两个算法参数对应的键值对,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,得到覆盖该多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

图2为本申请实施例所提供的另一种测试方法的流程图。如图2所示,本申请实施例提供的测试方法,包括以下步骤:

s201:获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数。

s202:针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值。

s203:将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同。

s204:基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

其中,s201-s204的描述可以参见s101-s104的描述,并且能够达到相同的技术效果,对此,不再进行赘述。

s205:生成多个所述场景测试用例的测试结果。

在具体实施中,在通过多个场景测试用例,对待测试的软件工具包进行测试后,可以生成多个场景测试用例中每个场景测试用例的测试结果,这里,测试结果包括测试成功和测试出错,测试成功指该场景测试用例通过测试,测试出错为该场景测试用例未通过测试。

s206:从多个所述场景测试用例中,确定测试结果为测试出错的所述场景测试用例。

在具体实施中,从得到的多个场景测试用例中,根据各个场景测试用例对应的测试结果,选取测试结果为测试出错的场景测试用例。

s207:根据测试出错的所述场景测试用例,生成测试报告。

在具体实施中,基于测试结果为测试出错的场景测试用例,生成测试报告,可以将测试报告发送至用户终端,以便用户终端侧的程序员修改待测试软件开发工具包的程序代码,以避免在实际线上对待测试软件开发工具包进行测试时,出现崩溃和算法异常的情况,减少对待测试软件开发工具包进行修复的概率,以降低实际线上对sdk进行测试所花费的时间成本。

进一步地,在获取到测试结果为测试出错的场景测试用例后,需要定位出哪些异常值会导致待测试软件开发工具包运行异常,具体地,步骤s207中根据测试出错的所述场景测试用例,生成测试报告,包括以下步骤:

步骤b1:根据测试出错的所述场景测试用例,确定导致所述待测试软件开发工具包运行异常的异常值。

在具体实施中,根据测试结果为测试出错的场景测试用例,可以确定出导致待测试软件开发工具包运行异常的异常值,这里,异常值通常为某一算法参数的参数值,以及至少两个算法参数的参数值。

进一步地,步骤b1中根据测试出错的所述场景测试用例,确定导致所述待测试软件开发工具包运行异常的异常值,包括以下步骤:

步骤b11:从测试出错的所述场景测试用例中,确定共同携带的所述算法参数的参数值。

在具体实施中,先获取导致待测试软件开发工具包运行异常的至少一个场景测试用例,并从测试出错的场景测试用例中,找出测试出错的场景测试用例的共同点,比如,这些测试场景用例中均包含某个算法参数的参数值,这些测试场景用例中均包含至少两个算法参数分别对应的参数值,即,这些场景测试用例对应的算法参数相同,以及该算法参数的参数值也相同。

步骤b12:将确定出的所述算法参数的参数值,确定为导致所述待测试软件开发工具包运行异常的异常值。

在具体实施中,将导致待测试软件开发工具包运行异常的至少一个场景测试用例中共同携带的算法参数的参数值,确定为导致待测试软件开发工具包运行异常的异常值,即,异常值可以为一个算法参数的参数值,也可以为多个算法参数组合中对应的参数值。

步骤b2:根据导致所述待测试软件开发工具包运行异常的异常值,生成所述测试报告。

在具体实施中,在定位出导致待测试软件开发工具包运行异常的异常值之后,可以根据导致待测试软件开发工具包运行异常的异常值,生成测试报告,可以将测试报告发送至用户终端,以便用户终端侧的程序员修改待测试软件开发工具包的程序代码,这样,通过提前修改程序代码,可以提前预防线上崩溃和算法异常,可以降低实际线上对sdk进行测试所花费的时间成本。

在本申请实施例中,通过获取待测试软件开发工具包sdk的各个接口函数,并分别为各个接口函数对应的至少两个算法参数分配参数值,得到至少两个算法参数对应的键值对,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,得到覆盖多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

基于同一申请构思,本申请实施例中还提供了与上述实施例提供的测试方法对应的测试装置,由于本申请实施例中的装置解决问题的原理与本申请上述实施例的测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

如图3至图6所示,图3为本申请实施例所提供的一种测试装置300的功能模块图之一,图4为本申请实施例所提供的一种测试装置300的功能模块图之二,图5示出了图4中的测试模块340的功能模块图,图6示出了图4中的第四生成模块380的功能模块图。

如图3所示,所述测试装置300包括:

获取模块310,用于获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数;

第一生成模块320,用于针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值;

第二生成模块330,用于将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同;

测试模块340,用于基于多个所述场景测试用例,对所述待测试软件开发工具包的测试。

在一种可能的实施方式中,如图4所示,所述测试装置300还包括筛选模块350;

所述筛选模块350,用于从所述接口函数对应的算法参数中,筛选出对所述待测试软件工具开发包的功能影响程度排序靠前的至少两个算法参数;

所述第一生成模块320,还用于针对筛选的所述至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到筛选的所述至少两个算法参数各自对应的键值对。

在一种可能的实施方式中,如图5所示,所述测试模块340包括:

获取单元342,用于获取所述待测试软件开发工具包中定义的各个接口函数的执行顺序,以及各个接口函数之间的调用关系;

测试单元344,用于按照所述执行顺序和所述调用关系,依次通过多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在一种可能的实施方式中,如图5所示,针对任一个所述场景测试用例,所述测试单元344,用于根据以下步骤对所述待测试软件开发工具包进行测试:

调用与所述场景测试用例对应的测试算法,将所述场景测试用例中的算法参数的参数值,输入至所述待测试软件开发工具包的接口函数的算法参数中,对所述待测试软件开发工具包进行测试;不同的测试算法对应的测试功能不同。

在一种可能的实施方式中,所述测试算法包括用于匹配以下至少一种场景测试用例的算法:

预先定义的通用测试的场景测试用例;

包含算法模型的全部算法参数的场景测试用例;

包含所述算法模型的部分算法参数的场景测试用例;

其中,所述算法模型与所述待测试软件开发工具相匹配。

在一种可能的实施方式中,如图4所示,所述测试装置300还包括:

第三生成模块360,用于生成多个所述场景测试用例的测试结果;

确定模块370,用于从多个所述场景测试用例中,确定测试结果为测试出错的所述场景测试用例;

第四生成模块380,用于根据测试出错的所述场景测试用例,生成测试报告。

在一种可能的实施方式中,如图6所示,所述第四生成模块380包括:

第一确定单元382,用于从测试出错的所述场景测试用例中,确定共同携带的所述算法参数的参数值;

第二确定单元384,用于将确定出的所述算法参数的参数值,确定为导致所述待测试软件开发工具包运行异常的异常值;

生成单元386,用于根据导致所述待测试软件开发工具包运行异常的异常值,生成所述测试报告。

在本申请实施例中,通过获取模块310获取待测试软件开发工具包sdk的各个接口函数,并分别为各个接口函数的至少两个算法参数分配参数值,通过第一生成模块320得到该至少两个算法参数对应的键值对,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,通过第二生成模块330得到覆盖该多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,通过测试模块340对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

基于同一申请构思,参见图7所示,为本申请实施例提供的一种电子设备700的结构示意图,包括:处理器710、存储器720和总线730,所述存储器720存储有所述处理器710可执行的机器可读指令,当电子设备700运行时,所述处理器710与所述存储器720之间通过所述总线730进行通信,所述机器可读指令被所述处理器710运行时执行如上述实施例中任一所述的测试方法的步骤。

具体地,所述机器可读指令被所述处理器710执行时可以执行如下处理:

获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数;

针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值;

将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同;

基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

在本申请实施例中,通过获取待测试软件开发工具包sdk的各个接口函数,并分别为各个接口函数对应的至少两个算法参数分配参数值,得到至少两个算法参数对应的键值对,考虑到在进行sdk的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,得到覆盖多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

基于同一申请构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例提供的测试方法的步骤。

具体地,所述存储介质能够为通用的存储介质,如移动磁盘、硬盘等,所述存储介质上的计算机程序被运行时,能够执行上述测试方法,在实际线上对sdk进行测试之前,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对sdk进行测试所花费的时间成本。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应所述理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。


技术特征:

1.一种测试方法,其特征在于,所述测试方法包括:

获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数;

针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值;

将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同;

基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

2.根据权利要求1所述的测试方法,其特征在于,所述针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对,包括:

从所述接口函数对应的算法参数中,筛选出对所述待测试软件工具开发包的功能影响程度排序靠前的至少两个算法参数;

针对筛选的所述至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到筛选的所述至少两个算法参数各自对应的键值对。

3.根据权利要求1所述的测试方法,其特征在于,所述基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试,包括:

获取所述待测试软件开发工具包中定义的各个接口函数的执行顺序,以及各个接口函数之间的调用关系;

按照所述执行顺序和所述调用关系,依次通过多个所述场景测试用例,对所述待测试软件开发工具包进行测试。

4.根据权利要求3所述的测试方法,其特征在于,针对任一个所述场景测试用例,通过所述场景测试用例,对所述待测试软件开发工具包进行测试,包括:

调用与所述场景测试用例对应的测试算法,将所述场景测试用例中的算法参数的参数值,输入至所述待测试软件开发工具包的接口函数的算法参数中,对所述待测试软件开发工具包进行测试;不同的测试算法对应的测试功能不同。

5.根据权利要求4所述的测试方法,其特征在于,所述测试算法包括用于匹配以下至少一种场景测试用例的算法:

预先定义的通用测试的场景测试用例;

包含算法模型的全部算法参数的场景测试用例;

包含所述算法模型的部分算法参数的场景测试用例;

其中,所述算法模型与所述待测试软件开发工具相匹配。

6.根据权利要求1所述的测试方法,其特征在于,在所述基于多个所述场景测试用例,对所述待测试软件开发工具包进行测试之后,所述测试方法还包括:

生成多个所述场景测试用例的测试结果;

从多个所述场景测试用例中,确定测试结果为测试出错的所述场景测试用例;

根据测试出错的所述场景测试用例,生成测试报告。

7.根据权利要求6所述的测试方法,其特征在于,所述根据测试出错的所述场景测试用例,生成测试报告,包括:

从测试出错的所述场景测试用例中,确定共同携带的所述算法参数的参数值;

将确定出的所述算法参数的参数值,确定为导致所述待测试软件开发工具包运行异常的异常值;

根据导致所述待测试软件开发工具包运行异常的异常值,生成所述测试报告。

8.一种测试装置,其特征在于,所述测试装置包括:

获取模块,用于获取待测试软件开发工具包的各个接口函数,以及所述接口函数对应的算法参数;

第一生成模块,用于针对所述接口函数对应的算法参数中的至少两个算法参数,根据每个所述算法参数对应的参数取值范围,为所述算法参数分配对应的参数值,得到所述至少两个算法参数各自对应的键值对;每个键值对包含算法参数的参数标识和该算法参数的一个参数值;

第二生成模块,用于将得到的多个键值对进行组合处理,得到覆盖所述多个键值对的多个场景测试用例;其中,每个场景测试用例中包含至少两个键值对,且该至少两个键值对中的参数标识不同;

测试模块,用于基于多个所述场景测试用例,对所述待测试软件开发工具包的测试。

9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至7任一所述的测试方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述的测试方法的步骤。

技术总结
本申请涉及一种测试方法、装置、电子设备及可读存储介质,通过获取待测试软件开发工具包SDK的各个接口函数,并分别为各个接口函数对应的至少两个算法参数分配参数值,得到算法参数对应的键值对,考虑到在进行SDK的测试时,作为影响因素的算法参数的参数值较多,通过将得到的多个键值对进行组合处理,得到覆盖该多个键值对的多个场景测试用例,这样,不仅可以实现场景测试用例的自动生成,而且由于将不同算法参数的参数值进行组合处理,可以显著降低场景测试用例的数量,进一步地,通过生成的场景测试用例,对待测试软件开发工具包进行测试,可以提前预防线上崩溃和算法异常,以降低实际线上对SDK进行测试所花费的时间成本。

技术研发人员:林晓升;郭建强;杨萍
受保护的技术使用者:北京字节跳动网络技术有限公司
技术研发日:2020.02.21
技术公布日:2020.06.26

分享一种测试方法、装置、电子设备及可读存储介质与流程的相关内容如下:

本文标题:分享一种测试方法、装置、电子设备及可读存储介质与流程
http://www.tainingxinwen.cn/qitaxinxi/522010.html

0

精彩评论

暂无评论...
验证码 换一张
取 消