1.本技术涉及终端技术领域,尤其涉及一种设备测试方法和电子设备。
背景技术:2.终端设备在出厂前,通常需要对终端设备的测试样机进行模糊测试(fuzz testing),又称为安全性测试。
3.目前,对测试样机的模糊测试的方式可以为:测试设备将海量的测试目标编辑为多个测试用例,并选择待测试的测试样机集合。测试设备判断是否存在未执行的测试用例,如果是,则遍历测试样机集合中是否存在空闲的测试样机。如果存在,则将一个测试用例分配该测试样机。进而,测试设备对分配有测试用例的测试样机进行测试。同时,测试设备记录测试样机基于测试用例执行对应的测试功能时的测试日志。在任一个测试用例测试完毕后,解析该测试用例对应的测试日志,并输出测试结果,以便测试人员感知到测试结果。
4.通常情况下,在测试的过程中,要么测试设备输出任一个测试用例对应的测试结果的时长较长;或者,将所有测试用例测试完毕后,调度完所有测试用例的总时间损耗较大。
技术实现要素:5.本技术提供一种设备测试方法和电子设备,可以使得输出测试用例对应的测试结果的时长较短,且还可以兼顾节省调度完所有测试用例的总时间损耗。
6.第一方面,本技术提供的一种设备测试方法,包括:测试设备获取测试用例集合。其中,测试用例集合中包括n个测试用例,n为大于1的整数,任一个测试用例中包括的测试目标的数量小于第一阈值,且大于或等于第二阈值。测试设备按照n个测试用例中测试目标的数量由大到小的顺序,测试多个测试样机。
7.本技术提供的设备测试方法,由于测试用例包括测试目标的数量小于第一阈值,则输出测试用例对应的测试结果的时长较短。另外,又由于测试用例包括测试目标的数量大于或等于第二阈值。这样,在总的测试目标的数量一定的情况下,可以减少测试用例集合中的测试用例的数量。进而,还可以兼顾节省调度完所有测试用例的总时间损耗。
8.在一种可能的实施方式中,测试设备获取测试用例集合,包括:测试设备获取测试目标集合。测试设备按照预设的m个数量维度,将测试目标集合编辑为m个测试用例组,得到测试用例集合。其中,同一个测试用例组中的测试用例对应的数量维度相同,任意两组测试用例组之间的测试用例对应的数量维度不同,m为大于1的整数。
9.这样,由于任意两组测试用例组之间的测试用例对应的数量维度不同,当测试进度越往后时,多个测试样机分配到的测试用例中的测试目标的数量越小。如此,可以使得测试用例能够更均匀地分配到各个测试样机,提高了多个测试样机之间的负载均衡。
10.进一步地,测试设备按照预设的m个数量维度,将测试目标集合编辑为m个测试用例组,包括:测试设备从m个数量维度中,提取第n大的数量维度,其中,n的初始值为1。测试
设备判断l1/(l2+b)是否大于第n大的数量维度,l1为剩余的测试目标的数量,l2为测试样机的数量,b为调节因子,且b为整数。如果是,则测试设备编辑n1个第n大的数量维度对应的测试用例。其中,n1=[l1
‑
k(l2+b)]/k,k为第n大的数量维度。测试设备对n的值加1,并返回执行从m个数量维度中提取第n大的数据维度的步骤,直到m个数量维度被提取完毕。如果否,则测试设备对n的值加1,并返回执行从m个数量维度中提取第n大的数据维度的步骤,直到m个数量维度被提取完毕。
[0011]
可见,在编辑测试用例时,参考了测试用例的多个数量维度、以及测试样机的数量。这样,能够更合理的分配各个数量维度的测试用例的数量,可以优化输出测试用例对应的测试结果的时长较短、与兼顾使得调度测试用例的时间损耗较小之间的平衡关系。
[0012]
更进一步地,m个数量维度之间呈等比数列。
[0013]
这样,可以使得数量维度的变化幅度大于预设的幅值,且均匀变化;可以进一步地优化输出测试用例对应的测试结果的时长较短、与兼顾使得调度测试用例的时间损耗较小之间的平衡关系。
[0014]
在一种可能的实施方式中,测试设备按照预设置的m个数量维度,将测试目标集合编辑为m个测试用例组,包括:测试设备对满足的n1、n2...n
m
随机选择一组取值,将测试目标集合编辑为m个测试用例组,其中,k1、k2...k
m
为不同的数量维度,n1为包括k1个测试目标的测试用例的数量,n2为包括k2个测试目标的测试用例的数量,n
m
为包括k
m
个测试目标的测试用例的数量,q1为测试目标集合中的测试目标的数量。
[0015]
在一种可能的实施方式中,测试设备获取测试用例集合,包括:测试设备获取测试目标集合。测试设备基于测试目标集合编辑测试用例,以获取测试用例集合,其中,测试用例的数量满足n=q1/q
2。
其中,q1为测试目标集合中测试目标的数量,q2为任一测试用例的测试目标的数量,n为测试用例的数量。
[0016]
这样,可以更便捷的获取测试用例集合,节省计算资源。
[0017]
在一种可能的实施方式中,测试设备按照n个测试用例中测试目标数量由大到小的顺序,测试多个测试样机,包括:测试设备判断是否存在剩余的测试用例。若存在剩余的测试用例,则测试设备遍历是否存在空闲的测试样机。若存在空闲的测试样机,则测试设备给空闲的测试样机分配剩余的测试用例中,包含测试目标的数量最大的测试用例。测试设备基于已分配的测试用例测试测试样机,直到不存在剩余的测试用例。
[0018]
这样,可以实现测试用例的动态分配。
[0019]
在一种可能的实施方式中,第一阈值满足:。第二阈值满足:。
[0020]
在一种可能的实施方式中,在测试设备获取测试用例集合之前,本技术提供的方法还包括:测试设备显示第一界面。测试设备在第一界面接收输入的多个待测试样机以及初始测试用例。测试设备获取测试用例集合,包括:测试设备分解初始测试用例,得到测试目标集合。测试设备编辑测试目标集合中的测试目标,获取测试用例集合。
[0021]
第二方面,本技术还提供一种设备测试装置,包括:处理单元,用于获取测试用例集合。其中,测试用例集合中包括n个测试用例,n为大于1的整数,任一个测试用例中包括的测试目标的数量小于第一阈值,且大于或等于第二
阈值。
[0022]
处理单元,还用于按照n个测试用例中测试目标的数量由大到小的顺序,测试多个测试样机。
[0023]
第三方面,本技术实施例提供一种电子设备,包括处理器和存储器,存储器用于存储代码指令;处理器用于运行代码指令,使得电子设备以执行如第一方面或第一方面的任一种实现方式中描述的设备测试方法。
[0024]
第四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有指令,当指令被执行时,使得计算机执行如第一方面或第一方面的任一种实现方式中描述的设备测试方法。
[0025]
第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面或第一方面的任一种实现方式中描述的设备测试方法。
[0026]
应当理解的是,本技术的第二方面至第五方面与本技术的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
[0027]
图1为本技术实施例提供的电子设备的硬件系统架构示意图;图2为本技术实施例提供的电子设备的软件系统架构示意图;图3为本技术实施例提供的云服务器分别与测试样机、测试终端的交互示意图;图4为本技术实施例提供的设备测试方法的流程图;图5为本技术实施例提供的测试终端显示的第一界面的界面示意图;图6为图4中的s403的一种实施方式的流程图;图7为图4中的s404的一种实施方式的流程图;图8为本技术实施例提供的测试终端显示的第二界面的界面示意图;图9为本技术实施例提供的各个测试目标的测试时长的分布示意图;图10为本技术实施例提供的各测试样机在测试过程中的空闲时长分布示意图;图11为本技术实施例提供的各测试样机在测试完毕后的负载分布示意图;图12为本技术实施例提供的设备测试装置的功能模块框图;图13为本技术实施例提供的一种电子设备的硬件结构示意图;图14为本技术实施例提供的一种芯片的结构示意图。
具体实施方式
[0028]
为了便于清楚描述本技术实施例的技术方案,在本技术的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一值和第二值仅仅是为了区分不同的值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0029]
需要说明的是,本技术中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其
他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0030]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a
‑
b,a
‑
c,b
‑
c,或a
‑
b
‑
c,其中a,b,c可以是单个,也可以是多个。
[0031]
终端设备在出厂前需要对终端设备的测试样机进行模糊测试(fuzz testing),又称为安全性测试。
[0032]
目前,对测试样机的模糊测试的方式可以为:假设包括50000个测试目标,测试设备将50000个测试目标编辑为5个测试用例,每个测试用例包括10000个测试目标;或者,测试设备将50000个测试目标编辑为50000个测试用例,每个测试用例包括1个测试目标。测试设备判断未执行的测试用例的数量是否大于0,如果是,则遍历已选择的测试样机集合中是否存在空闲的测试样机,如果存在,则将一个测试用例分配该测试样机。进而,测试设备基于该测试用例中的测试目标,向对应的测试样机的待测试接口[如系统的四大组件(包括活动组件、服务组件、内容组件、提供广播接收器)和/或应用程序包(android application package,apk)端口等]发送异常数据。测试样机的待测试接口接收到异常数据后,对异常数据处理。测试样机基于测试目标测试完毕后,测试设备生成子结果。通常地,测试设备基于任一个测试目标对测试样机测试生成子结果,可能需要平均花费10s的时长。测试设备针对每个子结果均生成测试日志,在任一个测试用例测试完毕后,测试设备解析该测试用例对应的测试日志,并输出该测试用例对应的测试结果。通常地,测试设备基于任一个测试用例,遍历空闲的测试样机和解析测试用例对应的测试日志(即调度测试用例),也需要耗时10s。
[0033]
可以理解地,当测试设备将50000个测试目标编辑为5个测试用例时,这样,测试设备可能需要花费5.78天将测试用例中10000个测试目标测试完毕后,才能输出测试用例对应的测试结果。可见,输出测试用例对应的测试结果的时长较长。当测试设备将50000个测试目标编辑为50000个测试用例时,调度完所有测试用例的总耗时为5.78天。可见,调度所有测试用例的总耗时也较长。如此,导致测试完所有测试用例的总时长也较长(总时长=5.78+5.78=11.56天)。
[0034]
有鉴于此,本技术提供了一种设备测试方法,测试设备可以获取测试用例集合。其中,测试用例集合中包括n个测试用例,n为大于1的整数。任一个测试用例中包括的测试目标的数量小于第一阈值,且大于或等于第二阈值。测试设备按照n个测试用例中测试目标数量由大到小的顺序,测试多个测试样机。
[0035]
由于测试用例包括测试目标的数量小于第一阈值,则执行完测试用例中的所有测试目标的时长较短,进而输出测试用例对应的测试结果的时长也较短。另外,又由于测试用例包括测试目标的数量大于或等于第二阈值。这样,在总的测试目标的数量一定的情况下,可以减少测试用例集合中的测试用例的数量。如此,还可以兼顾使得调度测试用例的时间损耗较小。进而,减少了测试完所有测试用例的总时长。
[0036]
可以理解的是,上述的测试设备可以是终端设备和/或服务器。其中,服务器可以是,但不限于,网络服务器、数据库服务器、云服务器等等。终端设备可以是但不限于办公电脑。
[0037]
另外,上述测试样机可以是手机(mobile phone)、智能电视、穿戴式设备、平板电脑(pad)、带无线收发功能的电脑、虚拟真实(virtual reality,vr)电子设备、增强真实(augmented reality,ar)电子设备、工业控制(industrial control)中的无线终端等等。本技术的实施例对测试样机所采用的具体技术和具体设备形态不做限定。
[0038]
示例性的,图1为本技术实施例提供的一种测试样机的结构示意图。
[0039]
测试样机可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,收话器170b,麦克风170c,传感器模块180,按键190,指示器192,摄像头193,以及显示屏194等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
[0040]
可以理解的是,本技术实施例示意的结构并不构成对测试样机的具体限定。在本技术另一些实施例中,测试样机可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0041]
处理器110可以包括一个或多个处理单元。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中还可以设置存储器,用于存储指令和数据。
[0042]
电子设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的android系统为例,示例性说明电子设备的软件结构。图2为本技术实施例适用的电子设备的一种软件结构框图。分层架构将电子设备的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将android系统分为五层,分别为应用程序层(applications)、应用程序框架层(application framework)、安卓运行时(android runtime)和系统库、硬件抽象层(hardware abstract layer,hal)以及内核层(kernel)。
[0043]
应用程序层可以包括一系列应用程序包,应用程序层通过调用应用程序框架层所提供的应用程序接口(application programming interface,api)运行应用程序。如图3所示,应用程序包可以包括新浪,58同城,uc浏览器,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信等应用程序。可以理解地,上述的每个应用程序的端口均可以用于接收数据。
[0044]
应用程序框架层为应用程序层的应用程序提供api和编程框架。应用程序框架层包括一些预先定义的函数。如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
[0045]
安卓运行时包括核心库和虚拟机。安卓运行时负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文
件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。系统库可以包括多个功能模块。
[0046]
硬件抽象层,可以包含多个库模块,库模块如可以为摄像头库模块、马达库模块等。android系统可以为设备硬件加载相应的库模块,进而实现应用程序框架层访问设备硬件的目的。
[0047]
内核层是硬件和软件之间的层。内核层用于驱动硬件,使得硬件工作。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,马达驱动等,本技术实施例对此不做限制。可以理解地,显示驱动,摄像头驱动,音频驱动,传感器驱动,马达驱动等均可以视为一个驱动节点。上述的每个驱动节点均包括可以用于接收数据的接口。
[0048]
本技术专利的术语解释:模糊测试(fuzz testing):是一种介于手工渗透测试与自动化测试之间的安全性测试类型。模糊测试的方式可以为:基于测试用例通过随机或是半随机的方式生成异常数据;将异常数据发送给被测试的应用程序端口或驱动节点端口;检测被测应用程序或驱动节点的状态;根据被测应用程序或驱动节点的状态判断是否存在潜在的安全漏洞。
[0049]
测试用例(test case):是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。需要说明的是,一个测试用例可以包括一个或多个测试目标,执行完测试用例中的所有测试目标,可以输出测试用例对应的测试结果。
[0050]
下面,以测试设备包括测试终端100和云服务器200为例,对本技术实施例提供的设备测试方法进行说明,该示例并不构成对本技术实施例的限定。下述实施例可以相互结合,对于相同或相似的概念或过程不再赘述。
[0051]
可以理解地,当目标型号的测试样机在出厂前,为了提高测试样机的质量和使用安全性,需要对测试样机进行模糊测试。其中,测试样机的目标型号可以为honor
‑
3c或者honor
‑
50等,在此不作限定。通常地,对目标型号的测试样机的测试包括上万个不同的测试目标。若在一台测试样机上测试所有的测试目标,则总的测试时长很长。为了缩短测试时长,可以准备多台测试样机。这样,可以将上万个不同的测试目标分配到多台测试样机进行测试,如此,可以缩短总的测试时长。可以理解地,生产测试样机具有一定的成本,这样,测试样机的数量通常小于设定的阈值(通常不超过20个)。
[0052]
如图3所示,测试人员在对测试样机300进行模糊测试之前,可以将测试终端100与云服务器200通信连接,云服务器200分别与多个测试样机300通信连接。其中,测试样机300的数量小于20个。另外,多个测试样机300具有不同的序列号(以便区分测试样机300的身份),且多个测试样机300可以插接于网络设备(如多个电脑的主机、或者xbox)的usb接口,以便能够与云服务器200通信连接。
[0053]
图4为本技术实施例提供的设备测试方法的一种实施例的流程示意图。如图4所示,本技术实施例提供的设备测试方法可以包括:s401:测试终端100显示第一界面101。其中,第一界面101包括测试控件102。
[0054]
示例性地,如图5所示,测试终端100可以为办公电脑。测试人员可以在第一界面101中输入测试信息。其中,测试信息包括:任务名称“fuzz testing”、设备类型“andriod phone”、多个设备序列号以及初始测试用例“com.hinonor.scaner”。终端设备100接收用户
在第一界面101输入的任务名称“fuzz testing”、设备类型“andriod phone”、多个设备序列号以及初始测试用例“com.hinonor.scaner”。
[0055]
另外,多个设备序列号即已选择的多个测试样机300的标识,初始测试用例“com.hinonor.scaner”包括测试目标的数量q1可以为10000个、30000、50000个或者80000个等,在此不作限定。
[0056]
s402:测试终端100可以响应于测试人员对测试控件102的触发操作,向云服务器200发送测试指令。其中,测试指令携带有上述的测试信息。
[0057]
可以理解地,上述的s401
‑
s402可以忽略。
[0058]
s403:云服务器200响应于测试指令,获取测试用例集合。其中,测试用例集合中包括n个测试用例,n为大于1的整数。另外,任一个测试用例中包括测试目标的数量小于第一阈值,且大于或等于第二阈值。示例性地,第一阈值可以满足:;第二阈值可以满足:。
[0059]
示例性地,上述的s403的具体实现方式可以为:云服务器200接收来自测试终端100的测试指令,并从测试指令解析出初始测试用例。进而,云服务器200分解出初始测试用例中的q1个测试目标。如此,云服务器200将q1个测试目标编辑为n个测试用例。其中,任一个测试用例中包括测试目标的数量小于3000,且大于1。可以理解地,数值3000即上述的第一阈值,数值1即上述的第二阈值。当然地,第一阈值还可以是其他的取值,例如,还可以是4000,2500等,在此不作限定;第二阈值也可以是其他的取值,例如,20、10或者5等,在此不作限定。
[0060]
示例性地,上述的测试用例可以为:<secfuzz>toolname:iofuzzname:/dev/acm,/dev/dam,...,/dev/ionpara:null<secfuzz>可以理解地,/dev/acm,/dev/dam,...,/dev/ion分别为测试目标,name:/dev/acm,/dev/dam,...,/dev/ion用于指示依次测试内核层中的驱动节点/dev/acm,内核层中的驱动节点/dev/dam,...,内核层中的驱动节点/dev/ion。
[0061]
另外,示例性地,上述的测试用例还可以为:<secfuzz>toolname:itentfuzzpackage:com.sina.new,com.wuba,...,com.ucmpara:null<secfuzz>可以理解地,com.sina.new,com.wuba,...,com.ucm分别为测试目标,com.sina.new,com.wuba,...,com.ucm用于指示依次测试应用层中的新浪新闻,58同城,...,uc浏览器。
[0062]
下面,具体介绍云服务器200如何将q1个测试目标编辑为n个测试用例。
[0063]
示例性地,云服务器200可以预设置测试用例的m个数量维度,m为大于1的整数。例如,m个数量维度可以包括数量维度a、数量维度b、数量维度c以及数量维度d(可见,m=4)。其中,数量维度a对应的测试目标的数量数量维度b对应的测试目标的数量数量维度c对应的测试目标的数量数量维度d对应的测试目标的数量。例如,数量维度a的测试用例可以包括a1个测试目标,数量维度b的测试用例可以包括a2个测试目标,数量维度c的测试用例可以包括a3个测试目标,以及数量维度d的测试用例可以包括a4个测试目标。其中,a1a2a3a4,且a1、a2、a3以及a4可以呈等比数列(即m个数量维度之间呈等比数列)。如此,可以使得数量维度a的测试用例、数量维度b的测试用例、数量维度c的测试用例以及数量维度d之间的测试目标的数量的变化幅度大于预设的幅值,且变化幅度均匀。如此,云服务器200可以基于测试目标的数量、测试用例的多个数量维度、以及测试样机300的数量,编辑多个数量维度分别对应的测试用例。
[0064]
可见,云服务器200可以将测试目标集合中的测试目标编辑为m个测试用例组,同一个所述测试用例组中的任一测试用例对应的数量维度相同,任意两组所述测试用例组之间的测试用例对应的数量维度不同。
[0065]
例如,当a1=1000,a2=100,a3=10,a4=1时,如图6所示,云服务器200将q1个测试目标编辑为n个测试用例的方法包括:s601:云服务器200判断l1/(l2+b)是否大于1000(即剩余的最大数量维度k),如果是,则执行s602;如果否,则直接执行s603。
[0066]
其中,l1为剩余的测试目标的数量(即尚未被编辑入测试用例的测试目标的数量,可以理解地,l1的取值随着测试用例的编辑而发生变化,在初始时l1=q1),l2为测试样机300的数量,b为调节因子,且b为整数。可以理解地,b可以用于调节编辑的测试用例的总数量。当b的取值越大时,测试用例的总数量越大;反之,当b的取值越小时,测试用例的总数量越小,具体可以根据测试人员的需求而定。
[0067]
s602:云服务器200编辑n1个包括1000个测试目标的测试用例,其中,n1=[l1
‑
1000(l2+b)]/1000。
[0068]
s603:云服务器200判断l1/(l2+b)是否大于100(即剩余的最大数量维度k),如果是,则执行s604;如果否,则直接执行s605。
[0069]
s604:云服务器200编辑n2个包括100个测试目标的测试用例,其中,n2=[l1
‑
100(l2+b)]/100。
[0070]
s605:云服务器200判断l1/(l2+b)是否大于10,如果是,则执行s606;如果否,则直接执行s607。
[0071]
s606:云服务器200编辑n3个包括10个测试目标的测试用例(即剩余的最大数量维度k),其中,n3=[l1
‑
10(l2+b)]/10。
[0072]
s607:云服务器200判断l1/(l2+b)是否大于1(即剩余的最大数量维度k),如果是,则执行s608;如果否,则结束。
[0073]
s608:云服务器200编辑n4个包括1个测试目标的测试用例,其中,n4=l。
[0074]
可见,通过上述的s601
‑
s608可以将q1个测试目标编辑为:n1个包括1000个测试目标的测试用例(即数量维度a的测试用例)、n2个包括100个测试目标的测试用例(即数量维度b的测试用例)、n3个包括10个测试目标的测试用例(即数量维度c的测试用例)、n4个包括
1个测试目标的测试用例(即数量维度d的测试用例)。其中,n1,n2,n3以及n4满足如下条件:1000n1+100n2+10n3+10n4=q1。可以理解地,当n1=[l
‑
1000(l2+a)]/1000、n2=[l
‑
100(l2+a)]/100、n3=[l
‑
10(l2+a)]/10以及n4=[l
‑
10(l2+a)]/10时,可以基于测试样机300的数量更合理的分配数量维度a的测试用例的数量、数量维度b的测试用例的数量、数量维度c的测试用例的数量、以及数量维度d的测试用例的数量。
[0075]
可以理解地,当q1、l2、b的取值不同时,云服务器200编辑的数量维度a的测试用例的数量、数量维度b的测试用例的数量、数量维度c的测试用例的数量、以及数量维度d的测试用例的数量也不同。示例性地,表1示出了当b=1,不同测试目标的数量q1、测试样机300的数量l2的取值分别对应的数量维度a的测试用例的数量、数量维度b的测试用例的数量、数量维度c的测试用例的数量、以及数量维度d的测试用例的数量。
测试目标的数量测试样机的数量包括1000个测试目标的测试用例的数量包括100个测试目标的测试用例的数量包括10个测试目标的测试用例的数量包括1个测试目标的测试用例的数量测试用例的总数量300400255075300800219011180080071901613000802181901928000805918921045850000841818190293500002029189189210617
[0076]
表1可以理解地,云服务器200在编辑测试用例完毕后,即可获取到包括n个测试用例的测试用例集合。
[0077]
s404:云服务器200按照n个测试用例中测试目标数量由大到小的顺序,测试多个测试样机300。
[0078]
示例性地,如图7所示,上述的s404的具体实现过程可以为:s701:云服务器200判断剩余的测试用例的数量是否大于0,如果是,则执行s702,如果否,则结束进程。
[0079]
其中,剩余的测试用例是指:尚未被用于执行测试任务的测试用例。
[0080]
s702:云服务器200遍历是否存在空闲的测试样机300,如果是,则给空闲的测试样机300分配一个包含测试目标的数量最大的测试用例。
[0081]
s703:云服务器200基于已分配的测试用例测试测试样机300,并返回执行s701。
[0082]
在上述的s702中,空闲的测试样机300是指:未执行测试任务的测试样机300。可以理解地,当云服务器200基于测试用例测试完毕某一个测试样机300后,云服务器200可以遍历到该测试样机300处于空闲状态(遍历处于空闲状态的测试样机300具有一定的时间损耗)。如此,云服务器200给该处于空闲状态的测试样机300分配一个包含测试目标的数量最大的测试用例。这样,实现了测试用例的实时动态分配。另外,由于云服务器200在分配测试用例时,均是从剩余的测试用例中选择包含测试目标的数量最大的测试用例。这样一来,可以使得云服务器200按照测试目标的数量由大到小的顺序分配测试用例。
[0083]
下面,以测试用例中的测试目标包括com.sina.new,com.wuba,...,com.ucm为例,介绍上述的s703的具体实现过程。
[0084]
云服务器200向测试样机300的新浪新闻的应用端口发送异常数据(如边界值、字符串、内存地址、超大数、或者负数等)。进而,测试样机300的新浪新闻处理异常数据,并向云服务器200反馈子结果。其中,子结果用于指示处理成功或处理失败。云服务器200在sqlite数据库中记录子结果(即生成测试日志)。云服务器200向测试样机300的58同城的应用端口发送异常数据。进而,测试样机300的58同城处理异常数据,并向云服务器200反馈子结果。其中,子结果用于指示处理成功或处理失败。云服务器200在sqlite数据库中再次记录子结果(即生成测试日志),...,云服务器200向测试样机300的uc浏览器的应用端口发送异常数据,进而,测试样机300的uc浏览器处理异常数据,并向云服务器200反馈子结果。其中,子结果用于指示处理成功或处理失败。云服务器200在sqlite数据库中再次记录子结果(即生成测试日志)。如此,可以完成对测试用例中的所有测试目标的测试。
[0085]
进而,云服务器200可以从sqlite数据库解析出每个测试目标对应的子结果,并生成测试用例对应的测试结果。需要说明的是,云服务器200生成测试用例对应的测试结果也具有一定的时间损耗。可以理解地,云服务器200基于测试用例遍历空闲的测试样机300的时间损耗和云服务器200生成测试用例对应的测试结果的时间损耗之和,可以认为是服务器200调度一个测试用例的时间损耗。本技术实施例中,调度任一个测试用例的时间损耗为10s。
[0086]
可以理解地,对于一个测试用例而言,云服务器200基于一个测试用例输出测试结果的时长,等于云服务器200各个测试目标的测试时长之和。当测试用例包括的测试目标的数量越多时,输出测试结果的时长越长;反之,当测试用例包括的测试目标的数量越少时,输出测试结果的时长越短。
[0087]
s405:云服务器200将每个测试用例对应的测试结果,发送到测试终端100的第二界面202显示。
[0088]
可以理解地,在图7对应的实施例的基础上,当云服务器200基于任一个测试用例对测试样机300测试完毕时,向测试终端100发送一个测试用例对应的测试结果。如此,可以使得测试人员能够及时在第二界面202,查阅到测试用例对应的测试结果。
[0089]
示例性地,如图8所示,当云服务器200已经基于两个测试用例测试完毕测试样机300时,第二界面202中包括两条测试结果。其中一条测试结果为:用例名称“测试用例1”、状态“完成”、设备类型“安卓手机”、设备型号“honor
‑
50”、通过率“100%”、执行时长“1000min”、通过状态“1”。另一条测试结果为:用例名称“测试用例1”、状态“完成”、设备类型“安卓手机”、设备型号“honor
‑
50”、通过率“0%”、错误原因“未知原因”、执行时长“998min”、通过状态“0”。
[0090]
综上所述,由于每个测试用例包括测试目标的数量小于第一阈值,则执行完测试用例中的所有测试目标的时长较短,进而在后续输出测试用例对应的测试结果的时长也较短。另外,又由于每个测试用例包括测试目标的数量大于或等于第二阈值。这样,在总的测试目标的数量一定的情况下,可以减少测试用例集合中的测试用例的数量。如此,还可以兼顾使得调度测试用例的时间损耗较小。进而,减少了测试完所有测试用例的总时长。再者,由于是按照n个测试用例中测试目标数量由大到小的顺序,测试多个测试样机300的,当测试进度越往后时,多个测试样机300分配到的测试用例中的测试目标的数量越小。如此,可以使得测试用例能够更均匀地分配到各个测试样机300,提高了多个测试样机300之间的负
载均衡度。
[0091]
进一步地,又由于数量维度a的测试用例、数量维度b的测试用例、数量维度c的测试用例以及数量维度d之间的测试目标的数量的变化幅度大于预设的幅值,且变化幅度均匀,可以优化输出测试用例对应的测试结果的时长较短、与兼顾使得调度测试用例的时间损耗较小之间的平衡关系。
[0092]
另外,在图7对应的实施例的基础上,上述的s702和s703的具体实现过程可以为:假设多个测试样机300包括测试样机1、测试样机2、测试样机3以及测试样机4,且第一阈值等于3000,第二阈值等于1。云服务器200获取的测试用例集合中具有41个包含1000个测试目标的测试用例a、具有81个包含100个测试目标的测试用例b、具有81个包含10个测试目标的测试用例c以及具有90个包含1个测试目标的测试用例d。可以理解地,测试用例集合总共包括41+81+81+90=293个测试用例,总的测试目标的数量为。
[0093]
在初始时,测试样机1、测试样机2、测试样机3以及测试样机4均处于空闲状态。由于测试用例a中的测试目标的数量最大,如此,云服务器200为测试样机1、测试样机2、测试样机3以及测试样机4分别分配一个测试用例a。当测试样机2首先基于已分配的测试用例a测试完毕时,云服务器200遍历到处于空闲状态的测试样机2。进而,云服务器200继续向测试样机2分配一个测试用例a,如此循环,直到41个测试用例a分配完毕。
[0094]
若云服务器200又遍历到测试样机3处于空闲状态时,由于测试用例a已分配完毕,则测试用例b中的测试目标的数量最大,云服务器200为测试样机3分配一个测试用例b,如此循环,直到81个测试用例b分配完毕。
[0095]
若云服务器200又遍历到测试样机1处于空闲状态时,由于测试用例b已分配完毕,则测试用例c中的测试目标的数量最大,云服务器200为测试样机1分配一个测试用例c,如此循环,直到81个测试用例c分配完毕。
[0096]
若云服务器200又遍历到测试样机4处于空闲状态时,由于测试用例c已分配完毕,则测试用例d中的测试目标的数量最大,云服务器200为测试样机1分配一个测试用例d,如此循环,直到81个测试用例d分配完毕。
[0097]
需要说明的是,各个测试目标的测试时长的分布可以如图9所示。在图9中,各个测试目标的平均测试时长为10s。
[0098]
可见,在上述的实施例中,测试用例集合中的293个测试用例分别包括的测试目标的数量均小于第一阈值3000。如此,可以使得云服务器200基于任一测试用例对测试样机300测试的时长较短,进而云服务器200将任一测试用例对应的测试结果发送到测试终端100的时长也较短。这样一来,测试人员可以及时查阅到任一测试用例对应的测试结果。
[0099]
再者,在上述的实施例中,测试用例集合中包括具有41个包含1000个测试目标的测试用例a、具有81个包含100个测试目标的测试用例b、具有81个包含10个测试目标的测试用例c。可见,41个测试用例a、81个测试用例b以及81个测试用例c中的测试目标的数量均大于第一阈值1。如此,在总的测试目标的数量=50000不变的情况下,可以使得测试用例集合包含的测试用例的数量较小。这样一来,可以使得云服务器200还可以兼顾使得调度测试用例的时间损耗较小。
[0100]
另外,如图10中的(a)所示,在现有技术中,若将50000个测试目标编辑为5个包括
10000个测试目标的测试用例,当已经执行完毕4个测试用例,而最后1个测试用例分配给测试样机1时,如果每个测试目标的平均测试时长为10s,则测试样机1需要花费100000s测试完毕最后1个测试用例中的1000个测试目标,效率低。然而,由于5个测试用例已分配完毕,则测试样机2、测试样机3以及测试样机4处于空闲状态的时长为100000s。如图11中的(a)所示,当5个测试用例测试完毕后,测试样机1的测试时长为3300min、测试样机2的测试时长为1600min、测试样机3的测试时长为1660min以及测试样机2的测试时长为1700min。可见,测试样机1、测试样机2、测试样机3以及测试样机4之间的负载均衡度低,设备资源利用率低,造成的效率也低。
[0101]
如此,在本技术实施例中,如图10中的(b)所示,由于云服务器200最后分配的是81个包括1个测试目标的测试用例d。81个测试用例d可以更均匀的分配给4个测试样机300。当已经执行完毕80个测试用例d,而最后1个测试用例d分配给测试样机1时,如果每个测试目标的平均测试时长为10s,则测试样机1仅需花费10s测试完毕最后1个测试用例。这样一来,测试样机2、测试样机3以及测试样机4处于空闲状态的时长仅为10s。如图11中的(b)所示,当测试用例集合中的293个测试用例全部测试完毕时,测试样机1的测试时长为2084min、测试样机2的测试时长为2083min、测试样机1的测试时长为2083min、测试样机2的测试时长为2082min。可见,测试样机1、测试样机2、测试样机3以及测试样机4之间的负载均衡度高。如此,提高了设备资源利用率,进而提高了测试效率。
[0102]
另外,在本技术实施例中,上述的s402不仅可以为上述的图6对应的实施方式,还可以替换为如下两种方式:第一种方式:假设测试目标的总数量为q1,且云服务器200预设置任一个测试用例包括测试目标的数量为q2,第一阈值=3000,第二阈值=1。如此,云服务器200可以基于算式n=q1/q2,确定任一测试用例的测试目标的数量。
[0103]
例如,q1=50000,q2=1000时,可以将50000个测试目标编辑为50个测试用例。可以理解地,各测试用例中包括测试目标的数量q2相同,均为1000个。具体地,50000个测试目标可以分别被标记有标识,用于指示测试目标的执行顺序,例如,50000个测试目标被标记的标识可以分别为1
‑
50000阿拉伯数字。云服务器200将分别标记有1
‑
1000的测试目标编辑为1个测试用例,将分别标记有1001
‑
2000的测试目标编辑为1个测试用例,......,将分别标记有49001
‑
50000的测试目标编辑为1个测试用例。如此,云服务器200可以将50000个测试目标编辑为50个测试用例。当然地,测试用例包括测试目标的数量q2还可以取其他的数值,只要大于第一阈值且小于第二阈值均可,在此不作限定。
[0104]
可以理解地,由于测试用例中的测试目标的数量1000小于第二阈值,则在后续输出测试用例对应的测试结果的时长也较短。另外,又由于测试用例中的测试目标的数量1000大于第二阈值。这样,在总的测试目标的数量一定的情况下,可以减少测试用例集合中的测试用例的数量。如此,还可以兼顾使得调度测试用例的时间损耗较小。
[0105]
第二种方式:在图6对应的实施方式中,n1,n2,n3以及n4可以是云服务器200基于预设置测试用例的多个数量维度、和测试样机300的数量确定的。与图6对应的实施方式不同的是,第二种方式中的n1,n2以及n3的取值,是从满足2000n1+1000n2+500n3=q1的多组取值中随机选择的。
[0106]
示例性地,仍假设测试目标的总数量为q1,第一阈值=3000,第二阈值=1,云服务器
200可以预设置测试用例的m个数量维度,其中,m为大于1的整数。例如,测试用例的m个数量维度包括数量维度a、数量维度b以及数量维度c(可见,m=3)。其中,数量维度a的测试用例包括2000个测试目标,数量维度b的测试用例包括1000个测试目标,数量维度c的测试用例包括500个测试目标。云服务器200可以编辑n1个数量维度a的测试用例,编辑n2个数量维度b的测试用例,以及编辑n3个数量维度c的测试用例。其中,n1,n2以及n3满足如下条件:2000n1+1000n2+500n3=q1。可见,云服务器200可以将测试目标集合中的测试目标编辑为m个测试用例组,同一个所述测试用例组中的任一测试用例对应的数量维度相同,任意两组所述测试用例组之间的测试用例对应的数量维度不同。
[0107]
可以理解地,n1,n2以及n3具有多组取值。云服务器200可以从多组取值中随机选择一组取值,编辑测试用例。例如,当q1=50000时,云服务器200随机选择的一组取值为n1=10,n2=20,n3=20。这样,测试用例集合中的测试用例的数量n=n1+n2+n3=50;再例如,云服务器200随机选择的一组取值为n1=15,n2=10,n3=20。这样,测试用例集合中的测试用例的数量n=n1+n2+n3=45。当然地,n1,n2以及n3还可以是其他取值,只要满足2000n1+1000n2+500n3=50000均可。可以理解地,当包括数量维度a的测试用例的数量越多时,测试用例集合中的测试用例的数量n越少;反之,当包括数量维度a的测试用例的数量越少时,测试用例集合中的测试用例的数量n越高。
[0108]
可见,上述的第二种方式的方案可以概括为:从满足 中随机选择一组测试用例的数量的取值,将测试目标集合中的测试目标编辑为m个测试用例组。其中,k1、k2...k
m
,为不同的数量维度,n1为包括k1个测试目标的测试用例的数量,n2为包括k1个测试目标的测试用例的数量,n
m
为包括k
m
个测试目标的测试用例的数量,q1为所述测试目标集合中的测试目标的数量。
[0109]
由于数量维度a的测试用例、数量维度b的测试用例、数量维度c的测试用例中的测试目标的数量均小于第二阈值,则在后续输出测试用例对应的测试结果的时长也较短。另外,又由于数量维度a的测试用例、数量维度b的测试用例、数量维度c的测试用例中的测试目标的数量大于第二阈值。这样,在总的测试目标的数量一定的情况下,可以减少测试用例集合中的测试用例的数量。如此,还可以兼顾使得调度测试用例的时间损耗较小。再者,数量维度a的测试用例的测试目标的数量数量维度b的测试用例的测试目标的数量数量维度c的测试用例的测试目标的数量,当测试进度越往后时,多个测试样机300分配到的测试用例中的测试目标的数量越小。如此,可以使得测试用例能够更均匀地分配到各个测试样机300,提高了多个测试样机300之间的负载均衡。
[0110]
需要说明的是,在上述的第二种方式中,数量维度a的测试用例、数量维度b的测试用例以及数量维度c的测试用例中的数量还可以是其他的取值。例如,数量维度a的测试用例包括1000个测试目标,数量维度b的测试用例包括100个测试目标,数量维度c的测试用例包括10个测试目标等,在此不作限定。
[0111]
另外,在上述的实施例中是以测试设备包括测试终端100和云服务器200为例说明的。本技术实施例中,测试设备还可以为独立的测试终端100或者独立的云服务器200。当测试设备为独立的测试终端100时,测试终端100可以执行上述的s401
‑
s405。当测试设备为独立的云服务器200时,云服务器200可以执行上述的s403
‑
s405。
[0112]
请参阅图12,本技术还提供一种设备测试装置1200,包括:
处理单元1201,用于获取测试用例集合。其中,测试用例集合中包括n个测试用例,n为大于1的整数,任一个测试用例中包括的测试目标的数量小于第一阈值,且大于或等于第二阈值。
[0113]
处理单元1201,还用于按照n个测试用例中测试目标的数量由大到小的顺序,测试多个测试样机。
[0114]
在一种可能的实施方式中,处理单元1201,具体用于按照预设的m个数量维度,将测试目标集合编辑为m个测试用例组,得到测试用例集合。
[0115]
其中,同一个测试用例组中的测试用例对应的数量维度相同,任意两组测试用例组之间的测试用例对应的数量维度不同,m为大于1的整数。
[0116]
进一步地,处理单元1201,具体用于从m个数量维度中,提取第n大的数量维度,其中,n的初始值为1。判断l1/(l2+b)是否大于第n大的数量维度,l1为剩余的测试目标的数量,l2为测试样机的数量,b为调节因子,且b为整数。如果是,则编辑n1个第n大的数量维度对应的测试用例,其中,n1=[l1
‑
k(l2+b)]/k,k为第n大的数量维度。对n的值加1,并返回执行从m个数量维度中提取第n大的数据维度的步骤,直到m个数量维度被提取完毕。如果否,则对n的值加1,并返回执行从m个数量维度中提取第n大的数据维度的步骤,直到m个数量维度被提取完毕。
[0117]
进一步地,m个数量维度之间呈等比数列。
[0118]
在一种可能的实施方式中,处理单元1201,具体用于对满足 的n1、n2...n
m
随机选择一组取值,将测试目标集合编辑为m个测试用例组。
[0119]
其中,k1、k2...k
m
为不同的数量维度,n1为包括k1个测试目标的测试用例的数量,n2为包括k2个测试目标的测试用例的数量,n
m
为包括k
m
个测试目标的测试用例的数量,q1为测试目标集合中的测试目标的数量。
[0120]
在一种可能的实施方式中,处理单元1201,具体用于获取测试目标集合;基于测试目标集合编辑测试用例,以获取测试用例集合。
[0121]
其中,测试用例的数量满足n=q1/q2,其中,q1为测试目标集合中测试目标的数量,q2为任一测试用例的测试目标的数量,n为测试用例的数量。
[0122]
在一种可能的实施方式中,处理单元1201,具体用于判断是否存在剩余的测试用例;若存在剩余的测试用例,则遍历是否存在空闲的测试样机;若存在空闲的测试样机,则给空闲的测试样机分配剩余的测试用例中,包含测试目标的数量最大的测试用例;基于已分配的测试用例测试测试样机,直到不存在剩余的测试用例。
[0123]
在一种可能的实施方式中,第一阈值满足:;第二阈值满足:。
[0124]
另外,本技术提供的设备测试装置1200还可以包括:显示单元1202,用于测试设备显示第一界面;显示单元1202,还用于在第一界面接收输入的多个待测试样机以及初始测试用例。
[0125]
处理单元1201,具体用于分解初始测试用例,得到测试目标集合。编辑测试目标集
合中的测试目标,获取测试用例集合。
[0126]
示例性的,图13为本技术实施例提供的一种电子设备的硬件结构示意图,如图13所示,该电子设备包括处理器1301,通信线路1304以及至少一个通信接口(图13中示例性的以通信接口1303为例进行说明)。
[0127]
处理器1301可以是一个通用中央处理器(central processing unit,cpu),微处理器,特定应用集成电路(application
‑
specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。
[0128]
通信线路1304可包括在上述组件之间传送信息的电路。
[0129]
通信接口1303,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线局域网(wireless local area networks,wlan)等。
[0130]
可能的,该电子设备还可以包括存储器1302。
[0131]
存储器1302可以是只读存储器(read
‑
only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read
‑
only memory,eeprom)、只读光盘(compact disc read
‑
only memory,cd
‑
rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1304与处理器相连接。存储器也可以和处理器集成在一起。
[0132]
其中,存储器1302用于存储执行本技术方案的计算机执行指令,并由处理器1301来控制执行。处理器1301用于执行存储器1302中存储的计算机执行指令,从而实现本技术实施例所提供的设备测试方法。
[0133]
可能的,本技术实施例中的计算机执行指令也可以称之为应用程序代码,本技术实施例对此不作具体限定。
[0134]
在具体实现中,作为一种实施例,处理器1301可以包括一个或多个cpu,例如图13中的cpu0和cpu1。
[0135]
在具体实现中,作为一种实施例,电子设备可以包括多个处理器,例如图13中的处理器1301和处理器1305。这些处理器中的每一个可以是一个单核(single
‑
cpu)处理器,也可以是一个多核(multi
‑
cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0136]
示例性的,图14为本技术实施例提供的一种芯片的结构示意图。芯片140包括一个或两个以上(包括两个)处理器1410和通信接口1430。
[0137]
在一些实施方式中,存储器1440存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
[0138]
本技术实施例中,存储器1440可以包括只读存储器和随机存取存储器,并向处理器1410提供指令和数据。存储器1440的一部分还可以包括非易失性随机存取存储器(non
‑
volatile random access memory,nvram)。
[0139]
本技术实施例中,存储器1440、通信接口1430以及存储器1440通过总线系统1420
耦合在一起。其中,总线系统1420除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。为了便于描述,在图14中将各种总线都标为总线系统1420。
[0140]
上述本技术实施例描述的方法可以应用于处理器1410中,或者由处理器1410实现。处理器1410可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1410中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1410可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field
‑
programmable gate array,fpga)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器1410可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。
[0141]
结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electrically erasable programmable read only memory,eeprom)等本领域成熟的存储介质中。该存储介质位于存储器1440,处理器1410读取存储器1440中的信息,结合其硬件完成上述方法的步骤。
[0142]
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
[0143]
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本技术实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,dvd))、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
[0144]
本技术实施例还提供了一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
[0145]
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compact disc read
‑
only memory,cd
‑
rom)、ram、rom、eeprom或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,dsl或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,dsl或诸如红
外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(cd),激光盘,光盘,数字通用光盘(digital versatile disc,dvd),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
[0146]
上述的组合也应包括在计算机可读介质的范围内。以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。