基于自动化测试的更改设备信息的方法及装置
技术领域
本发明涉及移动设备测试领域,尤其是基于自动化测试的更改设备信息的方法及装置。
背景技术
对于移动设备的生产厂商来说,移动设备在开发过程中需要经过多次自动化测试,来确保软件版本的稳定性。例如,使用Monkey方法进行安卓自动化测试,以完成对正在开发的应用程序或模块、或移动设备***的压力测试。然而,在开发阶段试产的移动设备并不多,但需要对大量移动设备进行测试以收集测试结果。为了解决移动设备资源紧张的问题,目前可采用的方案是通过电脑端的写号工具对已经完成测试任务的移动设备再写入一组新的设备信息,即,通过更改移动设备的设备信息来将其模拟成一台新的移动设备,再继续进行自动化测试,以缓解测试时移动设备资源紧张的难题。但这样做每次写入一组设备信息时都要人工手动操作,不能实现完全的自动化测试,效率有待提高。
发明内容
为此,本发明提供了基于自动化测试的更改设备信息的方法及装置,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了基于自动化测试的更改设备信息的方法,方法适于在移动设备中执行,移动设备上存储有包含多组设备信息的设备信息列表,方法包括步骤:确定是否接收到移动设备的***启动广播消息若接收到则根据自动化测试脚本的执行时间设置设备信息更改周期;通过执行自动化测试脚本对移动设备进行自动化测试;每隔设备信息更改周期从设备信息列表中顺序读取一组设备信息;检测所读取的该组设备信息是否有效,若该组设备信息有效则将所述移动设备的设备信息更改为该组设备信息;以及重启移动设备,依次重复上述。
可选地,在根据本发明的方法中,一组设备信息包括:移动设备的国际移动设备标识、WIFI MAC地址和蓝牙MAC地址。
可选地,在根据本发明的方法中,进行自动化测试的步骤,还包括步骤:读取自动化测试的日志信息并记录测试结果。
可选地,在根据本发明的方法中,检测所读取的设备信息是否有效的步骤包括检测该组设备信息中国际移动设备标识是否有效的步骤:判断国际移动设备标识是否是15位十进制数字;若是15位十进制数字,则用国际移动设备标识的前14位数字计算出校验码;以及将算得的校验码与最后一位校验位进行对比,若一致则确定国际移动设备标识有效。
可选地,在根据本发明的方法中,检测所读取的设备信息是否有效的步骤还包括检测该组设备信息中WIFI MAC地址是否有效的步骤:判断WIFI MAC地址是否为12位十六进制数字,若是则WIFI MAC地址有效。
可选地,在根据本发明的方法中,检测所读取的设备信息是否有效的步骤还包括检测该组设备信息中蓝牙MAC地址是否有效的步骤:判断蓝牙MAC地址是否为12位十六进制数字,若是则蓝牙MAC地址有效。
可选地,在根据本发明的方法中,检测所读取的设备信息是否有效的步骤还包括步骤:判断所读取的该组设备信息是否唯一,若是则设备信息有效。
可选地,在根据本发明的方法中,若设备信息有效则将移动设备的设备信息更改为该组设备信息的步骤还包括:将判断有效的该组设备信息写入移动设备的非易失性随机访问存储器。
根据本发明的另一方面,提供了基于自动化测试的更改设备信息的装置,装置驻留在移动设备中,移动设备上存储有包含多组设备信息的设备信息列表,装置包括:检测单元,适于确定是否接收到移动设备的***启动广播消息、还适于检测所读取的设备信息是否有效;设置单元,适于在接收到***启动广播消息时,根据自动化测试脚本的执行时间设置设备信息更改周期;测试单元,适于通过执行自动化测试脚本对移动设备进行自动化测试;信息读取单元,适于每隔设备信息更改周期从所述设备信息列表中顺序读取一组设备信息;以及设置单元还适于在检测到该组设备信息有效时,将该移动设备的设备信息更改为该组设备信息、且重启所述移动设备。
可选地,在根据本发明的装置中,一组设备信息包括:移动设备的国际移动设备标识、WIFI MAC地址和蓝牙MAC地址。
可选地,在根据本发明的装置中,测试单元还适于读取自动化测试的日志信息、并记录测试结果。
可选地,在根据本发明的装置中,检测单元还包括:判断子单元,适于判断国际移动设备标识是否是15位十进制数字;计算子单元,适于在判断是15位十进制数字时,用国际移动设备标识的前14位数字计算出校验码;以及判断子单元还适于将算得的所述校验码与最后一位校验位进行对比,若一致则判定国际移动设备标识有效。
可选地,在根据本发明的装置中,判断子单元还适于判断WIFI MAC地址是否为12位十六进制数字,若是则判定WIFI MAC地址有效。
可选地,在根据本发明的装置中,判断子单元还适于判断蓝牙MAC地址是否为12位十六进制数字,若是则判定蓝牙MAC地址有效。
可选地,在根据本发明的装置中,判断子单元还适于判断所读取的该组设备信息是否唯一,若是则判定该组设备信息有效。
可选地,在根据本发明的装置中,设置单元还适于将判断有效的该组设备信息写入移动设备的非易失性随机访问存储器。
根据本发明的另一方面,提供了一种移动设备,适于执行自动化测试,具有如上所述的基于自动化测试的更改设备信息的装置。
根据上述描述,本发明的方案通过设置设备信息更改周期,每执行一次自动化测试后,自动更改移动设备的设备信息,再开始执行新一轮自动化测试,能够解决自动化测试中移动设备资源紧张的问题,并且减少人工操作,能够提高自动化测试的效率。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明的一个示例性实施方式的移动设备100的构造框图;
图2示出了根据本发明一个实施例的基于自动化测试的更改设备信息的方法200的流程图;以及
图3示出了根据本发明一个实施例的基于自动化测试的更改设备信息的装置300的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1为根据本发明的一个实施方式的移动设备100构造示意图。参照图1,移动设备100包括:存储器接口102、一个或多个数据处理器、图像处理器和/或中央处理单元104,以及***接口106。存储器接口102、一个或多个处理器104和/或***接口106既可以是分立元件,也可以集成在一个或多个集成电路中。在移动设备100中,各种元件可以通过一条或多条通信总线或信号线来耦合。传感器、设备和子***可以耦合到***接口106,以便帮助实现多种功能。例如,运动传感器110、光传感器112和距离传感器114可以耦合到***接口106,以方便定向、照明和测距等功能。其他传感器116同样可以与***接口106相连,例如定位***(例如GPS接收机)、温度传感器、生物测定传感器或其他感测设备,由此可以帮助实施相关的功能。
相机子***120和光学传感器122可以用于方便诸如记录照片和视频剪辑的相机功能的实现,其中相机子***和光学传感器例如可以是电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器。可以通过一个或多个无线通信子***124来帮助实现通信功能,其中无线通信子***可以包括射频接收机和发射机和/或光(例如红外)接收机和发射机。无线通信子***124的特定设计和实施方式可以取决于移动设备100所支持的一个或多个通信网络。例如,移动设备100可以包括被设计成支持GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BlueboothTM网络的通信子***124。音频子***126可以与扬声器128以及麦克风130相耦合,以便帮助实施启用语音的功能,例如语音识别、语音复制、数字记录和电话功能。
I/O子***140可以包括触摸屏控制器142和/或一个或多个其他输入控制器144。触摸屏控制器142可以耦合到触摸屏146。举例来说,该触摸屏146和触摸屏控制器142可以使用多种触摸感测技术中的任何一种来检测与之进行的接触和移动或是暂停,其中感测技术包括但不局限于电容性、电阻性、红外和表面声波技术。一个或多个其他输入控制器144可以耦合到其他输入/控制设备148,例如一个或多个按钮、摇杆开关、拇指旋轮、红外端口、USB端口、和/或指示笔之类的指点设备。一个或多个按钮(未显示)可以包括用于控制扬声器128和/或麦克风130音量的向上/向下按钮。
存储器接口102可以与存储器150相耦合。该存储器150可以包括高速随机存取存储器和/或非易失性存储器(在下文中会进一步提到),例如一个或多个磁盘存储设备,一个或多个光学存储设备,和/或闪存存储器(例如NAND,NOR)。存储器150可以存储操作***152,例如Android、IOS或是Windows Phone之类的操作***。该操作***152可以包括用于处理基本***服务以及执行依赖于硬件的任务的指令。存储器150还可以存储应用154。这些应用在操作时,会从存储器150加载到处理器104上,并在已经由处理器104运行的操作***之上运行,并利用操作***以及底层硬件提供的接口实现各种用户期望的功能,如即时通信、网页浏览、图片管理等。应用可以是独立于操作***提供的,也可以是操作***自带的。
根据一种实现方式,本发明所指的移动设备100可以是具有上述构造的手机、平板、可穿戴智能设备等。如前文所述,在移动设备出厂之前,需要大批量的移动设备来完成自动化测试,为了解决测试用移动设备资源紧张的问题,本发明提供了一种适于执行上述自动化测试的移动设备100,可以通过在移动设备100中布置相应的基于自动化测试的更改设备信息的装置300来实现上述功能,同时,在移动设备100的存储器150(如,非易失性存储器)中,存储设备信息列表,该列表中包含多组设备信息。
图2示出了根据本发明一个实施例的基于自动化测试的更改设备信息的方法200的流程图。如图2所示,方法200始于步骤S210,确定是否接收到移动设备的***启动广播消息。根据本发明的一个实施例,当移动设备开机时,***会发送***启动广播消息,以布置Android操作***的手机为例,一旦手机开机,***就会发送如下广播消息:
android.intent.action.BOOT_COMPLETED
随后在步骤S220中,当接收到这个广播后,就认为手机完成启动。此时,根据本次自动化测试脚本的执行时间设置设备信息更改周期。例如,利用Monkey测试对正在开发的应用程序或应用程序内某个模块进行压力测试,所需的测试时间长度是不同的,开发或测试人员可以根据本次自动化测试脚本的执行时间(即,需测试内容的工作量)来估计设备信息更改周期。根据一种实施例,也可以设置设备信息更改周期为默认12小时,即不管测试内容是什么,都是每隔12小时进行一次设备信息更新。本发明并不限制设备信息更改周期的长度,只要保证在预定时间内可以完成自动化测试的测试任务。
随后在步骤S230中,在设置好设备信息更改周期后,即通过执行自动化测试脚本来对移动设备进行自动化测试。根据本发明的实施例,可以根据预定文本规则编写测试步骤并生成测试脚本,测试脚本中包含了本次自动化测试的测试命令。测试内容或测试任务,例如可以是,向移动设备的***发送随机的用户事件流,如按键输入、触摸屏输入、手势输入、Sensor事件等,实现对待测试的应用程序或模块的压力测试。本发明对测试内容不作限定,任何自动化测试均可以与本发明的实施例相结合,以实现在自动化测试的过程中更改设备信息的功能。
根据本发明的实施例,在步骤S230执行自动化测试时,还包括步骤(图2中未示出):读取自动化测试的日志信息并记录测试结果。
根据一种实施例,在自动化测试开始之前,为测试日志设置保存路径。在自动化测试开始的初始时刻,开启日志监听进程监听测试日志,当日志监听进程在测试日志中监听到测试对象出错的信息时,将记录测试对象出错信息的测试日志存储至设定好的保存路径中。例如,日志监听进程监听日志中是否有如下错误信息:kernel层发生异常(KE:kernelexception)、native层发生异常(NE:native exception)、java层异常(JE:javaexception)等,若日志中包含这些异常,则标注此次测试为fail并记录错误类型,否则标注为pass。最后,连同该移动设备的设备信息一一对应写入到预定文本并拷出到计算设备中进行保存,以便开发人员汇总分析测试情况。
可选地,还可以通过录屏视频来记录测试情况。在自动化测试开始的初始时刻,开启录屏进程,录屏进程适于每隔第一间隔时间对被测移动设备的屏幕进行录像。
随后在步骤S240中,每隔设备信息更改周期从设备信息列表中顺序读取一组设备信息。可选地,一组设备信息包括如下内容:移动设备的国际移动设备标识IMEI、WIFI MAC地址和蓝牙MAC地址,其中,IMEI、WIFI MAC地址和蓝牙MAC地址均能够唯一地标识移动设备。
随后在步骤S250中,检测所读取的该组设备信息是否有效,若该组设备信息有效则将移动设备的设备信息更改为该组设备信息。
根据本发明的实施例,检测设备信息是否有效的步骤可以分为:分别判断IMEI、WIFI MAC地址和蓝牙MAC地址是否有效、以及判断IMEI、WIFI MAC地址和蓝牙MAC地址是否唯一。具体的执行流程如下:
a.判断国际移动设备标识IMEI是否是15位十进制数字。IMEI由15位数字组成,其中,前6位(TAC)是型号核准号码,代表移动设备类型;接着2位(FAC)是最后装配号,代表产地;后6位(SNR)是串号,代表生产顺序号;最后1位(SP)是检验码。
故,若判断出IMEI是15位十进制数字,则用国际移动设备标识的前14位数字(即TAC+FAC+SNR)计算出校验码,将算得的校验码与最后一位校验位(SP)进行对比,若一致则确定国际移动设备标识有效。
IMEI校验码的计算方法为:
(1)、将偶数位数字分别乘以2得到两位数,分别计算每个两位数个位数和十位数之和;
(2)、将奇数位数字相加,再加上(1)算得的值;
(3)、如果得出的数个位是0则校验码为0,否则校验码为10减去个位数。
如,IMEI前14位为:35 89 01 80 69 72 41
将偶数位乘以2得到:5*2=10,9*2=18,1*2=02,0*2=00,9*2=18,2*2=04,1*2=02,然后,计算奇数位数字之和和偶数位个位十位之和,得到:3+(1+0)+8+(1+8)+0+(0+2)+8+(0+0)+6+(1+8)+7+(0+4)+4+(0+2)=63,即可得出校验码为:10-3=7。
WIFI MAC地址和蓝牙MAC地址均是由16进制的数字组成的长度为48比特(即,6字节)的数字串,故,在判断WIFI MAC地址和蓝牙MAC地址是否有效时,只需:
b.判断WIFI MAC地址是否为12位十六进制数字,若是则WIFI MAC地址有效。
c.判断蓝牙MAC地址是否为12位十六进制数字,若是则蓝牙MAC地址有效。
根据本发明的实施方式,判断设备信息有效的步骤还包括:
d.判断所读取的设备信息是否唯一,若是则该组设备信息有效。
应当注意的是,上述判断设备信息是否有效的步骤a、b、c、d执行的顺序是可以变换的,本发明对此并不限制。
若经上述步骤判断出该组设备信息有效,则将该移动设备的设备信息更改为该组设备信息,即,将该组设备信息写入移动设备的非易失性随机访问存储器(NVRAM)。
随后在步骤S260中,重启该移动设备,重启后刚刚写入的设备信息就会生效,依次重复上述步骤S210、步骤S220、步骤S230、步骤S240、步骤S250,每执行一次,即可按照设备信息列表中的顺序更改移动设备的设备信息,那么该移动设备就会被作为一台新的移动设备进行本次的自动化测试。
根据上述流程描述,本方案通过设置更改设备信息周期,在每执行一次自动化测试后,自动更改移动设备的设备信息,再开始执行新一轮自动化测试,能够解决自动化测试中移动设备资源紧张的问题,并且减少人工操作,能够提高自动化测试的效率。
图3示出了根据本发明一个实施例的基于自动化测试的更改设备信息的装置300的示意图。如图3所示,该装置300包括:检测单元310、设置单元320、测试单元330和信息读取单元340。
检测单元310适于确定是否接收到移动设备的***启动广播消息。根据本发明的实施例,若待测试的移动设备100为布置了Android操作***的手机,一旦手机开机,***就会发送如下广播消息:
android.intent.action.BOOT_COMPLETED
当检测单元310监听到这个广播后,就认为手机完成启动。
设置单元320适于在接收到上述广播消息时,根据自动化测试脚本的执行时间设置设备信息更改周期。例如,利用Monkey测试对正在开发的应用程序或应用程序内某个模块进行压力测试,所需的测试时间长度是不同的,开发或测试人员可以根据需测试内容的工作量来估计设备信息更改周期的长度。根据一种实施例,也可以设置设备信息更改周期为默认12小时,即不管测试内容是什么,都是每隔12小时进行一次设备信息更新。本发明并不限制设备信息更改周期的长度,只要保证在周期内可以完成自动化测试的测试任务。
测试单元330适于通过执行自动化测试脚本对移动设备进行自动化测试。根据本发明的实施例,可以根据预定文本规则编写测试步骤并生成测试脚本,测试脚本中包含了本次自动化测试的测试命令。测试内容或测试任务,例如可以是,向移动设备的***发送随机的用户事件流,如按键输入、触摸屏输入、手势输入、Sensor事件等,实现对待测试的应用程序或模块的压力测试。本发明对测试内容不作限定,任何自动化测试均可以与本发明的实施例相结合,以实现在自动化测试的过程中更改设备信息的功能。
根据一种实施例,测试单元330还适于读取自动化测试的日志信息、并记录测试结果。测试单元330适于监听日志中是否有如下错误信息:kernel层发生异常(KE:kernelexception)、native层发生异常(NE:native exception)、java层异常(JE:javaexception)等,若日志中包含这些异常,则标注此次测试为fail并记录错误类型,否则标注为pass。最后,连同该移动设备100的设备信息一一对应写入到预定文本并拷出到计算设备中进行保存,以便开发人员汇总分析测试情况。
可选地,测试单元330还适于通过录屏视频来记录测试情况。在自动化测试开始的初始时刻,开启录屏进程,录屏进程适于每隔第一间隔时间对被测移动设备100的屏幕进行录像。
信息读取单元340适于每隔所述设备信息更改周期从设备信息列表中顺序读取一组设备信息,并交由与之耦接的检测单元310。可选地,一组设备信息包括:移动设备的国际移动设备标识、WIFI MAC地址和蓝牙MAC地址。
检测单元310还适于检测所读取的该组设备信息是否有效。
其中,移动设备的国际移动设备标识IMEI由15位数字组成,具体地,前6位(TAC)是型号核准号码,代表移动设备类型;接着2位(FAC)是最后装配号,代表产地;后6位(SNR)是串号,代表生产顺序号;最后1位(SP)是检验码。而WIFI MAC地址和蓝牙MAC地址均是由16进制的数字组成的长度为48比特(即,6字节)的数字串。故,检测单元310还包括判断子单元312和计算子单元314。
判断子单元312适于判断国际移动设备标识是否是15位十进制数字。计算子单元314适于在判断时15位十进制数字时,用国际移动设备标识的前14位数字计算出校验码。判断子单元312还适于将算得的校验码与最后一位校验位进行对比,若一致则判定国际移动设备标识有效。
进一步地,判断子单元312还适于判断WIFI MAC地址是否为12位十六进制数字,若是则判定WIFI MAC地址有效。同样,判断子单元312还适于判断蓝牙MAC地址是否为12位十六进制数字,若是则判定蓝牙MAC地址有效。并且,判断子单元312还适于判断所读取的设备信息是否唯一,若是则判定所述设备信息有效。
设置单元320还适于在检测单元310检测到该组设备信息有效时,将该移动设备的设备信息更改为该组设备信息,可选地,设置单元320还适于将判断有效的该组设备信息写入移动设备的非易失性随机访问存储器。
而后,设置单元320重启移动设备100,重启后刚刚写入的设备信息就会生效。
重启后,检测单元310适于继续确定是否接收到移动设备100的***启动广播消息。
同样地,设置单元320适于在接收到上述广播消息时,根据本次自动化测试脚本的执行时间设置设备信息更改周期;同时,测试单元330适于执行自动化测试;信息读取单元340适于每隔设备信息更改周期从设备信息列表中顺序读取一组设备信息,并交由检测单元310对该组设备的有效性进行检测;设置单元320还适于在检测单元310检测到该组设备信息有效时,将该移动设备100的设备信息更改为该组设备信息,即,将该组设备信息写入移动设备的非易失性随机访问存储器,继续重启移动设备100以进行下一次自动化测试。
如此循环重复,直至将设备信息列表中的设备信息全部更换完成,或是,直至开发人员终止测试。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明还一并公开了:
A6、如A5所述的方法,其中检测所读取的设备信息是否有效的步骤还包括检测该组设备信息中蓝牙MAC地址是否有效的步骤:判断蓝牙MAC地址是否为12位十六进制数字,若是则蓝牙MAC地址有效。
A7、如A6所述的方法,其中检测所读取的设备信息是否有效的步骤还包括步骤:判断所读取的该组设备信息是否唯一,若是则所述设备信息有效。
A8、如A1-7中任一项所述的方法,其中,若该组设备信息有效则将该移动设备的设备信息更改为该组设备信息的步骤还包括:将判断有效的该组设备信息写入移动设备的非易失性随机访问存储器。
B13、如B12所述的装置,其中,判断子单元还适于判断所述WIFI MAC地址是否为12位十六进制数字,若是则判定WIFI MAC地址有效。
B14、如B13所述的装置,其中,判断子单元还适于判断所述蓝牙MAC地址是否为12位十六进制数字,若是则判定蓝牙MAC地址有效。
B15、如B14所述的装置,其中,判断子单元还适于判断所读取的设备信息是否唯一,若是则判定该组设备信息有效。
B16、如B9-15中任一项所述的装置,其中,设置单元还适于将判断有效的该组设备信息写入移动设备的非易失性随机访问存储器。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,实施例中的一些在此被描述成可以由计算机***的处理器或者由执行功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。