应用程序测试方法及装置转让专利

申请号 : CN202111055191.8

文献号 : CN113505082B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘楚蓉曾辉王健谢宗兴

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请公开了一种应用程序测试方法及装置,涉及数据测试技术领域,可以应用于云技术、人工智能、智慧交通、车联网等各种场景。所述方法包括:获取测试用例对应的目标应用程序的属性信息;基于属性信息,确定测试用例对应的测试场景;向测试终端发送测试场景以及测试用例对应的自动化测试代码,以使测试终端在测试场景中执行自动化测试代码,在代码执行过程中,对目标数据进行回放,得到目标应用程序的测试数据;以及向服务器发送测试数据以及目标数据,以使服务器基于测试数据与目标数据,得到目标应用程序的测试结果;其中,自动化测试代码基于测试用例生成;本申请提高了代码编写效率并降低了应用程序的测试成本。

权利要求 :

1.一种应用程序测试方法,其特征在于,所述方法包括:获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生成的多个对象操作行为数据;

基于所述属性信息,确定所述测试用例对应的测试场景;

向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码执行过程中,对所述目标数据进行回放,得到所述目标应用程序的测试数据;以及向服务器发送所述测试数据以及所述目标数据,以使所述服务器基于所述测试数据与所述目标数据,得到所述目标应用程序的测试结果;

其中,所述自动化测试代码的生成方法包括:基于每个对象操作行为数据对应的时序,将所述目标数据转化成多个步骤用例信息;

基于所述多个步骤用例信息,构建所述测试用例;

将所述测试用例的每个步骤用例信息中的对象操作行为数据序列化处理,得到第一类对象;

将所述测试用例的每个步骤用例信息中的对象操作关联数据序列化处理,得到第二类对象;

基于第一映射信息,确定每个第一类对象对应的第一代码;所述第一代码为目标语法的代码,所述第一映射信息表征类对象与代码的映射关系;

将每个第二类对象转化成所述目标语法的第二代码;

将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,所述代码包括所述第一代码以及所述第二代码。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述目标数据;

所述获取所述目标数据包括:

响应于基于用例录制提示控件触发的第一操作指令,向目标终端发送测试用例录制指令;所述测试用例录制指令携带所述目标应用程序的标识信息;

接收所述目标终端发送的所述目标数据,所述目标数据为所述目标终端在所述目标应用程序的标识信息对应的目标应用程序中,基于所述测试用例录制指令生成的数据。

3.根据权利要求1‑2中任一项所述的方法,其特征在于,所述目标数据还包括多个对象操作关联数据,每个对象操作关联数据对应一个对象操作行为数据,所述方法还包括:将所述多个对象操作行为数据,按照每个对象操作行为数据对应的时序,生成多个步骤用例信息;

所述将所述多个对象操作行为数据,按照每个对象操作行为数据对应的时序,生成多个步骤用例信息,包括:

基于每个对象操作行为数据对应的时序,将所述多个对象操作行为数据以及对应的多个对象操作关联数据生成多个步骤用例信息;每个步骤用例信息基于一个对象操作行为数据以及对应的对象操作关联数据生成。

4.根据权利要求3所述的方法,其特征在于,所述基于第一映射信息,确定每个第一类对象对应的第一代码之后,所述方法还包括:基于所述对象操作行为数据,确定所述第一代码的注释信息;

基于所述注释信息,更新所述第一代码,得到第一更新代码;

相应的,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,包括:

将所述每个步骤用例信息对应的第一更新代码与第二代码进行拼接,生成所述每个步骤用例信息对应的目标代码;

将所述每个步骤用例信息对应的目标代码进行拼接,生成所述自动化测试代码。

5.根据权利要求2所述的方法,其特征在于,在所述响应于基于用例录制提示控件触发的第一操作指令,向目标终端发送测试用例录制指令之前,所述方法还包括:基于预设插件,在目标页面显示用例录制控件;

响应于基于所述用例录制控件触发的第二操作指令,显示所述测试用例的文件名编辑弹窗;所述文件名编辑弹窗中包括文件名编辑控件和文件名提交控件;

响应于基于所述文件名编辑控件触发的第三操作指令,显示所述测试用例的文件名;

响应于基于所述文件名提交控件触发的第四操作指令,确定所述测试用例的文件名;

显示用例录制提示页面;所述用例录制提示页面包括所述用例录制提示控件。

6.根据权利要求1所述的方法,其特征在于,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码之前,所述方法还包括:基于所述测试用例的文件名,确定所述测试用例对应的类模板;

获取所述测试用例的描述信息;

相应的,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,包括:

将所述每个步骤用例信息对应的代码进行拼接,得到拼接后代码;

基于所述测试用例的描述信息以及所述拼接后代码,在所述类模板中生成所述自动化测试代码。

7.一种应用程序测试装置,其特征在于,所述装置包括:属性信息获取模块,用于获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生成的多个对象操作行为数据;

测试场景确定模块,用于基于所述属性信息,确定所述测试用例对应的测试场景;

代码发送模块,用于向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码执行过程中,对所述目标数据进行回放,得到所述目标应用程序的测试数据;以及向服务器发送所述测试数据以及目标数据,以使所述服务器基于所述测试数据与所述目标数据,得到所述目标应用程序的测试结果;其中,所述自动化测试代码基于所述测试用例生成;

步骤用例信息转化模块,用于基于每个对象操作行为数据对应的时序,将所述目标数据转化成多个步骤用例信息;

测试用例构建模块,用于基于所述多个步骤用例信息,构建测试用例;

自动化测试代码生成模块,用于基于所述测试用例生成自动化测试代码;

其中,所述自动化测试代码生成模块包括:步骤类对象确定单元,用于对所述每个步骤用例信息进行序列化处理,得到步骤类对象;所述步骤类对象确定单元包括:第一类对象确定子单元,用于将所述测试用例的每个步骤用例信息中的对象操作行为数据序列化处理,得到第一类对象;第二类对象确定子单元,用于将所述测试用例的每个步骤用例信息中的对象操作关联数据序列化处理,得到第二类对象;

代码转化单元,用于将每个步骤类对象转化为目标语法的代码;所述代码转化单元包括:第一代码确定子单元,用于基于第一映射信息,确定每个第一类对象对应的第一代码;

所述第一代码为所述目标语法的代码,所述第一映射信息表征类对象与代码的映射关系;

第二代码确定子单元,用于将每个第二类对象转化成所述目标语法的第二代码;

代码生成单元,用于将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,所述代码包括所述第一代码以及所述第二代码。

8.一种应用程序测试设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1‑6任一项所述的应用程序测试方法。

9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如权利要求1‑

6任一项所述的应用程序测试方法。

说明书 :

应用程序测试方法及装置

技术领域

[0001] 本申请涉及数据测试技术领域,尤其涉及一种应用程序测试方法及装置。

背景技术

[0002] 现有的自动化测试技术,需要人工手动编写测试用例的测试代码;代码的编写成本高,要求编写者有一定代码水平,且在构建测试数据、mock数据等测试场景上成本非常
高。
[0003] 因此,有必要提供一种应用程序测试方法及装置,实现了快速生成测试用例对应的自动化测试代码,从而避免人工编写测试代码;提高了代码编写效率并降低了应用程序
的测试成本。

发明内容

[0004] 本申请提供了一种应用程序测试方法及装置,可以提高代码编写效率并降低应用程序的测试成本。
[0005] 一方面,本申请提供了一种应用程序测试方法,所述方法包括:
[0006] 获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生成的多个对象操作行为数据;
[0007] 基于所述属性信息,确定所述测试用例对应的测试场景;
[0008] 向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码执行过程中,对所述目标
数据进行回放,得到所述目标应用程序的测试数据;以及向服务器发送所述测试数据以及
目标数据,以使所述服务器基于所述测试数据与所述目标数据,得到所述目标应用程序的
测试结果;其中,所述自动化测试代码基于所述测试用例生成。
[0009] 另一方面提供了一种应用程序测试装置,所述装置包括:
[0010] 属性信息获取模块,用于获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生成的
多个对象操作行为数据;
[0011] 测试场景确定模块,用于基于所述属性信息,确定所述测试用例对应的测试场景;
[0012] 代码发送模块,用于向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码执行
过程中,对所述目标数据进行回放,得到所述目标应用程序的测试数据;以及向服务器发送
所述测试数据以及目标数据,以使所述服务器基于所述测试数据与所述目标数据,得到所
述目标应用程序的测试结果;其中,所述自动化测试代码基于所述测试用例生成。
[0013] 另一方面提供了一种应用程序测试设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所
述处理器加载并执行以实现如上所述的应用程序测试方法。
[0014] 另一方面提供了一种计算机存储介质,所述计算机存储介质存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如上所述
的应用程序测试方法。
[0015] 另一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器
从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备
执行以实现如上所述的应用程序测试方法。
[0016] 本申请提供的应用程序测试方法及装置,具有如下技术效果:
[0017] 本申请获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生成的多个对象操作行为
数据;基于所述属性信息,确定所述测试用例对应的测试场景;从而可以及时确定测试用例
对应的场景信息,满足各种自动化测试场景的需求;向测试终端发送所述测试场景以及所
述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化
测试代码,在代码执行过程中,对所述目标数据进行回放,得到所述目标应用程序的测试数
据;以及向服务器发送所述测试数据以及目标数据,以使所述服务器基于所述测试数据与
所述目标数据,得到所述目标应用程序的测试结果;其中,所述自动化测试代码基于所述测
试用例生成;从而可以通过基于录制的测试用例生成的自动化测试代码进行自动化测试,
降低了测试成本,并且提高了测试效率。

附图说明

[0018] 为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅
仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,
还可以根据这些附图获得其它附图。
[0019] 图1是本申请实施例提供的一种应用程序测试系统的示意图;
[0020] 图2是本申请实施例提供的一种应用程序测试方法的流程示意图;
[0021] 图3是本申请实施例提供的一种确定测试用例的文件名的方法的流程示意图;
[0022] 图4是本申请实施例提供的一种生成自动化测试代码的方法的流程示意图;
[0023] 图5是本申请实施例提供的一种根据测试用例生成自动化测试代码的方法的流程示意图;
[0024] 图6是本申请实施例提供的一种目标终端显示所述目标页面元素的方法的流程示意图;
[0025] 图7是本申请实施例提供的用例录制控件的显示界面图;
[0026] 图8是本申请实施例提供的录制用例生成代码对应的文件名编辑弹窗的显示界面图;
[0027] 图9是本申请实施例提供的文件名编辑控件的显示界面图;
[0028] 图10是本申请实施例提供的用例录制提示控件的显示界面图;
[0029] 图11是本申请实施例提供的一种页面元素提取控件的显示界面图;
[0030] 图12是本申请实施例提供的一种悬浮框的显示界面图;
[0031] 图13是本申请实施例提供的一种用例描述弹窗的显示界面图;
[0032] 图14是本申请实施例提供的另一种测试代码生成方法的流程示意图;
[0033] 图15是本申请实施例提供的一种测试代码生成的时序流程图;
[0034] 图16是本申请实施例的自动化测试代码以及采用传统测试技术进行用例编写和用例执行的效果对比图;
[0035] 图17是本申请实施例提供的一种应用程序测试装置的结构示意图;
[0036] 图18是本申请实施例提供的一种服务器的结构示意图。

具体实施方式

[0037] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其
他实施例,都属于本申请保护的范围。
[0038] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限
于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产
品或设备固有的其它步骤或单元。
[0039] 请参阅图1,图1是本申请实施例提供的一种应用程序测试系统的示意图,如图1所示,该应用程序测试系统可以至少包括第一客户端01、第二客户端02和服务器03。
[0040] 具体的,本申请实施例中,所述第一客户端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、智能音箱、车载终端、智能电视等类型的实
体设备,也可以包括运行于实体设备中的软体,例如一些服务商提供给用户的网页页面,也
可以为该些服务商提供给用户的应用。具体的,所述第一客户端01可以用于向第二客户端
02发送测试场景以及测试用例对应的自动化测试代码。
[0041] 具体的,本申请实施例中,所述第二客户端02可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、智能音箱、车载终端、智能电视等类型的实
体设备,也可以包括运行于实体设备中的软体,例如一些服务商提供给用户的网页页面,也
可以为该些服务商提供给用户的应用。具体的,所述第二客户端02可以用于在所述测试场
景中执行所述自动化测试代码,在代码执行过程中,对所述目标数据进行回放,得到所述目
标应用程序的测试数据。
[0042] 具体的,本申请实施例中,所述服务器03可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,还可以是提供云服务、云数据库、云计
算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content 
Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服
务器。服务器03可以包括有网络通信单元、处理器和存储器等等。具体的,所述服务器03可
以用于根据测试数据与目标数据,得到目标应用程序的测试结果。
[0043] 以下介绍本申请的一种应用程序测试方法,图2是本申请实施例提供的一种应用程序测试方法的流程示意图,本申请提供了如实施例或流程图所述的方法操作步骤,但基
于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序
仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务
器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处
理器或者多线程处理的环境)。具体的如图2所示,所述方法可以应用于本地终端中,具体可
以包括:
[0044] S201:获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生成的多个对象操作行为
数据。
[0045] 在本申请实施例中,目标应用程序的属性信息可以包括但不限于用例ID、版本号以及测试用例录制过程中的mock ID等;mock ID用于获取后台服务器中存储的链路的网
络、IO(Input/Output,输入输出)等mock数据。mock测试就是在测试过程中,对于某些不容
易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。在测试过
程中,需要保证每个测试终端的测试页面数据(页面点赞数、评论数等)完全一致,即需拦截
所有网络请求。通过mock数据自动回填,从而保证测试终端进行测试用例回放时的数据一
致性。
[0046] S203:基于所述属性信息,确定所述测试用例对应的测试场景。
[0047] 在本申请实施例中,根据mock数据可以模拟用例的测试场景,从而实现对测试场景的快速回放,保证自动化测试在设定的测试场景中进行。
[0048] S205:向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码执行过程中,对所
述目标数据进行回放,得到所述目标应用程序的测试数据;以及向服务器发送所述测试数
据以及目标数据,以使所述服务器基于所述测试数据与所述目标数据,得到所述目标应用
程序的测试结果;其中,所述自动化测试代码基于所述测试用例生成。
[0049] 具体的,在本申请实施例中当测试数据与所述目标数据完全一致时,确定目标应用程序运行稳定;当测试数据与所述目标数据不完全一致时,确定目标应用程序运行不稳
定。测试终端可以为多个,当多个测试终端的目标应用程序均稳定时,说明目标应用程序稳
定性良好,测试通过;当任一测试终端的目标应用程序运行不稳定时,说明目标应用程序稳
定性不好,测试不通过,需要进一步优化目标应用程序。
[0050] 在本申请实施例中,所述方法还包括:
[0051] 获取目标数据;
[0052] 所述获取目标数据包括:
[0053] S101:响应于基于用例录制提示控件触发的第一操作指令,向目标终端发送测试用例录制指令;所述测试用例录制指令携带目标应用程序的标识信息。
[0054] 在本申请实施例中,本地终端与目标终端之间通信连接,例如可以通过USB数据线进行连接。
[0055] 在一个具体的实施例中,用例录制提示控件可以包括但不限于文字提示标识、图片提示标识、符号提示标识等;如图10所示,用例录制提示控件可以为图10中的“开始录制”
按键标识,用户触发该标识,即可向目标终端发送测试用例录制指令,其该测试用例录制指
令是针对特定应用程序的,其携带了目标应用程序的标识信息,该标识信息可以包括但不
限于目标应用程序的图标、名称等。
[0056] 在本申请实施例中,所述目标数据还包括多个对象操作关联数据,每个对象操作关联数据对应一个对象操作行为数据,所述方法还包括:
[0057] 将所述多个对象操作行为数据,按照每个对象操作行为数据对应的时序,生成多个步骤用例信息;
[0058] 在本申请实施例中,对象操作行为数据可以包括但不限于用户在目标终端的滑动、点击、拖动等各种行为对应的数据;在执行录制的过程中,记录目标终端的所有操作行
为,如点击、滑动、双击等等,这样就能记录所有操作流程,同时会抓取控件的信息;对象操
作行为数据对应的时序表征各个操作行为的执行顺序;可以根据操作行为的执行顺序,构
建多个步骤用例信息,每种操作行为对应一个步骤用例信息。
[0059] 所述将所述多个对象操作行为数据,按照每个对象操作行为数据对应的时序,生成多个步骤用例信息,包括:
[0060] 基于每个对象操作行为数据对应的时序,将所述多个对象操作行为数据以及对应的多个对象操作关联数据生成多个步骤用例信息;每个步骤用例信息基于一个对象操作行
为数据以及对应的对象操作关联数据生成。
[0061] 在本申请实施例中,对象操作关联数据可以包括但不限于用例步骤列表中文本、图片、坐标位置、路径(xpath)、是否弹窗、操作时延等数据;其中的路径对应显示页面中的
控件标识信息。
[0062] 在本申请实施例中,如图3所示,所述响应于基于用例录制提示控件触发的第一操作指令,向目标终端发送测试用例录制指令之前,所述方法还包括:
[0063] S301:基于预设插件,在目标页面显示用例录制控件。
[0064] 在本申请实施例中,该方法可以应用于安卓开发工具(Android Studio)中;Android Studio 是谷歌推出的一个安卓集成开发工具,该工具提供了集成的安卓开发工
具,用于开发和调试。预设插件可以安装在Android Studio中,具体的,预设插件可以为集
成开发环境(Integrated Development Environment,IDE)插件,IDE插件用于提供程序开
发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。
[0065] 在一个具体的实施例中,用例录制控件可以包括但不限于文字、图片、符号等标识;例如,如图7所示,用例录制控件可以为图7中的“录制用例生成代码”标识。
[0066] S303:响应于基于所述用例录制控件触发的第二操作指令,显示所述测试用例的文件名编辑弹窗;所述文件名编辑弹窗中包括文件名编辑控件和文件名提交控件。
[0067] 在本申请实施例中,文件名编辑控件用于输入文件名,文件名提交控件用于确认文件名,文件名编辑控件可以包括但不限于文件名输入框、可选文件名列表等,文件名提交
控件可以包括但不限于文字、图片、符号等标识。
[0068] 在一个具体的实施例中,如图8所示,图8为录制用例生成代码对应的文件名编辑弹窗,其中空白输入框为文件名编辑控件,“确定”按键为文件名提交控件。
[0069] S305:响应于基于所述文件名编辑控件触发的第三操作指令,显示所述测试用例的文件名。
[0070] 在一个具体的实施例中,如图9所示,用户可以触发文件名编辑控件,输入文件名,此处的文件名为类名;如:视频作者测试用例对应的类名为“Author Test”。
[0071] S307:响应于基于所述文件名提交控件触发的第四操作指令,确定所述测试用例的文件名。
[0072] 在一个具体的实施例中,如图9所示,用户输入文件名之后,可以点击“确定”来提交文件名。
[0073] S309:显示用例录制提示页面;所述用例录制提示页面包括所述用例录制提示控件。
[0074] 在本申请实施例中,用例录制提示控件可以包括但不限于文字提示标识、图片提示标识、符号提示标识等;当用户提交文件名之后,当前显示页面跳转至用例录制提示页
面;例如图10所示的页面,包括用例录制提示控件“开始录制”。
[0075] 在本申请实施例中,如图4所示,所述方法还包括:
[0076] S401:基于每个对象操作行为数据对应的时序,将所述目标数据转化成多个步骤用例信息;
[0077] S403:基于所述多个步骤用例信息,构建测试用例;
[0078] 在本申请实施例中,将多个步骤用例信息按照每个步骤用例信息对应的时序,拼接得到测试用例。在一个具体的实施例中,测试用例可以用于测试视频作者。测试用例以
JSON格式存储。JSON(JavaScript Object Notation,JS 对象简谱)是一种轻量级的数据交
换格式。测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试
方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、
测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输
入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
[0079] S405:基于所述测试用例生成自动化测试代码。
[0080] 在本申请实施例中,如图5所示,所述基于所述测试用例生成自动化测试代码,包括:
[0081] S4051:对所述每个步骤用例信息进行序列化处理,得到步骤类对象;
[0082] 在本申请实施例中,可以将JSON格式的步骤用例信息序列化转化为步骤类对象。
[0083] 在本申请实施例中,所述对所述每个步骤用例信息进行序列化处理,得到步骤类对象,包括:
[0084] S40511:将所述每个步骤用例信息中的对象操作行为数据序列化处理,得到第一类对象;
[0085] S40513:将所述每个步骤用例信息中的对象操作关联数据序列化处理,得到第二类对象。
[0086] 在本申请实施例中,可以将JSON格式的对象操作行为数据序列化转化为第一类对象;将JSON格式的对象操作关联数据序列化转化为第二类对象;其中,第一类对象与第二类
对象均为目标语法的对象;类对象的转化实质是将JSON格式的数据转化为目标语法的实例
对象。
[0087] S4053:将每个步骤类对象转化为目标语法的代码;
[0088] 在本申请实施例中,在代码转化开始之前,先确定需要转化的目标语法类型,例如目标语法可以包括但不限于Espresso对应的语法、用户自定义的其他语法。Espresso是一
个谷歌官方提供的安卓应用显示界面的自动化测试框架。
[0089] 在本申请实施例中,所述将每个步骤类对象转化为目标语法的代码,包括:
[0090] S40531:基于第一映射信息,确定每个第一类对象对应的第一代码;所述第一代码为所述目标语法的代码,所述第一映射信息表征类对象与代码的映射关系;
[0091] 在本申请实施例中,可以通过关键类预先定义每种对象操作行为数据对应的第一类对象所对应的测试代码;关键类可以包括但不限于转化辅助类(Converter Helper)、代
码转化注册类(Code Creator Registry)等;即预先构建类对象与代码的映射关系;从而可
以将对象操作行为数据快速转化为相应的测试代码。
[0092] 在本申请实施例中,所述基于第一映射信息,确定每个第一类对象对应的第一代码之后,所述方法还包括:
[0093] 基于所述对象操作行为数据,确定所述第一代码的注释信息;
[0094] 基于所述注释信息,更新所述第一代码,得到第一更新代码。
[0095] 在本申请实施例中,第一代码转化完成之后,可以对其增加注释信息,注释信息可以包括但不限于文字信息、图片信息等;例如第一代码为滑动操作对应的代码,则注释信息
可以为滑动操作;从而便于用户快速获知代码的含义;此外,还可以在代码中增加空行等处
理,从而将不同的操作行为对应的第一代码区别开,提高用户对不同操作行为代码的辨识
度。
[0096] S40533:将每个第二类对象转化成所述目标语法的第二代码。
[0097] 在本申请实施例中,将第二类对象转化成第二代码即是将对象操作关联数据对应的实例对象转化成第二代码,例如将文本、图片、坐标位置等转化为测试代码。
[0098] S4055:将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码。
[0099] 在本申请实施例中,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,包括:
[0100] 将所述每个步骤用例信息对应的第一更新代码与第二代码进行拼接,生成所述每个步骤用例信息对应的目标代码;
[0101] 将所述每个步骤用例信息对应的目标代码进行拼接,生成所述自动化测试代码。
[0102] 在本申请实施例中,每个步骤用例信息对应的第一更新代码与第二代码可以进行组合,得到每个步骤用例信息对应的目标代码;然后将多个步骤用例信息对应的多组目标
代码,按照目标代码对应的时序进行拼接,从而生成自动化测试代码。
[0103] 在本申请实施例中,在本申请实施例中,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码之前,所述方法还包括:
[0104] 基于所述测试用例的文件名,确定所述测试用例对应的类模板;
[0105] 获取所述测试用例的描述信息。
[0106] 在本申请实施例中,测试用例对应的类模板用于生成自动化测试代码;测试用例的描述信息可以用于表征测试用例的用途、应用场景等信息。
[0107] 在本申请实施例中,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,包括:
[0108] 将所述每个步骤用例信息对应的代码进行拼接,得到拼接代码;
[0109] 获取所述拼接代码中的停顿时间对应的代码;
[0110] 在本申请实施例中,停顿时间可以为对象操作行为与终端的响应行为之间的时间差;例如用户触发搜索指令,终端显示搜索框的时间通常会滞后于用户触发指令的时间,两
者之间的时间差即为停顿时间。
[0111] 对所述停顿时间对应的代码进行修改,得到所述测试用例对应的自动化测试代码。
[0112] 在本申请实施例中,对所述停顿时间对应的代码进行修改,可以将停顿时间修改为0或者缩短停顿时间。
[0113] 在本申请实施例中,可以通过获取停顿时间对应的代码,对停顿时间进行修改,从而可以提高自动化测试过程中,待测用例的运行速率。
[0114] 在本申请实施例中,所述将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码,包括:
[0115] 将所述每个步骤用例信息对应的代码进行拼接,得到拼接后代码;
[0116] 基于所述测试用例的描述信息以及所述拼接后代码,在所述类模板中生成所述自动化测试代码。
[0117] 在本申请实施例中,拼接后代码为运行代码,可以为运行代码增加包名、输入(Import)信息等类结构,再将增加类结构的运行代码、类名以及代码中类对象涉及的函数
名等替换到类模板中,生成可运行的自动化测试代码。
[0118] S103:接收所述目标终端发送的所述目标数据,所述目标数据为所述目标终端在所述目标应用程序的标识信息对应的目标应用程序中,基于所述测试用例录制指令生成的
数据。
[0119] 在本申请实施例中,目标终端可以包括但不限于手机、平板电脑等;对象可以包括但不限于用户、机器人等。目标终端在接收到测试用例录制指令之后,若所述测试用例为视
频作者测试用例,如图6所示,所述方法可以包括:
[0120] S601:目标终端基于所述测试用例录制指令,显示与所述目标应用程序的标识信息对应的目标应用程序中预设页面;所述预设页面包括页面元素提取控件;
[0121] 在本申请实施例中,页面元素提取控件用于提取当前页面中的文本、图片等元素;页面元素提取控件可以包括但不限于文字、图片等;如图11所示,页面元素提取控件可以为
页面中的“校验”按键;当录制结束之后,用户可以点击页面中的“完成”按键结束录制过程。
[0122] S603:目标终端响应于对所述页面元素提取控件触发的操作指令,在所述预设页面中显示悬浮框;所述悬浮框包括所述预设页面的多个页面元素;
[0123] 在本申请实施例中,悬浮框可以显示在当前页面中的任意位置;悬浮框的尺寸可以根据实际现实的内容进行调节;如图12所示,页面中的悬浮框显示在页面侧边,其包括当
前页面中展示的所有元素。
[0124] S605:目标终端响应于对目标页面元素触发的操作指令,从所述多个页面元素中确定目标页面元素;
[0125] 在本申请实施例中,用户可以选择触发目标页面元素,并点击提交(例如“确定”)按键,确定目标页面元素。在一个具体的实施例中,如图12所示,可以在悬浮框展示的页面
元素中选择视频作者“秀阁造型师”。
[0126] S607:目标终端在所述预设页面的目标区域显示所述目标页面元素。
[0127] 在本申请实施例中,如图12所示,当用户选择悬浮框中的视频作者“秀阁造型师”,并点击“确定”之后,即可隐藏悬浮框,并在页面的目标区域显示视频作者“秀阁造型师”。目
标区域可以为预设页面中任意显示区域。
[0128] S609:目标终端响应于在用例描述弹窗的触发指令,确定所述测试用例的描述信息;所述用例描述弹窗为所述预设页面中显示的弹窗。
[0129] 在本申请实施例中,如图13所示,用例描述弹窗为用例名弹窗,用户可以在弹窗中输入测试用例的描述信息,例如,可以输入用例的用途等描述信息。目标终端确定测试用例
的描述信息之后,可以向本地终端发送该描述信息。
[0130] 在本申请实施例中,目标数据可以包括目标终端中步骤S401‑408对应的所有运行数据以及操作数据。
[0131] 具体的,在本申请实施例中,通过IDE插件实现创建用例入口,通过回放软件开发工具包(replay Software Development Kit,replay sdk)实现mock数据获取及录制操作
流程生成代码。mock数据通过后台服务器(简称:后台)存储,三大模块交互流程如图14所
示,其中,IDE插件用于创建IDE文件和写入代码;先向replay sdk发送用例录制请求;
replay sdk基于该请求录制目标终端的操作过程并生成代码;并向IDE插件返回自动化代
码;同时向后台服务器上传mock数据;后台服务器用于存储mock数据,便于后续应用于测试
终端的目标应用程序中进行自动化测试。
[0132] 具体的,在本申请实施例中,可以集成软件开发工具包(Software Development Kit,SDK),通过SDK mock数据录制操作过程;sdk能力分为三个部分,第一部分是 mock 能
力,主要是 mock 住当时手机的数据,让录制和回放的数据能基本保持一致,比如网络数
据、本地数据库、本地文件、ABTest数据等等;第二部分是录制校验能力,主要是记录测试同
学的具体操作,像点击、滑动、双击、长按等等,操作过程中可以选择文字图片作为检验点;
第三部分是代码生成的能力,根据录制的操作过程来生成的相应的自动化代码。
[0133] 关于第三部分代码生成的时序图如图15所示,其中录制管理者、自动用例转换分发者、代码转换者工厂、代码转换者、转换辅助类、代码转化注册类、代码生成类均为类名;
测试代码的转换流程如下:
[0134] 1、录制管理者启动用例录制并保存录制过程中的录制数据;
[0135] 2、录制管理者向自动用例转换分发者发送转换成安卓测试代码的请求,该请求携带录制数据;
[0136] 3、自动用例转换分发者向代码转换者工厂发送根据录制数据的类型创建代码转换者的请求;
[0137] 4、代码转换者工厂根据数据类型确定对应的代码转换者;
[0138] 5、代码转换者进行步骤代码转换,并向转换辅助类发送步骤代码;
[0139] 6、转换辅助类向代码转化注册类发送获取代码转换器请求;
[0140] 7、代码转化注册类向转换辅助类返回代码转换器;
[0141] 8、转换辅助类通过代码转换器确定代码生成类,并向代码生成类发送测试代码生成请求;
[0142] 9、代码生成类将步骤代码进行拼接生成自动化测试代码。
[0143] 具体的,在本申请实施例中,通过本申请的自动化测试代码以及采用传统测试技术进行用例编写和用例执行的效果对比图如图16所示;可见,相比于传统的测试技术,本申
请实施例通过自动化测试代码的用例测试时间明显缩短;且本申请实施例不需要人工编写
测试代码,通过自动化测试代码编写用例的时间也显著缩短。
[0144] 在一些实施例中,用例测试过程中的性能对比如下:
[0145] 1、手工测试:
[0146] ‑ 黑盒测试:5‑6min/用例,无需代码基础;
[0147] ‑ 维护成本:3‑5min/用例,手工用例维护;
[0148] ‑ 验证成本:测试时间 * 验证次数;
[0149] ‑ 验证过程:肉眼确认,机械劳动;
[0150] 2、传统的自动化测试:
[0151] ‑ 编写调试:30min/用例,需要代码能力;
[0152] ‑ 维护时间:20min/用例,需要代码能力;
[0153] ‑ 维护成本:维护时间 * 业务变更次数;
[0154] ‑ 验证成本:零人工时间成本,自动化运行;
[0155] ‑ 兼容性:需要适配不同机型
[0156] 其中,传统的自动化测试包括利用Monkey进行随机测试,无固定路径,通过自动化运行随机路径;或者利用相关测试框架进行自动化用例编写;而Monkey随机测试由于属于
随机运行,虽然介入人力成本较小,但无法满足日常自动化场景需求;主流测试框架可以满
足自定义路径及断言,但编写成本高,且在构建测试数据、mock数据等测试场景上成本非常
高。
[0157] 3、本申请的终端录制回放测试:
[0158] ‑ 录制成本:6‑8min/用例,无需代码基础;
[0159] ‑ 维护时间:3‑8min/用例,无需代码基础;
[0160] ‑ 维护成本:维护时间 * 业务变更次数;
[0161] ‑ 验证成本:零人工时间成本,自动化运行;
[0162] ‑ 兼容性:支持录制后跨设备回放能力。
[0163] 由以上本申请实施例提供的技术方案可见,本申请实施例获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括
按照对象操作行为的时序生成的多个对象操作行为数据;基于所述属性信息,确定所述测
试用例对应的测试场景;从而可以及时确定测试用例对应的场景信息,满足各种自动化测
试场景的需求;向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,
以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码执行过程中,对所
述目标数据进行回放,得到所述目标应用程序的测试数据;以及向服务器发送所述测试数
据以及目标数据,以使所述服务器基于所述测试数据与所述目标数据,得到所述目标应用
程序的测试结果;其中,所述自动化测试代码基于所述测试用例生成;从而可以通过基于录
制的测试用例生成的自动化测试代码进行自动化测试,降低了测试成本,并且提高了测试
效率。
[0164] 本申请实施例还提供了一种应用程序测试装置,如图17所示,所述装置包括:
[0165] 属性信息获取模块1710,用于获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录制得到;所述目标数据包括按照对象操作行为的时序生
成的多个对象操作行为数据;
[0166] 测试场景确定模块1720,用于基于所述属性信息,确定所述测试用例对应的测试场景;
[0167] 代码发送模块1730,用于向测试终端发送所述测试场景以及所述测试用例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代码,在代码
执行过程中,对所述目标数据进行回放,得到所述目标应用程序的测试数据;以及向服务器
发送所述测试数据以及目标数据,以使所述服务器基于所述测试数据与所述目标数据,得
到所述目标应用程序的测试结果;其中,所述自动化测试代码基于所述测试用例生成。
[0168] 在一些实施例中,所述装置还可以包括:
[0169] 目标数据获取模块,用于获取目标数据;
[0170] 所述目标数据获取模块可以包括:
[0171] 录制指令发送单元,用于响应于基于用例录制提示控件触发的第一操作指令,向所述目标终端发送测试用例录制指令;所述测试用例录制指令携带所述目标应用程序的标
识信息;
[0172] 目标数据接收单元,用于接收所述目标终端发送的所述目标数据,所述目标数据为所述目标终端在所述目标应用程序的标识信息对应的目标应用程序中,基于所述测试用
例录制指令生成的数据。
[0173] 在一些实施例中,所述装置还可以包括:
[0174] 步骤用例信息转化模块,用于基于每个对象操作行为数据对应的时序,将所述目标数据转化成多个步骤用例信息;
[0175] 测试用例构建模块,用于基于所述多个步骤用例信息,构建测试用例;
[0176] 自动化测试代码生成模块,用于基于所述测试用例生成自动化测试代码。
[0177] 在一些实施例中,所述目标数据还包括多个对象操作关联数据,每个对象操作关联数据对应一个对象操作行为数据,所述装置还可以包括:
[0178] 步骤用例信息生成模块,用于将所述多个对象操作行为数据,按照每个对象操作行为数据对应的时序,生成多个步骤用例信息;
[0179] 在一些实施例中,所述步骤用例信息生成模块可以包括:
[0180] 步骤用例信息生成单元,用于基于每个对象操作行为数据对应的时序,将所述多个对象操作行为数据以及对应的多个对象操作关联数据生成多个步骤用例信息;每个步骤
用例信息基于一个对象操作行为数据以及对应的对象操作关联数据生成。
[0181] 在一些实施例中,所述自动化测试代码生成模块可以包括:
[0182] 步骤类对象确定单元,用于对所述每个步骤用例信息进行序列化处理,得到步骤类对象;
[0183] 代码转化单元,用于将每个步骤类对象转化为目标语法的代码;
[0184] 代码生成单元,用于将所述每个步骤用例信息对应的代码进行拼接,生成所述自动化测试代码。
[0185] 在一些实施例中,所述步骤类对象确定单元可以包括:
[0186] 第一类对象确定子单元,用于将所述每个步骤用例信息中的对象操作行为数据序列化处理,得到第一类对象;
[0187] 第二类对象确定子单元,用于将所述每个步骤用例信息中的对象操作关联数据序列化处理,得到第二类对象;
[0188] 在一些实施例中,所述代码转化单元可以包括:
[0189] 第一代码确定子单元,用于基于第一映射信息,确定每个第一类对象对应的第一代码;所述第一代码为所述目标语法的代码,所述第一映射信息表征类对象与代码的映射
关系;
[0190] 第二代码确定子单元,用于将每个第二类对象转化成所述目标语法的第二代码。
[0191] 在一些实施例中,所述装置还可以包括:
[0192] 注释信息确定模块,用于基于所述对象操作行为数据,确定所述第一代码的注释信息;
[0193] 第一更新代码确定模块,用于基于所述注释信息,更新所述第一代码,得到第一更新代码;
[0194] 在一些实施例中,所述自动化测试代码生成模块可以包括:
[0195] 目标代码生成单元,用于将所述每个步骤用例信息对应的第一更新代码与第二代码进行拼接,生成所述每个步骤用例信息对应的目标代码;
[0196] 第一代码生成单元,用于将所述每个步骤用例信息对应的目标代码进行拼接,生成所述自动化测试代码。
[0197] 在一些实施例中,所述装置还可以包括:
[0198] 用例录制控件显示模块,用于基于预设插件,在目标页面显示用例录制控件;
[0199] 文件名编辑弹窗显示模块,用于响应于基于所述用例录制控件触发的第二操作指令,显示所述测试用例的文件名编辑弹窗;所述文件名编辑弹窗中包括文件名编辑控件和
文件名提交控件;
[0200] 文件名显示模块,用于响应于基于所述文件名编辑控件触发的第三操作指令,显示所述测试用例的文件名;
[0201] 文件名确定模块,用于响应于基于所述文件名提交控件触发的第四操作指令,确定所述测试用例的文件名;
[0202] 用例录制提示页面显示模块,用于显示用例录制提示页面;所述用例录制提示页面包括所述用例录制提示控件。
[0203] 在一些实施例中,所述装置还可以包括:
[0204] 类模板确定模块,用于基于所述测试用例的文件名,确定所述测试用例对应的类模板;
[0205] 描述信息获取模块,用于获取所述测试用例的描述信息。
[0206] 在一些实施例中,所述自动化测试代码生成模块可以包括:
[0207] 代码拼接单元,用于将所述每个步骤用例信息对应的代码进行拼接,得到拼接后代码;
[0208] 第二代码生成单元,用于基于所述测试用例的描述信息以及所述拼接后代码,在所述类模板中生成所述自动化测试代码。
[0209] 所述的装置实施例中的装置与方法实施例基于同样地发明构思。
[0210] 本申请实施例提供了一种应用程序测试设备,该设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或至少一段程序由该处理器
加载并执行以实现如上述方法实施例所提供的应用程序测试方法。
[0211] 本申请的实施例还提供了一种计算机存储介质,所述存储介质可设置于终端之中以保存用于实现方法实施例中一种应用程序测试方法相关的至少一条指令或至少一段程
序,该至少一条指令或至少一段程序由该处理器加载并执行以实现上述方法实施例提供的
应用程序测试方法。
[0212] 本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备
的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计
算机设备执行以实现上述方法实施例提供的应用程序测试方法。
[0213] 可选地,在本申请实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只
读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动
硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0214] 本申请实施例所述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存
储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储
数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取
存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失
性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访
问。
[0215] 本申请实施例所提供的应用程序测试方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图18是本申请实施例提供的
一种应用程序测试方法的服务器的硬件结构框图。如图18所示,该服务器1800可因配置或
性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central 
Processing Units,CPU)1810(中央处理器1810可以包括但不限于微处理器MCU或可编程逻
辑器件FPGA等的处理装置)、用于存储数据的存储器1830,一个或一个以上存储应用程序
1823或数据1822的存储介质1820(例如一个或一个以上海量存储设备)。其中,存储器1830
和存储介质1820可以是短暂存储或持久存储。存储在存储介质1820的程序可以包括一个或
一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器
1810可以设置为与存储介质1820通信,在服务器1800上执行存储介质1820中的一系列指令
操作。服务器1800还可以包括一个或一个以上电源1860,一个或一个以上有线或无线网络
接口1850,一个或一个以上输入输出接口1840,和/或,一个或一个以上操作系统1821,例如
Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
[0216] 输入输出接口1840可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1800的通信供应商提供的无线网络。在一个实例中,输入输出接口1840包
括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备
相连从而可与互联网进行通讯。在一个实例中,输入输出接口1840可以为射频(Radio 
Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0217] 本领域普通技术人员可以理解,图18所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1800还可包括比图18中所示更多或者更少的组件,或者具
有与图18所示不同的配置。
[0218] 由上述本申请提供的应用程序测试方法、装置、设备或存储介质的实施例可见,本申请获取测试用例对应的目标应用程序的属性信息;所述测试用例基于对目标数据进行录
制得到;所述目标数据包括按照对象操作行为的时序生成的多个对象操作行为数据;基于
所述属性信息,确定所述测试用例对应的测试场景;从而可以及时确定测试用例对应的场
景信息,满足各种自动化测试场景的需求;向测试终端发送所述测试场景以及所述测试用
例对应的自动化测试代码,以使所述测试终端在所述测试场景中执行所述自动化测试代
码,在代码执行过程中,对所述目标数据进行回放,得到所述目标应用程序的测试数据;以
及向服务器发送所述测试数据以及目标数据,以使所述服务器基于所述测试数据与所述目
标数据,得到所述目标应用程序的测试结果;其中,所述自动化测试代码基于所述测试用例
生成;从而可以通过基于录制的测试用例生成的自动化测试代码进行自动化测试,降低了
测试成本,并且提高了测试效率。
[0219] 需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些
情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍
然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续
顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可
能是有利的。
[0220] 本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设
备、存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处
参见方法实施例的部分说明即可。
[0221] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机存储
介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0222] 以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。