1.本发明涉及性能测试技术领域,具体而言,涉及一种性能测试脚本自动生成方法及装置。
背景技术:2.目前,基于c/s架构的系统性能测试采用的方式是,通过性能测试工具来模拟前台应用程序和系统后台数据库的交互,其优势是不需要太多资源,且并发数可控。
3.在具体实施方式中,预先通过跟踪工具抓取前台应用程序的业务操作所对应的后台sql请求,再打开jmeter工具,手工创建测试计划节点、线程组节点、控制器,并在控制器下添加模拟的请求,在添加模拟的请求时,逐条将跟踪到的每个sql请求的内容粘贴到一个模拟的请求中,然后手动配置好该sql请求对应的数据库参数等。如此,完成jmeter脚本的创建。
4.由于sql请求量大且业务类型多样,人工创建jmeter脚本耗时长,效率低下。
技术实现要素:5.本技术实施例的目的在于提供一种性能测试脚本自动生成方法及装置,通过自动化方式创建性能测试脚本,提高脚本生成效率,进而提高性能测试效率。
6.为实现上述目的,本技术提供如下技术方案:
7.第一方面,本技术实施例提供一种性能测试脚本自动生成方法,所述性能测试脚本用于对待测系统的性能进行测试,所述方法包括:获取跟踪文件,所述跟踪文件包括预设应用程序向所述待测系统的数据库发出的多个业务请求;将每一所述业务请求解析为多个预设字段的内容,得到解析结果;获取预设的脚本配置文件,所述脚本配置文件包括组成性能测试脚本的框架结构的各个节点的配置信息;根据所述脚本配置文件以及所述解析结果生成性能测试脚本。
8.本技术实施例提供的性能测试脚本自动生成方法,可以根据预设的脚本配置文件和跟踪的实际业务请求自动生成性能测试脚本,可以极大降低人工成本、提高脚本生成效率。
9.在一种可选的实施方式中,在获取预设的脚本配置文件之前,所述方法还包括:定义性能测试脚本的框架结构,所述框架结构包括:性能测试计划节点以及在所述性能测试计划节点下的线程组节点;获取定义的所述框架结构中各个节点的配置信息,并根据所述配置信息生成所述脚本配置文件。
10.预先定义性能测试脚本的框架结构及框架结构中各节点的配置信息,生成脚本配置文件,以供在自动化创建性能测试脚本时调用。
11.在一种可选的实施方式中,所述根据所述脚本配置文件以及所述解析结果生成性能测试脚本,包括:根据所述脚本配置文件组成性能测试脚本的框架结构;在所述框架结构中的线程组节点下根据每一所述业务请求的解析结果构建对应的jdbc(java数据库连接,
java database connectivity)请求,得到多个jdbc请求,所述解析结果中的多个预设字段的内容分别对应于所述jdbc请求中的其中一项参数;根据所述脚本配置文件中所述框架结构的各个节点的配置信息,以及构建出的所述多个jdbc请求,生成性能测试脚本。
12.在生成性能测试脚本的过程中,根据实际业务请求的解析结果构建jdbc请求,用于在进行性能测试时,模拟实际用户与后台数据库进行交互,由于绝大部分配置信息已经在脚本配置文件中写好,因此,只需构建出jdbc请求,即可完成性能测试脚本的创建。
13.在一种可选的实施方式中,在将每一所述业务请求解析为多个预设字段的内容,得到解析结果之后,所述方法还包括:按照预设的清洗规则对所述解析结果进行数据清洗,得到经清洗的解析结果;所述多个jdbc请求是根据所述经清洗的解析结果构建得到的。
14.跟踪文件中的多个业务请求包含无用的业务请求,通过设置清洗规则,将得到的解析结果中无用业务请求的解析结果去除,仅保留可用内容。
15.在一种可选的实施方式中,所述解析结果包括所对应的业务请求的发送时间戳,所述根据所述脚本配置文件中所述框架结构的各个节点的配置信息,以及构建出的所述多个jdbc请求,生成性能测试脚本,包括:将所述多个jdbc请求中属于同一业务的jdbc请求按照所对应的解析结果中的发送时间戳进行排序;根据所述脚本配置文件中所述框架结构的各个节点的配置信息,以及排序后的多个jdbc请求生成性能测试脚本。
16.由于各jdbc请求是按照所对应的业务及发送时间戳排序,与实际业务十分契合,性能测试的真实度高。
17.在一种可选的实施方式中,在将所述多个jdbc请求中属于同一业务的jdbc请求按照所对应的解析结果中的发送时间戳进行排序之后,以及在根据所述脚本配置文件中所述框架结构的各个节点的配置信息,以及排序后的多个jdbc请求生成性能测试脚本之前,所述方法还包括:对于不同业务的jdbc请求,分别初始化一计数值,并根据所对应的发送时间戳对计数值顺序进行累加计数;将属于同一业务的jdbc请求按照所对应业务的名称以及在所述业务中的计数值进行命名。
18.将属于同一业务的jdbc请求按照所对应业务的名称以及在业务中的计数值进行命名,在运行性能测试脚本后,可以直观看出不同业务的性能测试结果,同时,也可以体现出每种业务的请求数量。
19.在一种可选的实施方式中,所述解析结果包括所对应的业务请求的发送时间戳,在得到经清洗的解析结果之后,所述方法还包括:将所述经清洗的解析结果按照所对应的业务进行分类,并将所述经清洗的解析结果中属于同一业务的各解析结果按照所述发送时间戳进行排序,以按照排序后的顺序对同一业务的解析结果依次构建对应的jdbc请求。
20.第二方面,本技术实施例提供一种性能测试脚本自动生成装置,所述性能测试脚本用于对待测系统的性能进行测试,所述装置包括:请求跟踪模块,用于获取跟踪文件,所述跟踪文件包括预设应用程序向所述待测系统的数据库发出的多个业务请求;数据解析模块,用于将每一所述业务请求解析为多个预设字段的内容,得到解析结果;配置模块,用于获取预设的脚本配置文件,所述脚本配置文件包括组成性能测试脚本的框架结构的各个节点的配置信息;脚本构建模块,用于根据所述脚本配置文件以及所述解析结果生成性能测试脚本。
21.第三方面,本技术实施例提供一种存储介质,所述存储介质上存储有计算机程序,
所述计算机程序被处理器运行时执行如第一方面、第一方面中任一可选实施方式所述的方法。
22.第四方面,本技术实施例提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过所述总线通信,所述机器可读指令被所述处理器执行时执行如第一方面、第一方面中任一可选实施方式所述的方法。
附图说明
23.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
24.图1为本技术实施例提供的一种性能测试脚本自动生成方法的流程图;
25.图2为性能测试脚本自动生成方法中步骤150的一种具体流程图;
26.图3为本技术实施例提供的一种性能测试脚本自动生成装置的示意图;
27.图4为本技术实施例提供的一种电子设备的示意图。
具体实施方式
28.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
29.本技术实施例提供一种性能测试脚本自动生成方法,用于自动化生成性能测试脚本,以利用自动生成的性能测试脚本对待测系统的性能进行测试。由于性能测试脚本是自动生成的,人工参与的环节极少,提高了脚本生成的效率,进一步的,还提高了性能性能测试的效率。jmeter是apache组织的开放源代码项目,是用于性能测试的一种工具。本技术实施例中的性能测试脚本可以是jmeter脚本,当然,也可以是其他形式的脚本,如loadrunner脚本、webload脚本、loadster脚本等。
30.图1示出了本实施例提供的性能测试脚本自动生成方法的流程图,请参照图1,该方法包括如下步骤:
31.步骤110:创建脚本配置文件。
32.脚本配置文件包括组成性能测试脚本的框架结构的各个节点的配置信息。具体的,在脚本配置文件中定义了性能测试脚本的框架结构,性能测试脚本的框架结构的各个节点包括:测试计划节点(根节点)以及在测试计划节点下的线程组节点(根节点下的子节点),当然,在测试计划节点下还可包括其他的子节点。测试计划描述了进行性能测试的过
程中jmeter脚本的执行过程和步骤,一个完整的测试计划可以包括一个或多个线程组、逻辑控制器、实例产生控制器、监听器、定时器、配置元素等,因此,在脚本配置文件中,所定义的组成性能测试脚本的框架结构的各个节点,除测试计划节点和线程组节点外,还可包括但不限于逻辑控制器节点、监听器节点等,脚本配置文件中性能测试脚本的框架结构可根据需求灵活定义。
33.性能测试的基础是线程组,一个线程组表示所模拟的一组用户,这组用户用来模拟向待测系统的数据库发送请求。
34.可以理解的是,本实施例通过模拟客户端用户向系统数据库发送所构建的测试请求的方式对系统性能进行测试。
35.在本实施例中,脚本配置文件为*.conf或*.ini格式。
36.步骤110具体包括:定义性能测试脚本的框架结构,该框架结构包括:性能测试计划节点以及在性能测试计划节点下的线程组节点;获取所定义的框架结构中各个节点的配置信息,并根据获得的配置信息生成脚本配置文件。
37.在一种具体实施例中,预先获取多个已生成的性能测试脚本,分析该多个性能测试脚本中的配置,提取出整体的框架结构以及通用性的公共参数及变量,写入到脚本配置文件中,以供在自动化创建性能测试脚本时调用。
38.步骤110为脚本生成的前期准备工作,在需进行性能测试之前,执行下述步骤120~150,以生成性能测试脚本。
39.步骤120:获取跟踪文件,该跟踪文件包括预设应用程序向待测系统的数据库发出的多个业务请求。
40.在一客户端设备上部署有前台应用程序,预先通过跟踪工具抓取前台应用程序的业务操作所对应的业务请求,前台应用程序在执行业务操作时向后台数据库发出对应的业务请求,一个业务可以仅发送一条业务请求,也可以发送一组业务请求。例如,可以使用sqlprofiler等跟踪工具进行跟踪,跟踪内容包括请求的时间及正文内容,通过跟踪工具将前台应用程序与后台数据库在一段时间内交互的所有业务请求全部抓取出来,并保存,形成跟踪文件。跟踪文件中的每条业务请求按照所对应的业务名称命名。
41.跟踪文件可以支持保存为多种格式,本实施例中,跟踪文件包括但不限于xml格式。
42.当简单业务系统仅存在一个数据源时,即一个前台应用程序仅与一个后台数据库交互,可获得一个跟踪文件。当复杂业务系统存在多个数据源时,即一个前台应用程序需与多个后台数据库交互来完成业务,可获得多个跟踪文件。
43.跟踪文件的获取包括但不限于如下方式:
44.1、获取跟踪文件的文件名称,根据文件名称获取到跟踪文件。
45.2、获取跟踪文件的存储路径,查询该存储路径下的文件,获取到跟踪文件。
46.3、通过存储介质载体提供的读取接口获取到跟踪文件。
47.步骤130:将每一业务请求解析为多个预设字段的内容,得到解析结果。
48.在获得一个或多个跟踪文件后,对跟踪文件中的每一业务请求进行解析,将每条业务请求解析为多个预设字段的内容,每条业务请求均获得一个解析结果。解析出的多个预设字段的内容包括:请求正文、数据库信息、前台应用程序的信息以及时间信息,时间信
息转换为时间戳,该时间戳为所对应的业务请求的发送时间戳。
49.步骤140:获取预先创建的脚本配置文件。
50.步骤150:根据该脚本配置文件以及该解析结果生成性能测试脚本。
51.在得到业务请求的解析结果后,根据解析结果以及预先创建的脚本配置文件,自动生成性能测试脚本。
52.具体的,请参照图2,步骤150包括:
53.步骤151:根据脚本配置文件组成性能测试脚本的框架结构。
54.按照xml格式构建脚本。首先,根据脚本配置文件构建测试计划节点,然后,在测试计划节点下添加线程组节点和jdbc连接配置(jdbcconnection config)节点。线程组节点的名称可根据业务名称默认生成。在脚本配置文件中配置线程组的线程设置信息,默认配置为1个并发、执行1轮次,且无时间配置。
55.步骤152:在该框架结构中的线程组节点下根据每一业务请求的解析结果构建对应的jdbc请求,得到多个jdbc请求。
56.根据每一业务请求的解析结果在线程组节点下构建对应的jdbc请求,每一业务请求的解析结果包括多个字段的内容,如请求正文、数据库信息、前台应用程序的信息以及发送时间戳,每个字段的内容分别对应于jdbc请求中的其中一项参数。
57.在步骤152中,可根据步骤130获得的所有解析结果构建jdbc请求,也可以根据其中的部分解析结果构建jdbc请求,如对步骤130中的解析结果进行数据清洗,根据经清洗的解析结果构建jdbc请求。一条业务请求解析获得一个解析结果,一个解析结果构建出一个jdbc请求。
58.步骤153:根据脚本配置文件中框架结构的各个节点的配置信息,以及构建出的多个jdbc请求,生成性能测试脚本。
59.在根据业务请求的解析结果在线程组节点下构建出对应的jdbc请求后,根据构建出的多个jdbc请求以及脚本配置文件中的配置信息,自动生成性能测试脚本。
60.在一种实施例中,在步骤152构建出多个jdbc请求后,将多个jdbc请求中属于同一业务的jdbc请求按照所对应的解析结果中的发送时间戳进行排序,然后,根据脚本配置文件中框架结构的各个节点的配置信息,以及排序后的多个jdbc请求生成性能测试脚本。由于各jdbc请求是按照所对应的业务及发送时间戳排序,与实际业务十分契合。
61.在排序后,对于不同业务的jdbc请求,分别初始化一计数值,并根据所对应的发送时间戳对计数值顺序进行累加计数,将业务名称和计数值进行拼接,以构成jdbc请求的名称。将属于同一业务的jdbc请求按照所对应业务的名称以及在业务中的计数值进行命名。
62.例如,业务a共有100个业务请求,构建出100个jdbc请求,对业务a初始化一计数值,假设初始计数值为0,按照100个业务请求的发送时间戳顺序进行累加计数,从0计数至99,100个jdbc请求的名称依次为:业务a_001、业务a_002、
……
、业务a_099。
63.对于有特殊属性的jdbc请求,抽象出对应的关键字,并将提取的关键字初始化为该请求的特征值变量,并按照业务名称、特征值以及计数值命名,假设特征值为002,则命名为业务a_002_001。
64.遍历所有解析结果,将所有解析结果按照一定的命名规则构建出jdbc请求,并添加到框架结构的xml文件中。
65.在jdbc请求构建完毕后,整个性能测试脚本的内容即构建完毕,根据已获得的框架结构的配置信息以及构建出的jdbc请求,生成后缀为jmx的性能测试脚本。
66.性能测试脚本可按照如下方式命名:
67.1、拟定固定的文件名,如test.jmx;
68.2、根据所实现的业务的名称进行命名;
69.3、按照预定的规则自动命名。
70.若配置了脚本存储路径,则在生成性能测试脚本后,将性能测试脚本的文件保存在对应的路径下,如果未配置路径,则保存在默认文件夹中。
71.本实施例中自动生成的性能测试脚本可支持后续灵活修改。
72.运行性能测试脚本,通过线程组节点向数据库发送构建出的jdbc请求,实时监控并汇总系统的性能测试数据。在结束运行性能测试脚本后,生成性能测试报告,报告中包括对待测系统进行性能测试的各项性能测试指标。
73.在一种具体的实施方式中,根据经清洗的解析结果构建jdbc请求。在步骤130之后,该方法还包括:按照预设的清洗规则对得到的解析结果进行数据清洗,得到经清洗的解析结果。跟踪文件中的多个业务请求包含无用的业务请求,通过设置清洗规则,将得到的解析结果中无用业务请求的解析结果去除,仅保留可用内容。
74.在完成数据清洗后,按照预定义的格式及字段名称,对经清洗的解析结果进行保存,本实施例中采用panads保存。
75.保存后的解析结果可支持打印、转储、写入等形式输出到外部载体,外部载体包含数据库、文本文件、存储介质等,作为业务分析使用。
76.在将经清洗的解析结果保存后,可对经清洗的解析结果进行后续处理。
77.对于同一数据源的解析结果,将经清洗的解析结果按照业务进行分类,并将经清洗的解析结果中属于同一业务的各解析结果按照发送时间戳进行排序,如业务a共有10个业务请求,则将业务a的10个业务请求的解析结果按照发送时间戳进行排序。
78.可以理解的,对于单一数据源、单一业务的多个业务请求,若多个业务请求的解析结果已是按照时间先后顺序排序,可以不需要进行上述分类及排序的步骤。
79.对于多个数据源的解析结果,将经清洗的多个数据源的解析结果合并到一起,并将合并后的解析结果按照业务进行分类,并且,多个数据源中属于同一业务的解析结果按照统一的业务名称命名,如对于数据源1、数据源2和数据源3的解析结果,在合并之前,对于同一业务a的命名可能不一,在合并之后,均统一命名为业务a。然后,将同一业务的多个解析结果按照发送时间戳进行排序,如将业务a的多个解析结果按照时间戳进行排序、将业务b的多个解析结果按照时间戳进行排序。在将多个数据源的解析结果合并、分类、排序后,使解析结果与实际业务相契合。
80.在构建性能测试脚本时,根据经清洗的解析结果构建jdbc请求。在构建jdbc请求时,根据业务名称从保存的解析结果中依次查找对应业务的所有解析结果,并按照排序后的顺序对同一业务的解析结果依次构建对应的jdbc请求。
81.在本实施例中,构建jdbc请求时,通过校验规则验证解析结果中请求内容和业务名称的匹配性,在验证请求内容与业务名称匹配的情况下,根据该解析结果构建jdbc请求,在验证请求内容与业务名称不匹配的情况下,不根据该解析结果构建jdbc请求,使得到的
jdbc请求与实际业务更加贴合。
82.综上所述,本技术实施例提供的性能测试脚本自动生成方法,可以根据预设的脚本配置文件和跟踪的实际业务请求自动生成脚本文件,可以极大降低人工成本、提高脚本生成效率。
83.基于同一发明构思,本技术实施例提供一种性能测试脚本自动生成装置,该性能测试脚本用于对待测系统的性能进行测试,请参照图3,该装置包括:请求跟踪模块210、数据解析模块220、配置模块230以及脚本构建模块240。
84.其中,请求跟踪模块210,用于获取跟踪文件,所述跟踪文件包括预设应用程序向所述待测系统的数据库发出的多个业务请求;
85.数据解析模块220,用于将每一所述业务请求解析为多个预设字段的内容,得到解析结果;
86.配置模块230,用于获取预设的脚本配置文件,所述脚本配置文件包括组成性能测试脚本的框架结构的各个节点的配置信息;
87.脚本构建模块240,用于根据所述脚本配置文件以及所述解析结果生成性能测试脚本。
88.可选的,该装置还包括:配置文件构建模块,用于定义性能测试脚本的框架结构,所述框架结构包括:性能测试计划节点以及在所述性能测试计划节点下的线程组节点;以及用于获取定义的所述框架结构中各个节点的配置信息,并根据所述配置信息生成所述脚本配置文件。
89.可选的,脚本构建模块240包括:框架结构解析模块,用于根据所述脚本配置文件组成性能测试脚本的框架结构;jdbc请求构建模块,用于在所述框架结构中的线程组节点下根据每一所述业务请求的解析结果构建对应的jdbc请求,得到多个jdbc请求,所述解析结果中的多个预设字段的内容分别对应于所述jdbc请求中的其中一项参数;脚本文件生成模块,用于根据所述脚本配置文件中所述框架结构的各个节点的配置信息,以及构建出的所述多个jdbc请求,生成性能测试脚本。
90.可选的,该装置还包括:数据清洗模块,用于按照预设的清洗规则对所述解析结果进行数据清洗,得到经清洗的解析结果;jdbc请求构建模块具体用于根据所述经清洗的解析结果构建得到所述多个jdbc请求。
91.可选的,脚本文件生成模块具体用于:将所述多个jdbc请求中属于同一业务的jdbc请求按照所对应的解析结果中的发送时间戳进行排序;根据所述脚本配置文件中所述框架结构的各个节点的配置信息,以及排序后的多个jdbc请求生成性能测试脚本。
92.可选的,该装置还包括:命名模块,用于对于不同业务的jdbc请求,分别初始化一计数值,并根据所对应的发送时间戳对计数值顺序进行累加计数;将属于同一业务的jdbc请求按照所对应业务的名称以及在所述业务中的计数值进行命名。
93.可选的,该装置还包括:处理模块,用于将所述经清洗的解析结果按照所对应的业务进行分类,并将所述经清洗的解析结果中属于同一业务的各解析结果按照所述发送时间戳进行排序,以按照排序后的顺序对同一业务的解析结果依次构建对应的jdbc请求。
94.本技术实施例提供的性能测试脚本自动生成装置,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施
例中相应内容。
95.图4示出了本技术实施例提供的电子设备300的一种可能的结构。参照图4,电子设备300包括:处理器310、存储器320以及通信接口330,这些组件通过通信总线340和/或其他形式的连接机构(未示出)互连并相互通讯。
96.其中,存储器320包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(random access memory,简称ram),只读存储器(read only memory,简称rom),可编程只读存储器(programmable read-only memory,简称prom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),电可擦除可编程只读存储器(electric erasable programmable read-only memory,简称eeprom)等。处理器310以及其他可能的组件可对存储器320进行访问,读和/或写其中的数据。
97.处理器310包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器310可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、微控制单元(micro controller unit,简称mcu)、网络处理器(network processor,简称np)或者其他常规处理器;还可以是专用处理器,包括图形处理器(graphics processing unit,gpu)、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuits,简称asic)、现场可编程门阵列(field programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器310为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
98.通信接口330包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互,例如可以与外部存储介质载体通信,获取跟踪文件。通信接口330可以包括进行有线和/或无线通信的接口。
99.在存储器320中可以存储一个或多个计算机程序指令,处理器310可以读取并运行这些计算机程序指令,以实现本技术实施例提供的性能测试脚本自动生成方法以及其他期望的功能。
100.可以理解,图4所示的结构仅为示意,电子设备300还可以包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。电子设备300可能是实体设备,例如pc机、笔记本电脑、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备300也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。本实施例提供的电子设备300与前文中部署有前台应用程序的客户端设备可以是同一设备,也可以是不同设备。
101.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本技术实施例提供的性能测试脚本自动生成方法。例如,计算机可读存储介质可以实现为图4中电子设备300中的存储器320。
102.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个
以上模块集成形成一个独立的部分。
103.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。