具体实施方式
下面将参照附图更详细地描述本申请的优选实施方式。虽然附图中显示了本申请的优选实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在对本申请的技术方案进行描述之前,先对本申请涉及的本领域的部分技术术语进行说明。
远程字典服务(Remote Dictionary Server,简称redis),是一种将数据存储在内存中的数据库类型,可以对存储的数据设置过期时间,存取数据速度快,使用方便。
安卓桥调试(Android Debug Bridge,简称adb)命令,是谷歌公司针对安卓开发者推出的AndroidSDK中集成的可以操作手机的一系列命令。
软件开发工具包(Software Development Kit,简称SDK),是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
在针对安卓(Android)系统的应用(APP)的软件测试过程中,可以执行兼容性测试操作,就是将APP安装到至少部分机型上(如热门机型手机上),以测试APP在各种机型上的表现,如是否有异常情况。
但是,机构各测试部门分配的机型有限,可能缺少部分热门机型。这就导致在进行兼容性测试的时候需要相互借用热门机型。此外,各测试部门的多个测试组做兼容测试可以发生在同一个时间段(如APP发布前),所以多个测试组需要排队获取所需的热门机型,非常的不方便。
此外,相关技术中的远程控制测试设备(如安装了安卓系统的智能手机,以下简称为安卓手机)的方案,可以通过将测试设备(如安卓手机)的应用界面显示到个人电脑(pc)上,然后通过远程控制pc显示屏的方式,实时操作安卓手机。然而,这种方式只是把pc显示屏映射到了终端设备,操作的是pc,pc的显示屏比较大,如果终端设备显示屏较小,会导致用户操作起来很不方便,而且需要提前在pc打开映射连接手机的显示应用。
申请人发现相关技术存在如下技术问题:
一方面,没有注册发现过程,只能在终端设备和pc上分别安装远控客户端,并将操作申请发送给操作者账号,操作者接受后才可以控制被控者pc显示屏。
另一方面,因为没有实时列表,所以无法将各个pc上连接并注册的所有测试设备共享给多用户使用。
另一方面,终端设备无法直接映射测试设备的显示界面,只能映射pc显示屏的显示界面,由于终端设备的显示屏大小限制,使得用户操作起来非常不便。
为了至少部分地解决上述问题,本申请实施例提供了一种可以远程控制测试设备的系统,将可以共享的空闲设备插入到自己电脑上,通过注册后,就可以让需求方远程控制此空闲设备。此外,本申请技术方案突破了网络限制,在多种网络下都可以将连接到电脑的测试设备注册到共享网络,可以使得多个需求方进行兼容性测试。需要说明的是,兼容性测试仅为示例性应用场景,还可以应用到其它测试场景中,如需要排队使用测试设备的多种场景。
图1是本申请实施例示出的一种适用于图像传输方法、装置、系统和电子设备的系统架构的示意图。需要注意的是,图1所示仅为可以应用本申请实施例的系统架构的示例,以帮助本领域技术人员理解本申请的技术内容,但并不意味着本申请实施例不可以用于其他设备、系统、环境或场景。
参见图1,根据该实施例的系统架构100可以包括终端设备101、服务器102、主机103、测试设备104和网络105。网络105用以在终端设备101、服务器102、主机103和测试设备104之间提供通信链路的介质。网络105可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101通过网络105与其他终端设备、服务器102和主机103进行交互,以接收或发送数据等,如发送操作命令、接收应用界面等。终端设备101可以安装有各种应用,例如,网页浏览器应用、数据库类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等应用等。
终端设备101包括但不限于台式电脑、平板电脑、膝上型便携计算机等等可以支持浏览网页、上网等功能的电子设备。主机103包括但不限于台式电脑、平板电脑、膝上型便携计算机等可以连接测试设备并且与测试设备进行交互的电子设备。测试设备104包括但不限于智能手机、平板电脑、膝上型便携计算机等可以进行人机交互的电子设备。
服务器102可以接收操作命令、测试设备数据、应用界面等,还可以发送操作命令给主机103。例如,服务器102可以为后台管理服务器、服务器集群等。
需要说明的是,终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和云端。
本申请的技术方案可以基于上述系统架构实现:在服务器端注册的分布式测试设备的设备信息,可以被实时展示在客户端的展示界面中,以便用户在终端设备的展示界面中挑选目标测试设备。用户在客户端上输入的用户操作,可以实时反馈到远程的目标测试设备上,以在目标测试设备上执行与用户操作对应的操作命令。目标测试设备执行操作命令的过程,应用界面可以快速反馈至终端设备,以便用户在客户端查看输入用户操作之后的应用界面,便于用户进行应用测试。
图2是本申请实施例示出的一种图像传输方法、装置、系统和电子设备的应用场景的示意图。
参见图2,用户可以通过终端设备的客户端向服务器端请求测试设备。当连接了某个处于空闲状态的测试设备后,该测试设备的应用界面可以展示在客户端的展示界面中。应用界面中可以包括多个组件,用户可以操作这些组件进行应用测试。本实施例中,用户可以通过操作客户端展示界面中展示的应用界面,实现远程操作测试设备,以进行应用测试。
需要说明的是,终端设备包括但不限于:智能手机、笔记本电脑、平板电脑和台式机等具有显示幕,并且能够显示互联网(web)界面的设备。
为了便于更好地理解本申请的技术方案,以下分别以设备列表和实时监控功能、测试设备远程控制功能和图像传输功能为逻辑链进行示例性说明。
以下对图像传输过程进行示例性说明。
图3是本申请实施例示出的另一种图像传输方法的数据流示意图。
参见图3,通过第一服务器端的图像服务、第二服务器端的抓取并上传测试设备截图的功能,以及客户端的展示界面和展示图像等功能,来实现测试设备的显示屏的截图上传和应用界面下载功能,能够实现实时显示远程测试设备的画面的功能。
图4是本申请实施例示出的另一种图像传输方法的流程示意图。
参见图4,由客户端执行的图像传输方法可以包括操作S410~操作S430。
在操作S410,向第一服务器端发送图像下载请求,图像下载请求包括资源路径,资源路径包括第一服务器端IP地址、存储路径和测试设备唯一识别码。
在操作S420,获得来自第一服务器端的与资源路径对应的应用界面,应用界面是由目标测试设备通过截图得到的图像,目标测试设备是与测试设备唯一识别码对应的设备。
在操作S430,渲染应用界面,并且在客户端的展示界面展示经渲染的应用界面,以便基于针对经渲染的应用界面的操作进行应用测试。
在某些实施例中,上述方法在客户端的展示界面展示经渲染的应用界面之后,还可以包括如下操作。
首先,获得针对客户端的展示界面中展示的应用界面的第二操作。
然后,响应于第二操作,生成针对目标测试设备的操作命令,并且将操作命令传输至第二服务器端,以控制目标测试设备进行应用测试,并且得到更新应用界面,目标测试设备是与测试设备唯一识别码对应的设备。
接着,在客户端的展示界面中展示更新应用界面,其中,更新应用界面是目标测试设备响应于操作命令更新的界面。
在某些实施例中,为了提升测试设备的应用界面在客户端的展示区域中的展示效果,上述方法在获得来自第一服务器端的与资源路径对应的应用界面之前或者之后还可以包括如下操作,获得目标测试设备的测试设备显示屏的尺寸信息。
相应地,渲染应用界面,包括:基于特定缩放比例对展示界面进行渲染,其中,特定缩放比例包括第一缩放比例和第二缩放比例,第一缩放比例是基于测试设备显示屏的高度和展示界面的高度确定的针对应用界面的缩放比例,第二缩放比例是基于测试设备显示屏的宽度和展示界面的宽度确定的针对应用界面的缩放比例。
例如,特定缩放比例是第一缩放比例和第二缩放比例中的大的缩放比例。这样可以使得客户端的展示区域的宽边或者高边被占满,以最大化展示应用界面。
在某些实施例中,上述方法还可以包括如下操作,存储特定缩放比例。相应地,生成针对目标测试设备的操作命令可以包括:基于特定缩放比例将针对客户端的展示界面的第二操作转换为针对目标测试设备的应用界面的操作命令。
在某些实施例中,向第一服务器端发送图像下载请求可以包括如下操作,响应于针对客户端的展示界面的第一操作,向第一服务器端发送图像下载请求,第一操作的对象包括:展示界面展示的测试设备信息集合中的目标测试设备的设备信息,设备信息包括测试设备唯一识别码。
在一个具体实施例中,可以通过如下方式实现设备截图的实时下载和渲染。
a)根据提前获取的图片服务器IP地址和路径,与移动设备唯一识别码拼接,并且将提前约定好的图片类型后缀.jpg拼接到最后,生成资源路径。<示例:https:
//111.222.333.444/img/l2k3jkj23_02309839.jpg>。
b)每间隔0.1秒请求图片服务器一次,访问生成的资源路径获取到安卓移动设备截图。
c)根据web端设备的宽高和安卓移动设备的宽高,计算出最合适的显示尺寸,并将下载的移动设备截图渲染到web端中(防止一个边超出web端显示屏)。
i.计算安卓移动设备的宽缩放至web端设备的宽度的比例,和安卓移动设备的高缩放至web端设备的高度的比例,两个比例比较后,取缩放比例较大的一边的比例。
ii.将截图的宽和高按此比例进行缩放(这样就可以保证一边是占满的,另一边又不超出web端显示屏)。
iii.并将此缩放比例保存备用(转换adb命令时使用)。
图5是本申请实施例示出的另一种图像传输方法的流程示意图。
参见图5,由第一服务器端执行的图像传输方法可以包括操作S510~操作S530。
在操作S510,获得来自客户端的图像下载请求,图像下载请求包括资源路径,资源路径包括存储路径和测试设备唯一识别码。
在操作S520,响应于图像下载请求,基于存储路径和测试设备唯一识别码确定与测试设备唯一识别码对应的应用界面,应用界面是由目标测试设备通过截图得到的图像,目标测试设备是与测试设备唯一识别码对应的设备。
在操作S530,将应用界面发送给客户端,以便客户端展示经渲染的应用界面,并且基于针对经渲染的应用界面的操作进行应用测试。
在某些实施例中,上述方法还可以包括如下操作。
首先,接收来自第二服务器端上传的目标测试设备的应用界面,目标测试设备是与测试设备唯一识别码对应的测试设备。
然后,将目标测试设备的应用界面存储在指定存储空间中,应用界面的图像标识包括进行图像截取的测试设备的测试设备唯一识别码,以便客户端从指定存储空间下载与目标测试设备唯一识别码对应的测试设备的应用界面。
在某些实施例中,将目标测试设备的应用界面存储在指定存储空间中可以包括:将应用界面存储在具有独立IP地址的文件服务器中。
在一个具体实施例中,关于图像服务。需要说明的是,承载在有独立IP地址的服务器,可以采用提供文件服务的服务器。
例如,使用nginx中间件,在nginx目录下提供可供存储图像的目录。
A)图像上传:
a)使用scp命令将图像上传至约定目录。
b)图像名称约定为<移动设备唯一识别码>.jpg。
B)图像下载:
c)访问此图像服务器的IP地址+目录路径+<移动设备唯一识别码>.jpg,即可获取图像。
图6是本申请实施例示出的另一种图像传输方法的流程示意图。
参见图6,由第二服务器端执行的图像传输方法可以包括操作S610~操作S630。
在操作S610,控制与第二服务器端相连的至少一个测试设备各自进行截图,得到至少一个测试设备各自的应用界面。
在操作S620,控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端。
在操作S630,将至少一个测试设备各自上传的应用界面传输至第一服务器端,以便客户端从第一服务器端下载目标测试设备的应用界面,并且基于针对目标测试设备的应用界面的操作进行应用测试。
在某些实施例中,控制与第二服务器端相连的至少一个测试设备各自进行截图可以包括:响应于从第一服务器端下载到针对目标测试设备的应用界面的操作命令,控制与第二服务器端相连的至少一个测试设备各自按照预设频率进行指定个数次截图。
相应地,控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端可以包括:控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端的本地存储空间的指定文件中。
在某些实施例中,控制与第二服务器端相连的至少一个测试设备各自按照预设频率进行指定个数次截图可以包括:对于每个测试设备,控制测试设备按照预设频率进行指定个数次截图,并且将通过截图得到的应用界面保存在该测试设备中。
在某些实施例中,将至少一个测试设备各自上传的应用界面传输至第一服务器端可以包括如下操作。
首先,远程登陆第一服务器端。
然后,将至少一个测试设备各自上传的应用界面加密,并且将加密后的应用界面复制到第一服务器端的指定目录中。
在一个具体实施例中,可以通过如下方式实现:抓取并上传安卓设备截图的功能。
在下载adb命令成功之后(目的是为了防止没有用户操作的时候也在不停的上传截图,造成资源浪费),每下载adb命令成功后即执行10次截图上传,每次截图间隔0.1秒。
A)使用adb命令控制安卓移动设备截图并保存到安卓设备中。
a)adb-s<设备序列号>shell screencap-p<保存路径+文件名>。
B)使用adb命令将安卓设备中保存的截图上传到pc硬盘中。
a)adb-s<设备序列号>pull<图片路径+文件名><pc保存路径+文件名>。
C)使用scp命令将pc硬盘中保存的截图上传至图片服务器的指定目录中。
a)scp<pc图片路径+文件名><图片服务器登录用户名@IP:
资源目录>。
需要说明的是,图像传输方法可以应用于应用测试的场景中。如客户端可以显示目标测试设备在测试过程中的应用界面。以下对应用测试过程进行示例性说明。
图7是本申请实施例示出的一种应用测试方法的流程示意图。
参见图7,由客户端执行的应用测试方法,可以包括操作S710~操作S720。
在操作S710,响应于针对测试设备信息集合中的目标测试设备的设备信息的第一操作,在客户端的展示界面中展示目标测试设备的应用界面。
在本实施例中,客户端(如web端)可以提供了设备列表展示页面(包括多个测试设备的设备信息,如测试设备标识、空闲状态等),以便用户从设备列表展示页面中确定目标测试设备。这样使得客户端可以下载该目标测试设备的应用界面,以便在客户端的展示区域中展示目标测试设备的应用界面。其中,应用界面可以包括测试设备的显示屏显示的所有图像,如可以包括状态条(如剩余电量、信号强度等)。
图8是本申请实施例示出的一种第一操作的示意图。
参见图8,客户端的展示区域中展示了列表(如测试设备信息列表),该列表中包括多个测试设备的相关信息,如测试设备的标识:终端1、终端2;测试设备的终端型号:终端型号1、终端型号2;终端状态:占用状态、空闲状态;终端设备的显示屏尺寸信息:A1×B1、A2×B2等。需要说明的是,图8中仅展示出了两个测试设备的信息,还可以展示更多或更少测试设备的信息。例如,当前有100个测试设备在第一服务器端进行了注册,则列表中可以展示100个测试设备的信息。当然,列表中可以仅展示当前处于空闲状态的测试设备的信息。列表中也可以仅展示网络连接状态良好的测试设备的信息。此外,图8中可以仅展示各条目中的一部分,如仅展示终端标识和终端状态。
图8中用户点击了终端2的条目,则可以确定与终端2对应的测试设备是目标测试设备。需要说明的是,第一操作是点击操作作为示例性说明,第一操作还可以是长按操作、双击操作、滑动操作等能够进行人机交互的操作。在用户输入第一操作时,终端设备可以确定第一操作的坐标信息,以便确定第一操作的操作对象。
在操作S720,响应于针对客户端展示的应用界面的第二操作,生成针对目标测试设备的操作命令,并且将操作命令经由第一服务器端传输至第二服务器端,以控制与第二服务器端相连的目标测试设备进行应用测试。
在本实施例中,用户可以基于该应用界面进行应用测试,如点击应用界面中的某个组件,以跳转至于该组件对应的界面。其中,当用户输入第二操作之后,会将该第二操作转换为针对目标测试设备的操作命令,并且将该操作命令发送给第一服务器端,以便能够控制测试设备的第二服务器端下载该操作命令,控制目标测试设备进行应用测试。如用户在客户端点击应用界面中的某个组件,使得测试设备的应用跳转至于该组件对应的界面。通过如上方式实现对应用测试。
在某些实施例中,响应于第一操作,下载目标测试设备的应用界面,并且在客户端的展示界面中展示目标测试设备的应用界面可以包括如下操作。
首先,向第一服务器端发送测试设备数据请求。该测试设备数据请求中可以包括终端设备标识或者客户端标识等,以便第一服务器端返回测试设备数据。
然后,获得来自第一服务器端的测试设备数据,并且基于测试设备数据生成测试设备信息集合。例如,测试设备信息集合可以如图8所示。
接着,响应于针对测试设备信息集合中的目标测试设备的设备信息的第一操作,下载目标测试设备的应用界面,并且在客户端的展示界面中展示目标测试设备的应用界面。参见图8,用户点击了终端2的条目,则服务器端可以向客户端返回与终端2对应的应用界面,以便用户在客户端使用与终端2对应的测试设备进行应用测试。
在某些实施例中,为了避免多个用户同时使用同一个测试设备导致的命令冲突,可以在用户选取了某个测试设备之后,锁定该测试设备。
例如,测试设备数据包括:至少部分测试设备各自的锁定状态,锁定状态包括:锁止状态和解锁状态。
相应地,响应于针对测试设备信息集合中的目标测试设备的设备信息的第一操作可以包括如下操作。
如果至少部分测试设备中的第一测试设备的锁定状态是锁止状态,则禁止响应针对第一测试设备的设备信息的第一操作。
如果至少部分测试设备中的第二测试设备的锁定状态是解锁状态,则允许响应针对第二测试设备的设备信息的第一操作,以展示第二测试设备的应用界面。
例如,处于锁止状态的测试设备的设备信息处于灰色的禁止操作状态。处于解锁状态的测试设备的设备信息处于正常状态,可以响应用户输入的第一操作。
在某些实施例中,响应于第二操作,生成针对目标测试设备的操作命令可以包括如下操作,基于目标测试设备的第一属性与客户端的第二属性之间的差异,将针对客户端的第二操作转换为针对目标测试设备的操作,以便基于针对目标测试设备的操作生成针对目标测试设备的操作命令。其中,第一属性和第二属性可以用于表征操作对象。如在客户端和测试设备的显示屏上展示的同一操作对象时,该操作对象的属性变化。例如,第一属性和第二属性可以是位置属性、动作属性等。
例如,位置属性可以包括坐标值,同一操作对象在客户端的展示界面的坐标系下的坐标值,与该同一操作对象在测试设备的显示屏的坐标系下的坐标值不同。
例如,特定动作与特定操作之间建立了关联关系,则动作属性可以与特定操作对应的特定动作。如连续点头对应于选择功能的“是”的选取操作。如双击鼠标右键与关闭当前应用之间存在关联关系。
在某些实施例中,可以至少基于坐标转换将针对客户端的展示界面的第二操作转换为针对目标测试设备的应用界面的操作。例如,第二操作包括:点击操作、滑动操作、长按操作、虚拟键操作中至少一种,虚拟键操作针对的对象包括目标测试设备的实体键。
具体地,以下分别列举出了针对不同类型操作的转换方式。
对于点击操作,按照特定缩放比例对与点击操作对应的坐标值进行缩放,得到针对应用界面的点击操作的坐标值。
对于滑动操作,按照特定缩放比例对与滑动操作对应的起始点坐标的坐标值进行缩放,得到针对应用界面的滑动起始点坐标值,或者按照特定缩放比例对与滑动操作对应的终止点坐标的坐标值进行缩放,得到针对应用界面的滑动终止点坐标值。
对于长按操作,按照特定缩放比例对与长按操作对应的点击坐标的坐标值进行缩放,并且结合点击时长,得到针对应用界面的长按操作的坐标值和点击时长。
对于虚拟键操作,基于针对客户端的展示界面上展示的虚拟键的点击操作,得到针对测试设备的与虚拟键对应的按键的操作。
需要说明的是,本申请的技术方案可以适用于安装有多种不同操作系统的测试设备。操作系统包括但不限于:安卓操作系统、苹果操作系统(IOS)等。
在某些实施例中,以安装安卓操作系统的测试设备为例,操作命令可以符合安卓调试桥(adb)命令的规范。需要说明的是,IOS系统也有对应的调试命令规范,在此不做限定。
在一个具体实施例中,以安装安卓操作系统的测试设备为例,响应于针对客户端展示的应用界面的第二操作,生成针对目标测试设备的操作命令可以如下所示。
对于点击操作,获得针对客户端的展示界面的点击坐标,按照特定缩放比例对点击坐标的坐标值进行缩放,得到针对应用界面的坐标值,并且将针对应用界面的坐标值作为adb点击命令的参数,其中,特定缩放比例是基于客户端的展示界面和目标测试设备的测试设备显示屏的尺寸(如高度或者宽度等)来确定。
图9是本申请实施例示出的一种第二操作的示意图。
图9示出了台式机的显示器的展示界面,用户可以在显示器中查看目标测试设备的应用界面,并且在展示区域中对展示的应用界面进行操作。例如,用户可以使用鼠标点击“天天秒杀”组件,以跳转至“天天秒杀”的显示界面。其中,鼠标点击操作是第二操作的一种示例,第二操作还可以是双击操作、拖拽操作、长按操作等。在用户输入第二操作时,终端设备可以确定第二操作的坐标信息,以便确定第二操作的操作对象。例如,第二操作的坐标信息是坐标1,与坐标1对应的位置显示的是“天天秒杀”组件,则“天天秒杀”组件是第二操作的操作对象。
对于滑动操作,获得针对客户端的展示界面的滑动操作的起始点坐标和结束点坐标;按照特定缩放比例对起始点坐标的坐标值进行缩放,得到针对应用界面的滑动起始点坐标值,或者按照特定缩放比例对终止点坐标的坐标值进行缩放,得到针对应用界面的滑动终止点坐标值;将滑动起始点坐标值和滑动终止点坐标值作为adb滑动命令的参数。
图10是本申请实施例示出的另一种第二操作的示意图。
图10示出了智能手机的显示器的展示界面,用户可以在显示器中查看目标测试设备的应用界面,并且在展示区域中对展示的应用界面进行操作。例如,用户可以使用手指或者触控笔对展示界面输入用户操作。图10中示出了滑动操作,用户可以将手指从展示区域的坐标2位置滑动至坐标3位置处,以操作滑动组件。其中,用户在输入滑动操作时,至少可以产生起始点坐标和终止点坐标,可以基于起始点坐标和终止点坐标确定滑动操作的滑动距离,以确定与滑动操作对应的控制指令。
对于长按操作,获得针对客户端的展示界面的点击坐标和点击时长,按照特定缩放比例对点击坐标的坐标值进行缩放,得到针对应用界面的滑动起始点坐标值和滑动终止点坐标值,并且将针对应用界面的坐标值和点击时长作为adb滑动命令的参数。需要说明的是,长按操作与点击操作类似,只是多个了个时间参数,该时间参数表征点击时长。此外,也可以通过时间测试来判断当前操作是点击操作还是长按操作。如操作的接触时长小于预设时长阈值,则可以确定该操作是点击操作。如操作的接触时长大于或者等于预设时长阈值,则可以确定该操作是长按操作。
对于虚拟键操作,获得针对客户端的展示界面上展示的虚拟键的点击操作,将与虚拟键对应的操作参数作为adb虚拟操作命令的参数,与虚拟键对应的操作参数用于实现以下至少一种功能:关机、重启、长按电源键、锁屏、返回、到主页、打开菜单、截图、设置音量。
图11是本申请实施例示出的另一种第二操作的示意图。
参见图11,示出了台式机的显示器的展示区域。由于台式机的操作方式与智能手机的操作方式不同,智能手机可能具有台式机所没有的锁机按键、声音条件按键、主页(Home)按键等。为了实现可以针对这些按键的功能的测试,本实施例中可以通过设置悬浮键的方式来模拟这些按键,以实现针对这些按键的功能的测试。
图11中示出了四个悬浮按键,按照从上到下的顺序,第一悬浮按键可以是锁机按键,第二悬浮按键可以是上调按键,第三悬浮按键可以是下调按键,第四悬浮按键可以是Home按键。用户可以通过鼠标操作这几个悬浮按键,以实现所需的测试方法。
在某些实施例中,由于终端设备的显示屏、分辨率等可能和测试设备的显示屏、分辨率等不同,为了准确地将针对终端设备的操作转换为针对测试设备的操作,可以基于特定缩放比例对操作进行处理。例如,通过对客户端的输入操作的接触点的坐标值进行缩放操作,得到针对测试设备应用界面的输入操作的接触点的坐标值。
具体地,特定缩放比例包括:第一缩放比例和第二缩放比例,其中,第一缩放比例是根据测试设备显示屏的高度和展示界面的高度确定的比例,第二缩放比例是根据测试设备显示屏的宽度和展示界面的宽度确定的比例。
在某些实施例中,为了便于用户直观地看到与第二操作对应的操作效果,上述方法还可以包括如下操作:在将操作命令经由第一服务器端传输至第二服务器端之后,在客户端的展示界面中展示目标测试设备的更新应用界面,其中,更新应用界面是目标测试设备响应于操作命令更新的应用界面。例如,用户在客户端针对应用界面中的“天天秒杀”组件进行了点击操作,用户可以通过测试设备返回的应用界面,来确定该第二操作是否成功。
在某些实施例中,应用界面或者更新应用界面可以通过如下方式获得。
首先,向第一服务器端发送图像下载请求,图像下载请求包括资源路径,资源路径包括第一服务器端IP地址、存储路径和测试设备唯一识别码。其中,测试设备唯一识别码可以是由第二服务器端分配的,并且是全局唯一的标识码。
然后,获得来自第一服务器端的与资源路径对应的应用界面或者更新应用界面,应用界面或者更新应用界面是由目标测试设备通过截图得到的图像,目标测试设备是与测试设备唯一识别码对应的设备。例如,目标测试设备响应于来自第二服务器端的操作命令“点击坐标(x,y)”,如果坐标(x,y)位置处对应的“天天秒杀”组件,则可以跳转至“天天秒杀”的应用界面。
接着,渲染应用界面或者更新应用界面,并且在客户端的展示界面展示经渲染的应用界面或者更新应用界面,以便基于针对经渲染的应用界面或者更新应用界面的操作进行应用测试。
在某些实施例中,为了提升在客户端展示测试设备的应用界面的显示效果,可以对目标测试设备的应用界面进行缩放操作。
具体地,上述方法在获得来自第一服务器端的与资源路径对应的应用界面之前或者之后,还可以包括如下操作。
首先,获得目标测试设备的测试设备显示屏的尺寸信息。其中,尺寸信息可以是高度信息、宽度信息、分辨率、像素行数或者像素列数等能表征尺寸信息中的至少一种。具体地,可以从设备信息列表中获取测试设备显示屏的高度和/或宽度。
相应地,渲染应用界面可以包括:基于特定缩放比例对展示界面进行渲染,其中,特定缩放比例是基于测试设备显示屏的尺寸信息来确定的。
例如,特定缩放比例是第一缩放比例和第二缩放比例中的大的缩放比例,第一缩放比例是基于测试设备显示屏的高度和展示界面的高度确定的针对应用界面的缩放比例,第二缩放比例是基于测试设备显示屏的宽度和展示界面的宽度确定的针对应用界面的缩放比例。
本实施例中,用户可以在客户端借助多个已注册的测试设备进行应用测试,并且通过提升显示效果,来提升用户体验。
图12是本申请实施例示出的另一种应用测试方法的流程示意图。
参见图12,由第一服务器端执行的应用测试方法可以包括操作S1210~操作S1230。
在操作S1210,将与目标测试设备对应的应用界面发送给客户端,其中,目标测试设备是与第一操作针对的测试设备信息集合中的信息对应的测试设备。其中,应用界面、第一操作、目标测试设备和测试设备信息集合可以参考如上相关内容,在此不再详述。
在操作S1220,响应于来自客户端的针对目标设备的操作命令,将操作命令发送给第二服务器端,以便第二服务器端基于操作命令控制目标测试设备进行应用测试,得到并且发送更新应用界面给第一服务器端。其中,第二服务器端可以是主机,如可以连接至少一个测试设备的电子设备(如个人电脑)。例如,第二服务器端可以给测试设备发送控制命令以实现应用测试。
在操作S1230,响应于来自客户端的更新图像下载请求,将更新应用界面发送给客户端,以便客户端展示更新应用界面。
在本实施例中,更新应用界面可以存储在服务器中或者与服务器相连的文件服务器中。这样便于客户端下载所需的更新应用界面。其中,更新应用界面的命名可以包括测试设备唯一标识符,以便于确定所需的更新应用界面。
在某些实施例中,将与目标测试设备对应的应用界面发送给客户端可以包括如下操作。
首先,获得来自客户端的测试设备数据请求。该测试设备数据请求中可以包括客户端的地址信息,以便基于客户端的地址信息返回测试设备数据。
然后,响应于测试设备数据请求,将来自至少一个第二服务器端的测试设备数据发送给客户端,以便在客户端的展示界面中展示测试设备数据。
接着,响应于来自客户端的图像下载请求,将目标测试设备的应用界面发送给客户端,图像下载请求包括测试设备数据中的目标测试设备数据。
通过以上方式可以实现第一服务器端向客户端提供目标测试设备的应用界面。
其中,测试设备数据可以存储在测试设备数据集合中,测试设备数据集合中的测试设备唯一识别码与测试设备数据集合标识共同作为哈希值的键(key),测试设备信息作为哈希值的值(value),哈希值的键(key)的有效时长小于或者等于预设时长阈值。
在某些实施例中,可以通过异步上传和下载应用界面,能提升系统的稳定性。具体地,响应于来自客户端的图像下载请求,将目标测试设备的应用界面发送给客户端可以包括如下操作。
首先,获得来自客户端的图像下载请求,图像下载请求包括资源路径,资源路径包括存储路径和测试设备唯一识别码。
然后,响应于图像下载请求,基于存储路径和测试设备唯一识别码确定与测试设备唯一识别码对应的应用界面,应用界面是由目标测试设备通过截图得到的图像,目标测试设备是与测试设备唯一识别码对应的设备。
接着,将与测试设备唯一识别码对应的应用界面发送给客户端。
在某些实施例中,响应于来自客户端的针对目标设备的操作命令,将操作命令发送给第二服务器端可以包括如下操作。
首先,响应于获得来自客户端的操作命令,将操作命令存储在命令数据集合中,操作命令是针对与客户端展示的应用界面对应的目标测试设备的命令。命令数据集合和测试设备数据集合可以分别存储在不同的存储空间中。
然后,获得来自第二服务器端的操作命令下载请求,操作命令下载请求包括测试设备唯一识别码。测试设备唯一识别码使得可以从命令数据集合确定所需的操作命令。
接着,响应于操作命令下载请求,将命令数据集合中与测试设备唯一识别码对应的操作命令传输给第二服务器端,以便第二服务器端执行操作命令,控制目标测试设备进行应用测试。
在某些实施例中,可以基于校验段对操作命令进行检测,以降低执行恶意操作带来的风险。
具体地,以测试设备安装的安卓系统为例进行示例性说明。上述操作命令符合安卓调试桥(adb)命令的规范。校验段可以为安卓调试桥(adb)前缀。
响应于获得来自客户端的操作命令,将操作命令存储在命令数据集合中可以包括如下操作。
首先,接收来自客户端的操作上传请求,操作上传请求包括目标测试设备的测试设备唯一识别码和操作命令。
然后,响应于操作上传请求,生成命令数据集合的键(key),命令数据集合的键(key)包括测试设备唯一识别码和安卓调试桥(adb)前缀。adb前缀可以便于确定操作命令是否为恶意命令,如没有adb前缀的操作命令是恶意命令。
接着,将操作命令作为命令数据集合的值(value)插入到命令数据集合的头部。
在某些实施例中,为了缓解网络波动等导致操作命令易丢失等问题,可以提供操作冗余空间。如可以在命令数据集合中存储多个操作命令。此外,为了避免读错命令,可以以先进先出的方式存储操作命令。
具体地,响应于操作命令下载请求,将命令数据集合中与测试设备唯一识别码对应的操作命令传输给第二服务器端可以包括如下操作。
首先,基于测试设备唯一识别码查找命令数据集合。
然后,将命令数据集合中的最后一个命令作为与测试设备唯一识别码对应的操作命令,并且删除该最后一个命令。这样可以实现使用较小的存储空间存储操作命令,并且能提供冗余空间。
在某些实施例中,为了避免多个用户同时使用同一个测试设备进行应用测试导致的混乱,上述方法还可以包括如下操作。
首先,获得来自客户端的测试设备锁定请求,测试设备锁定请求包括目标测试设备的测试设备唯一识别码。
然后,响应于测试设备锁定请求,将测试设备状态数据集合中与测试设备唯一识别码对应的锁定状态数据更新为锁止状态。
在本实施例中,服务端通过提供了设备注册发现的心跳检测服务、提供设备列表服务、提供锁定/解锁设备服务、提供图像传输服务,还有指令中心这五部分中的至少部分,使得可以实现多用户控制分布式设置的测试设备进行应用测试。
图13是本申请实施例示出的另一种应用测试方法的流程示意图。
参见图13,该应用测试方法可以包括操作S1310~操作S1320。
在操作S1310,按照预设周期将本地测试设备数据发送给第一服务器端,本地测试设备数据包括与第二服务器端相连的至少一个测试设备的测试设备数据。
在本实施例中,预设周期可以是根据专家经验、用户喜好或者使用效果来确定的。例如,预设周期可以是1秒、2秒、3秒、5秒、8秒、10秒或者15秒等。本地测试设备数据可以与第二服务器端相连的测试设备的测试设备信息数据。如测试设备唯一识别码、测试设备网络连接状况等。测试设备的硬件信息等。
在操作S1320,响应于来自第一服务器端的针对目标测试设备的操作命令,控制目标测试设备进行应用测试,其中,目标测试设备是与目标数据对应的设备,操作命令是基于针对客户端展示的目标测试设备的应用界面的第二操作进行转换得到的命令,目标数据是由第一操作从包括本地测试设备数据的数据集合中确定的数据。
可以采用多种相关技术实现第二服务器端(如PC端)控制目标测试设备进行应用测试。
在某些实施例中,本地测试设备数据可以通过以下方式获取。首先,获取与第二服务器端相连的外接测试设备的设备序列号。并且,获取与设备序列号对应的测试设备显示屏的高度和测试设备显示屏的宽度。其中,设备序列号可以便于实现测设设备唯一识别符的全局唯一性。测试设备显示屏的高度和测试设备显示屏的宽度便于调整应用界面在客户端的展示效果。
在某些实施例中,按照预设周期将本地测试设备数据发送给第一服务器端可以包括如下操作。请求第一服务器端提供的心跳检测服务,并发送本地测试设备数据给第一服务器端,其中,本地测试设备数据包括:测试设备唯一识别码和测试设备信息,测试设备信息包括:测试设备序列号、测试设备显示屏的高度和测试设备显示屏的宽度中至少一种。其中,心跳上报可以按照如3秒、5秒、10秒、15秒等频率进行上报。心跳上报便于第一服务器端即使更新测试设备数据集合。如没有执行心跳上报的测试设备可以被认为已不适合再进行应用测试,如已经断开连接。
在某些实施例中,响应于来自第一服务器端的针对目标测试设备的操作命令,控制目标测试设备进行应用测试可以包括如下操作。
首先,向第一服务器端发送操作命令下载请求,操作命令下载请求包括本地测试设备数据中的测试设备唯一识别码。
然后,获得来自第一服务器端的与测试设备唯一识别码对应的操作命令,并且执行操作命令,以控制目标测试设备进行应用测试。通过类似队列式命令上传和命令下载,相对于操作命令直传的方式的可靠性更高。
在某些实施例中,响应于来自第一服务器端的针对目标测试设备的操作命令,控制目标测试设备进行应用测试可以包括如下操作。如果操作命令包括安卓调试桥(adb)前缀,则响应于针对目标测试设备的操作命令,控制目标测试设备进行应用测试。
在某些实施例中,目标测试设备的应用界面通过如下方式获取。
首先,控制与第二服务器端相连的至少一个测试设备各自进行截图,得到至少一个测试设备各自的应用界面。
然后,控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端。
接着,将至少一个测试设备各自上传的应用界面传输至第一服务器端,以便客户端从第一服务器端下载目标测试设备的应用界面。
在某些实施例中,控制与第二服务器端相连的至少一个测试设备各自进行截图可以包括如下操作。响应于从第一服务器端下载到针对目标测试设备的应用界面的操作命令,控制与第二服务器端相连的至少一个测试设备各自按照预设频率进行指定个数次截图。其中,预设频率可以是0.1秒、0.2秒、0.3秒、0.5秒、1秒等。预设频率越高,则截取的图像更连续,便于用户在客户端查看应用测试过程。但是,预设频率过高,则可能占用过多的网络资源,并且,可能占用过多的存储空间。指定个数次可以是基于专家经验或者用户喜好等设定的。该指定个数的截图能较好地反映出应用测试过程(如界面跳转过程)即可。
相应地,控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端可以包括:控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端的本地存储空间的指定文件中。
通过以上方式可以有效减少截屏次数,减少上传图像的次数,进而降低网络资源占用量。
在某些实施例中,可以通过登录数据库等方式来实现下载应用界面。例如,将至少一个测试设备各自上传的应用界面传输至第一服务器端可以包括如下操作。
首先,远程登陆第一服务器端。例如,图像下载请求中可以包括登录账户信息,以便远程登录第一服务器端的数据库。
然后,将至少一个测试设备各自上传的应用界面加密,并且将加密后的应用界面复制到第一服务器端的指定目录中。
在本实施例中,第二服务器端提供了:与pc连接的安卓设备的心跳上报功能、下载adb命令并执行的功能,以及抓取并上传测试设备截图的功能。基于这三个功能中的至少部分,使得能够实现多用户控制分布式设置的测试设备进行应用测试。
关于设备列表和实时监控功能
图14是本申请实施例示出的一种信息展示方法的数据流示意图。
参见图14,通过上述第一服务器端的设备注册发现的心跳检测服务和设备列表服务、第二服务器端的与pc连接的安卓设备的心跳上报功能、以及客户端的设备列表展示功能,实现了测试设备的上线和下线的实时监测,并且便于客户端从测试设备信息集合中选取目标测试设备。
图15是本申请实施例示出的另一种信息展示方法的流程示意图。
参见图15,由客户端执行的信息展示方法,可以包括操作S1510~操作S1530。
在操作S1510,向第一服务器端发送测试设备数据请求。
在某些实施例中,向第一服务器端发送测试设备数据请求可以包括:按照预设频率向第一服务器端发送测试设备数据请求。其中,预设频率可以参考如上相关内容。
在操作S1520,获得来自第一服务器端的测试设备数据,并且基于测试设备数据生成测试设备信息集合。
在本实施例中,测试设备数据包括:测试设备唯一识别码和测试设备信息,测试设备信息包括:测试设备序列号、测试设备显示屏的高度和测试设备显示屏的宽度中至少一种。
相应地,基于测试设备数据生成测试设备信息集合可以包括:将测试设备数据渲染成测试设备信息列表。渲染的过程是将数据处理为图像信息,以便在客户端的展示区域中进行展示。
在操作S1530,响应于针对测试设备信息集合中的目标测试设备的设备信息的第一操作,在客户端的展示界面中展示目标测试设备的应用界面,以基于应用界面进行应用测试。
在某些实施例中,为了避免多个用户在同一时间段内使用同一个测试设备进行应用测试,测试设备数据还可以包括:至少部分测试设备各自的锁定状态,锁定状态包括:锁止状态和解锁状态。
相应地,响应于针对测试设备信息集合中的目标测试设备的设备信息的第一操作可以包括如下操作。
如果至少部分测试设备中的第一测试设备的锁定状态是锁止状态,则禁止响应针对第一测试设备的设备信息的第一操作。
如果至少部分测试设备中的第二测试设备的锁定状态是解锁状态,则允许响应针对第二测试设备的设备信息的第一操作,以展示第二测试设备的应用界面。
在一个具体实施例中,可以通过如下操作实现设备列表展示。
首先,每隔0.5秒钟即请求服务端提供的获取设备列表服务。列表数据为一个数组,数组中是每台移动设备的信息。数组格式可以如下所示。
移动设备唯一识别码(字符串)。
移动设备序列号(字符串)。
移动设备显示屏的高度(数字)。
移动设备显示屏的宽度(数字)。
移动设备的锁定状态(数字1或0)。
然后,将列表服务返回的数据中的前四项渲染到列表中,并且根据第5项锁定状态展示操作按钮(未锁定状态按钮显示<操作>,锁定状态按钮显示<锁定>,并且置灰无法点击)。
接着,点击操作按钮可以跳转至设备操作页面,并且将设备所有信息携带至设备操作页面。
图16是本申请实施例示出的另一种信息展示方法的流程示意图。
参见图16,该由第一服务器端执行的信息展示方法可以包括操作S1610~操作S1620。
在操作S1610,获得来自客户端的测试设备数据请求。
在操作S1620,响应于测试设备数据请求,将测试设备数据发送给客户端,以便在客户端的展示界面中展示测试设备数据,并且控制与测试设备数据对应的测试设备进行应用测试。
其中,测试设备数据存储在测试设备数据集合中,测试设备数据集合包括来自至少一个第二服务器端的本地测试设备数据,本地测试设备数据包括与第二服务器端相连的至少一个测试设备的测试设备数据。
例如,测试设备数据包括由第二服务器端给相连的测试设备分配的测试设备唯一识别码和测试设备信息。
在某些实施例中,测试设备数据集合中的测试设备唯一识别码与测试设备数据集合标识共同作为哈希值的键(key),测试设备信息作为哈希值的值(value),哈希值的键(key)的有效时长小于或者等于预设时长阈值。
在某些实施例中,将测试设备数据发送给客户端可以包括如下操作。
首先,检索测试设备数据集合,得到测试设备数据集合中的至少部分测试设备数据,并且检索测试设备状态数据集合,得到与至少部分测试设备数据对应的测试设备的锁定状态数据。
然后,返回对象,对象以至少部分测试设备数据中的第二服务器端唯一识别码作为键(key),对象的值(value)的格式为数组,数组包括:测试设备唯一识别码、测试设备序列号、测试设备显示屏的高度、测试设备显示屏的宽度或者测试设备的锁定状态数据中至少一种。
在一个具体实施例中,设备注册发现的心跳检测服务可以通过如下方式实现:
服务分为三部分:A接收参数设置,B程序处理部分,C返回值定义。
A)接收参数设置:程序共接收两个参数。
a)参数一:移动设备唯一标识码(pc端生成)。
b)参数二:设备信息。
i.移动设备序列号。
ii.移动设备显示屏尺寸(宽/高)。
B)程序处理部分:
a)将设备信息保存至redis数据库中(redis设备库:adb_device_**)。
i.将移动设备唯一标识码加上前缀adb_device_,作为redis哈希的key。
ii.把设备信息作为redis哈希的value。
1.移动设备序列号(字符串)。
2.移动设备显示屏的高度(数字)。
3.移动设备显示屏的宽度(数字)。
iii.并且设置此key10秒过期。
C)返回值定义:成功返回True,失败返回False(适用方是pc端,pc端不关心此服务的返回值,忽略)。
关于提供设备列表服务:
服务分为三部分:A接收参数设置,B程序处理部分,C返回值定义。
A)接收参数设置:本服务不需要参数。
B)程序处理部分:
a)检索redis设备库,将所有设备取出。
b)检索redis锁定库,获取所有设备对应的锁定状态。
C)返回值定义:
a)返回格式为对象(多个pc下的多个设备)。
b)对象的key为pc唯一识别码(可能有多个pc注册到系统):
i.将移动设备唯一识别码拆分(pc唯一识别码+移动设备序列号)。
ii.获取pc唯一识别码。
c)对象的value是一个数组(一个pc下可能连接着多个移动设备)。
i.数组中为多个移动设备信息:
1.移动设备唯一识别码(字符串)。
2.移动设备序列号(字符串)。
3.移动设备显示屏的高度(数字)。
4.移动设备显示屏的宽度(数字)。
5.移动设备的锁定状态(数字1或0)。
图17是本申请实施例示出的另一种信息展示方法的流程示意图。
参见图17,由第二服务器端执行的信息展示方法可以包括操作S1710~操作S1720。
在操作S1710,获得本地测试设备数据,本地测试设备数据包括与第二服务器端相连的至少一个测试设备的测试设备数据。
例如,获得本地测试设备数据可以包括如下操作:获取与第二服务器端相连的外接测试设备的设备序列号,以及,获取与设备序列号对应的测试设备显示屏的高度和测试设备显示屏的宽度。其中,显示屏的宽度可以通过多种单位进行表示,如厘米(cm)、像素行数或列数等。
在操作S1720,按照预设周期将本地测试设备数据发送给第一服务器端,以便第一服务器端基于本地测试设备数据生成测试设备数据集合,使得客户端基于从第一服务器端获取测试设备数据集合进行应用测试。
在某些实施例中,按照预设周期将本地测试设备数据发送给第一服务器端可以包括如下操作。请求第一服务器端提供的心跳检测服务,并发送本地测试设备数据给第一服务器端,其中,本地测试设备数据包括:测试设备唯一识别码和测试设备信息,测试设备信息包括:测试设备序列号、测试设备显示屏的高度和测试设备显示屏的宽度中至少一种。
例如,测试设备唯一识别码包括:第二服务器端唯一识别码和测试设备序列号,第二服务器端唯一识别码是第一服务器端给第二服务器端分配的唯一识别码。
在一个具体实施例中,以第二服务器端是个人电脑(PC)为例进行示例性说明。
首先,在运行pc端脚本的第一时间生成pc的唯一识别码(uuid)备用。
1.与pc连接的安卓设备的心跳上报功能(10秒上报一次):
A)获取本地设备列表。(使用adbdevices命令,获取所有用数据线连接的安卓移动设备序列号)。
B)循环处理并上报设备。
a)获取安卓移动设备的尺寸(使用adb-s设备号shell wm size命令即可获得设备的宽和高的对应数字)。
b)生成移动设备的唯一标识码。
i.将pc唯一识别码和移动设备序列号使用下划线拼接为移动设备唯一识别码。
c)请求服务端提供的心跳检测服务,上报设备。
i.移动设备唯一识别码。
ii.移动设备信息。
1.移动设备序列号(字符串)。
2.移动设备宽度(数字)。
3.移动设备高度(数字)。
通过以上技术方案即可实现安卓移动设备的上线和下线的实时监测,并且可以展示设备列表以供用户选择测试设备。
以下对设备远程操作的功能进行示例性说明。
图18是本申请实施例示出的另一种远程控制方法的数据流示意图。
参见图18,通过第一服务器端的抓取并上传测试设备截图的功能和指令中心、第二服务器端的下载adb命令并执行的功能、以及客户端的设备操作页面,实现了adb命令的转换和上传/下载/执行,以及多用户操作时的独占功能,主要实现了设备远程操作的功能。
图19是本申请实施例示出的另一种远程控制方法的流程示意图。
参见图19,由客户端执行的远程控制方法可以包括操作S1910~操作S1930。
在操作S1910,在客户端的展示界面中展示目标测试设备的应用界面,目标测试设备是与目标信息对应的设备,目标信息是基于第一操作从测试设备信息集合中确定的信息。
其中,客户端、目标测试设备、应用界面、第一操作和测试设备信息集合等可以参考以上相关内容,在此不再详述。
在操作S1920,通过客户端的展示界面获得针对目标测试设备的应用界面的第二操作。
在某些实施例中,第二操作包括:点击操作、滑动操作、长按操作、虚拟键操作中至少一种,虚拟键操作针对的对象包括目标测试设备的实体键。具体参考图9至图11所示。
在操作S1930,响应于第二操作,生成针对目标测试设备的操作命令,并且将操作命令传输至第二服务器端,以便第二服务器端控制目标测试设备进行应用测试。
响应于第二操作,生成针对目标测试设备的操作命令可以包括:将针对客户端的展示界面的第二操作转换为针对目标测试设备的应用界面的操作命令。
如上,可以基于目标测试设备的第一属性与客户端的第二属性之间的差异,将针对客户端的第二操作转换为针对目标测试设备的操作。
具体地,可以至少基于坐标转换将针对客户端的展示界面的第二操作转换为针对目标测试设备的应用界面的操作。
在一个具体实施例中,操作命令可以符合安卓调试桥(adb)命令的规范,以便实现对测试设备进行远程控制。对于点击操作、长按操作、滑动操作和虚拟键操作,可以参考以上关于图9至图11相关部分内容,在此不再详述。
在某些实施例中,上述方法还可以包括如下操作。
首先,获得目标测试设备的测试设备显示屏尺寸和客户端的展示界面尺寸。
然后,根据测试设备显示屏尺寸和展示界面尺寸确定特定缩放比例,以便基于特定缩放比例将针对客户端的展示界面的第二操作,转换为针对目标测试设备的应用界面的操作命令。
在某些实施例中,测试设备显示屏尺寸包括测试设备显示屏的高度和测试设备显示屏的宽度,展示界面尺寸包括展示界面的高度和展示界面的宽度。展示界面尺寸可以通过不同单位进行表示,如毫米、厘米、分米、像素行数、像素列数等。
相应地,特定缩放比例包括:根据测试设备显示屏的高度和展示界面的高度确定的第一缩放比例,或者,根据测试设备显示屏的宽度和展示界面的宽度确定的第二缩放比例。其中,第一缩放比例和第二缩放比例可以相同或不同。
在某些实施例中,还可以基于上述特定缩放比例来将第二操作转换为操作命令。具体地,上述方法还可以包括如下操作,存储第一缩放比例或者第二缩放比例。
相应地,将针对客户端的展示界面的第二操作转换为针对目标测试设备的应用界面的操作命令可以包括如下操作,基于第一缩放比例或者第二缩放比例将针对客户端的展示界面的第二操作,转换为针对目标测试设备的应用界面的操作命令。
在某些实施例中,将操作命令传输至第二服务器端可以包括如下操作,向第一服务器端发送操作上传请求,以便将操作命令存储在第一服务器端,使得第二服务器端能够下载操作命令,其中,操作上传请求包括目标测试设备的测试设备唯一识别码和操作命令。
此外,上述方法在将操作上传请求发送给第一服务器端之后还可以包括如下操作,向第一服务器端发送测试设备锁定请求,测试设备锁定请求包括目标测试设备的测试设备唯一识别码。
在一个具体实施例中,远程操作可以分为三部分,一是测试设备的应用界面的实时下载和渲染,二是将对客户端的操作转换为adb命令上传至服务器,三是在上传adb命令的同时请求设备锁定服务,保证设备独占。
A)测试设备的应用界面的实时下载和渲染。
a)根据提前获取的图片服务器IP地址和路径,与移动设备唯一识别码拼接,并且将提前约定好的图片类型后缀.jpg拼接到最后,生成资源路径.<示例:https:
//111.222.333.444/img/l2k3jkj23_02309839.jpg>。
b)每间隔0.1秒请求图片服务器一次,访问生成的资源路径获取到安卓移动设备截图。
c)根据web端设备的宽高和安卓移动设备的宽高,计算出最合适的显示尺寸,并将下载的移动设备截图渲染到web端中(防止一个边超出web端显示屏)。
i.计算安卓移动设备的宽缩放至web端设备的宽度的比例,和安卓移动设备的高缩放至web端设备的高度的比例,两个比例比较后,取缩放比例较大的一边的比例。
ii.将截图的宽和高按此比例进行缩放(这样就可以保证一边是占满的,另一边又不超出web端显示屏)。
iii.并将此缩放比例保存备用(转换adb命令时使用)。
B)将对web页面的操作转换为adb命令上传至服务器。
a)将点击操作转换为adb命令。
i.web端获取点击的位置的x轴和y轴的坐标值。
ii.将x和y坐标值与缩放比例相乘,获取远程安卓移动设备的对应坐标值。
iii.将x和y坐标值拼接到adb命令上传。
1.adb-s<设备序列号>shell input tap<x坐标值><y坐标值>。
b)将滑动操作转换为adb命令。
i.web端获取滑动操作的位置的动作起始x轴和y轴的坐标值和动作结束x轴和y轴的坐标值。
ii.将开始和结束的x和y坐标值与缩放比例相乘,获取远程安卓移动设备的对应坐标值。
iii.将开始和结束的x坐标值和y坐标值拼接到adb命令上传。
1.adb-s<设备序列号>shell input swipe<起始x坐标值><起始y坐标值><结束x坐标值><结束y坐标值>。
c)将长按操作转换为adb命令。
i.web端获取长按操作的位置x轴和y轴的坐标值。
ii.将x和y坐标值与缩放比例相乘,获取远程安卓移动设备的对应坐标值。
iii.将开始和结束的x和y坐标值拼接到adb命令上传。
1.adb-s<设备序列号>shell input swipe<x坐标值><y坐标值><x坐标值><y坐标值><持续时间毫秒数>。
d)将其他命令制作为页面悬浮按钮,点击操作时转换为adb命令。
i.关机
1.adb-s<设备序列号>shell reboot–p。
ii.重启
1.adb-s<设备序列号>shell reboot。
iii.长按电源键
1.adb-s<设备序列号>shell input keyevent--longpress 26。
iv.锁屏
1.adb-s<设备序列号>shell input keyevent 26。
v.返回键
1.adb-s<设备序列号>shell input keyevent 4。
vi.home键
1.adb-s<设备序列号>shell input keyevent 3。
vii.菜单键
1.adb-s<设备序列号>shell input keyevent 82。
viii.截图键
1.adb-s<设备序列号>shell screencap-p<保存路径+文件名>。
ix.设置音量
1.adb-s<设备序列号>shell media volume--show--stream<音量类型>--set<音量数值>。
C)请求服务端指令中心的命令上传服务,将adb命令上传。
i.参数一:移动设备唯一识别码(字符串)。
ii.参数二:adb命令(字符串)。
D)上传adb命令的同时请求设备锁定服务。
参数一:移动设备唯一识别码。
图20是本申请实施例示出的另一种远程控制方法的流程示意图。
参见图20,由第一服务器端执行的远程控制方法可以包括操作S2010~操作S2030。
在操作S2010,响应于获得来自客户端的操作命令,将操作命令存储在命令数据集合中,操作命令是针对与客户端展示的应用界面对应的目标测试设备的命令。
在操作S2020,获得来自第二服务器端的操作命令下载请求,操作命令下载请求包括测试设备唯一识别码。
在操作S2030,响应于操作命令下载请求,将命令数据集合中与测试设备唯一识别码对应的操作命令传输给第二服务器端,以便第二服务器端执行操作命令,控制目标测试设备进行应用测试。
在某些实施例中,操作命令符合安卓调试桥(adb)命令的规范。
相应地,响应于获得来自客户端的操作命令,将操作命令存储在命令数据集合中可以包括如下操作。
首先,接收来自客户端的操作上传请求,操作上传请求包括目标测试设备的测试设备唯一识别码和操作命令。
然后,响应于操作上传请求,生成命令数据集合的键(key),命令数据集合的键(key)包括测试设备唯一识别码和安卓调试桥(adb)前缀。
接着,将操作命令作为命令数据集合的值(value)插入到命令数据集合的头部。
通过键(key)值(value)对的方式存储操作命令,便于基于键查找对应的值。
在某些实施例中,响应于操作命令下载请求,将命令数据集合中与测试设备唯一识别码对应的操作命令传输给第二服务器端可以包括如下操作,基于测试设备唯一识别码从命令数据集合中查找命令集,和/或,将命令集中的最后一个命令作为与测试设备唯一识别码对应的操作命令,并且删除该最后一个命令。
在某些实施例中,上述方法还可以包括如下操作。
首先,获得来自客户端的测试设备锁定请求,操作上传请求包括目标测试设备的测试设备唯一识别码。
然后,响应于测试设备锁定请求,将测试设备状态数据集合中与测试设备唯一识别码对应的锁定状态数据更新为锁止状态。
其中,锁止状态的有效时长小于或者等于预设时长阈值。相应地,上述方法还可以包括如下操作:如果与测试设备唯一识别码对应的锁定状态数据更新为锁止状态后的持续时长超过预设时长阈值,并且没有再次接收到包括目标测试设备的测试设备唯一识别码的测试设备锁定请求,则将与测试设备唯一识别码对应的锁定状态数据更新为解锁状态。这样可以实现测设设备的自动解锁。
在一个具体实施例中,关于锁定/解锁设备服务:
因为一个设备在同一时间内最好只有一个用户在操作(防止操作混乱),所以设置了设备锁定服务,同时设备在使用完后需要有一个释放操作,也就是解锁。
A)锁定
锁定服务分为三部分:a接收参数设置,b程序处理部分,c返回值定义。
a)接收参数设置:
i.参数一:移动设备唯一识别码。
b)程序处理部分:
i.将设备是否锁定保存至redis中(redis锁定库:adb_lock_**)。
1.将移动设备唯一标识码加上前缀adb_lock_,作为redis的key。
2.将值设置为1,代表此设备已经被锁定。
3.并且设置60秒过期。
c)返回值定义:成功返回True,失败返回False(使用方是web端,web端不关心此服务的返回值,忽略)。
B)解锁:因为锁定服务会在一定时间内自动释放,所以无需手动解锁。
关于指令中心:指令中心主要作用是接收客户端(如web端)上传的adb命令,给pc端提供对应移动设备的adb命令下载服务。
A)命令上传服务。
服务分为三部分:a接收参数设置,b程序处理部分,c返回值定义。
a)接收参数设置:
i.参数一:移动设备唯一识别码(字符串)。
ii.参数二:adb命令(字符串)。
b)程序处理部分:
i.将adb命令保存至redis中(redis命令库:adb_command_**)。
1.将移动设备唯一标识码加上前缀adb_command_,作为redis列表的key。
2.使用LPUSH命令将adb命令插入到redis列表头部。
c)返回值定义:成功返回True,失败返回False(使用方是web端,web端不关心此服务的返回值,忽略)。
B)命令下载服务。
服务分为三部分:a接收参数设置,b程序处理部分,c返回值定义。
a)接收参数设置:
i.参数一:移动设备唯一识别码。
b)程序处理部分:
i.根据移动设备唯一识别码,使用redis的RPOP命令在redis命令库中查找指令集(RPOP:获取列表中最后一个命令,并将此命令从列表尾部删除)。
c)返回值定义:获取到命令则返回adb命令(字符串),失败或未找到命令则返回空。
图21是本申请实施例示出的另一种远程控制方法的流程示意图。
参见图21,由第二服务器端执行的远程控制方法可以包括操作S2110~操作S2130。
在操作S2110,获得本地测试设备数据,本地测试设备数据包括与第二服务器端相连的至少一个测试设备的测试设备唯一识别码。
在本实施例中,可以通过扫码特定连接方式的设备来获得本地测设设备数据。
在操作S2120,向第一服务器端发送操作命令下载请求,操作命令下载请求包括本地测试设备数据中的测试设备唯一识别码。
在本实施例中,向第一服务器端发送操作命令下载请求可以包括如下操作。
首先,基于第二服务器端唯一识别码和测试设备序列号生成测试设备唯一识别码。
然后,向第一服务器端发送包括测试设备唯一识别码的操作命令下载请求。
在操作S2130,获得来自第一服务器端的与测试设备唯一识别码对应的操作命令,并且执行操作命令,以控制目标测试设备进行应用测试。
在某些实施例中,为了过滤掉恶意操作命令,执行操作命令可以包括如下操作,如果操作命令包括安卓调试桥(adb)前缀,则执行操作命令。
在一个具体实施例中,可以通过如下方式下载adb命令并执行的功能(如每0.1秒尝试下载一次):
A)获取本地设备列表(使用adbdevices命令,获取所有用数据线连接的安卓移动设备序列号)。
B)循环处理并下载adb命令。
a)生成移动设备的唯一标识码。
i.将pc唯一识别码和移动设备序列号使用下划线拼接为移动设备唯一识别码。
b)请求服务端指令中心提供的adb命令下载服务。
i.参数一:移动设备唯一识别码。
c)执行下载的adb命令。
i.判断命令的前三个字符是否为adb(防止web端上传恶意命令)。
ii.如果命令前三个字符是adb的话,即刻执行。
本申请的另一方面还提供了一种图像传输装置,设置于客户端中。
图22是本申请实施例示出的一种图像传输装置的结构的框图。
参见图22,该装置2200包括:图像下载请求发送模块2210、应用界面获得模块2220和应用界面渲染模块2230。
图像下载请求发送模块2210用于向第一服务器端发送图像下载请求,图像下载请求包括资源路径,资源路径包括存储路径和测试设备唯一识别码。
应用界面获得模块2220用于获得来自第一服务器端的与资源路径对应的应用界面,应用界面是由目标测试设备通过截图得到的图像,目标测试设备是与测试设备唯一识别码对应的设备。
应用界面渲染模块2230用于渲染应用界面,并且在客户端的展示界面展示经渲染的应用界面,以便基于针对经渲染的应用界面的操作进行应用测试。
本申请的另一方面还提供了一种图像传输装置,设置于第一服务器端。
图23是本申请实施例示出的另一种图像传输装置的结构的框图。
参见图23,该图像传输装置2300可以包括:图像下载请求获得模块2310、应用界面确定模块2320和应用界面发送模块2330。
图像下载请求获得模块2310用于获得来自客户端的图像下载请求,图像下载请求包括资源路径,资源路径包括存储路径和测试设备唯一识别码。
应用界面确定模块2320用于响应于图像下载请求,基于存储路径和测试设备唯一识别码确定与测试设备唯一识别码对应的应用界面,应用界面是与测试设备唯一识别码对应的目标测试设备通过截图得到的图像。
应用界面发送模块2330用于将应用界面发送给客户端,以便客户端展示经渲染的应用界面,并且基于针对经渲染的应用界面的操作进行应用测试。
本申请的另一方面还提供了一种图像传输装置,设置于第二服务器端。
图24是本申请实施例示出的另一种图像传输装置的结构的框图。
参见图24,该图像传输装置2400可以包括:截图控制模块2410、第一应用界面传输模块2420和第二应用界面传输模块2430。
截图控制模块2410用于控制与第二服务器端相连的至少一个测试设备各自进行截图,得到至少一个测试设备各自的应用界面。
第一应用界面传输模块2420用于控制与第二服务器端相连的至少一个测试设备各自将应用界面传输至第二服务器端。
第二应用界面传输模块2430用于将至少一个测试设备各自上传的应用界面传输至第一服务器端,以便客户端从第一服务器端下载目标测试设备的应用界面,并且基于针对目标测试设备的应用界面的操作进行应用测试。
关于上述实施例中的装置2200、2300、2400,其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。
本申请的另一方面还提供了一种图像传输系统。
图25是本申请实施例示出的一种图像传输系统的结构的框图。
参见图25,该图像传输系统2500可以包括:客户端2510、第一服务器端2520和第二服务器端2530。
客户端2510用于执行如上由客户端执行的方法。
第一服务器端2520用于执行如上由第一服务器端执行的方法。
第二服务器端2530用于执行如上由第二服务器端执行的方法。
本实施例中,分布式测试设备可以实时展示给用户,供用户挑选。用户在客户端输入的操作可以实时反馈到远程测试设备上,以执行与该操作对应的操作命令,测试过程中的测试设备图像又可以实时展示在客户端的展示界面中。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。
图26是本申请实施例示出的电子设备的结构的框图。该电子设备例如可以是配置平台设备、网页端设备或客户端设备等。
参见图26,电子设备2600包括存储器2610和处理器2620。
处理器2620可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是多种常规的处理器等。
存储器2610可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器1020或者计算机的其他模块需要的静态数据或者命令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的命令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的命令和数据。此外,存储器2610可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器2610可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器2610上存储有可执行代码,当可执行代码被处理器2620处理时,可以使处理器2620执行上文述及的方法中的部分或全部。
上文中已经参考附图详细描述了本申请的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本申请所必须的。另外,可以理解,本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
此外,根据本申请的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本申请的上述方法中部分或全部步骤的计算机程序代码命令。
或者,本申请还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机命令代码),当可执行代码(或计算机程序、或计算机命令代码)被电子设备(或电子设备、服务器等)的处理器执行时,使处理器执行根据本申请的上述方法的各个步骤的部分或全部。
本领域技术人员还将明白的是,结合这里的申请所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本申请的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行命令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机命令的组合来实现。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。