MobileRunner技术资料.docx
《MobileRunner技术资料.docx》由会员分享,可在线阅读,更多相关《MobileRunner技术资料.docx(11页珍藏版)》请在冰豆网上搜索。
MobileRunner技术资料
MobileRunner技术资料
一、MobileRunner基本功能:
功能概述:
移动设备的自动化测试工具,支持系统功能测试、系统性能测试、应用程序功能测试、应用程序兼容性测试、应用程序性能测试。
功能点:
1.移动设备管理—对连接设备管理服务器的移动设备进行集中式管理,支持设备的热插拔,自动识别设备厂商、设备型号、操作系统版本、设备分辨率等设备基本信息。
2.移动设备连接控制—对设备进行连接,通过鼠标操作设备,支持基本的触屏操作(点击、滑动、长按)、物理按键操作以及应用程序安装、卸载、启动。
3.操作脚本录制—对设备的操作录制成脚本,在录制过程中自动识别操作的界面组件,形成资源(对象)库。
4.自动图形组件识别及编辑—脚本录制时自动记录操作场景截图及操作组件,可对识别出来的组件进行编辑。
5.图形检查点设置—通过图形识别比对的方式检查脚本执行结果。
6.脚本回放—对录制好的脚本在指定的设备上回放脚本,自动识别界面组件并发送事件。
兼容多操作系统及多设备分辨率。
7.脚本回放报告—对执行的脚本进行回放记录,可以查看执行结果。
8.报告导出—支持html、doc、pdf等格式的报告导出。
9.批量脚本执行—脚本本身支持脚本包含语句,可以批量连续执行多个脚本。
10.无人值守执行—支持脚本定时回放,无需人工干预。
11.脚本语法及编辑—支持beanShell的脚本语法,支持逻辑语法。
12.应用管理—支持apk应用的安装、卸载、启动。
13.设备运行状态监控—支持对连接的设备的CPU使用率、内存使用率等信息的实时监控显示。
二、MobileRunner关键技术点及创新点
关键技术点:
1.设备连接管理—对连接到设备管理服务器的设备进行监控,设备的连接与断开系统能够自动识别,不需要人工干预。
(设备管理服务器通过NIO与设备管理器进行集中管理,设备管理器与移动设备通过ADB进行通信)
2.设备控制—用户的鼠标操作及菜单操作能够转化为设备操作指令,并发送到设备上执行。
(指令的发送通过设备管理器使用ADB对设备进行操作,故设备需要开启调试模式)
3.图形自动识别组件—设备的操作能够通过设备界面自动识别出界面组件,脚本执行时能够在当前的设备界面中识别出该组件并执行录制时的响应操作。
4.组件特征训练—通过组件特征训练的方式来增加组件的识别率,达到类似于人眼识别的能力,加强脚本的通用性。
创新点:
通过图形识别原理对操作对象进行智能自动识别,被测设备无需提供特殊接口,无需安装任何其他应用程序。
三、自动测试的图像识别原理、过程以及存在的问题
1.录制时图像识别原理及过程:
(灰图方差值算法)
a)流程图
b)流程说明:
首先获取当前操作界面的截图,获取当前操作鼠标坐标点,并记录坐标点的灰度值,然后以当前操作鼠标坐标点为中心向四边扩大一个像素值得到一个矩形(周围8个像素),判断该矩形的灰度值与之前的灰度值是否相近,相近则继续扩大矩形,直至灰度值差距很大,则认为找到该图形的边界,并得到一个矩形的组件截图。
2.执行脚本时图像识别原理:
(汉明距离算法、模板匹配算法)
a)流程图:
b)流程说明:
首先获取当前系统界面并截图,将该截图缩放为录制时界面的大小,在录制时组件的所在坐标截取组件宽高的子截图,比较子截图与组件的相似度(采用汉明距离算法),如果相似度非常高,则认为该界面具有该组件,可以发送录制时的操作指令,换算得到的坐标是录制时的坐标与当前设备相同比例的坐标;如果相似度非常低,则认为该界面不具有该组件,改用直方图的模板匹配算法,从截图最左上角到最右下角寻找与录制时组件形状相同的界面部分,如果找到相同部分,也认为该界面具有该组件,换算得到的坐标是找到的界面部分的中心点;否则是界面中不具备该组件,无法完成脚本执行,判断脚本执行失败。
3.目前存在的问题:
1).录制时组件识别准确度较低,对于边界不明显的组件不容易识别,对于分块的图形识别也多识别为组件的一部分,不能识别全部组件。
但通过资源/组件编辑器可以进行人工干预,增强组件识别率。
2).对于不同分辨率比例(如16:
9录制的脚本在16:
10的设备上执行),执行时识别率较低,汉明距离与直方图模板匹配算法对于比例不匹配的情况识别能力较差。
3).相同组件识别时,细微的差别容错率较差,如同样的短信图标,没有数量提示的图标和有数量提示的图标程序会认为不是同一个组件。
4.公共资源/组件库与组件特征训练功能:
对于常用的界面组件,可以创建公共资源/组件库,用户在设计脚本时,可以选择公共的组件来代替录制脚本时自动识别的组件,提高脚本的通用性,同时用户可以上传新的特征组件,通过特征训练的方式来增强公共组件的识别率,从而实现类似人工的智能识别。
举例如下:
各个输入法的中英文切换按钮可能不相同,但人类能够正确识别该按钮并点击。
可能的按钮样子有:
、、、、。
如果是计算机则会认为这几个按钮都是不同的东西,在脚本执行时如果回放设备和录制设备不是同一个设备且输入法不同,则脚本执行将出现错误,无法找到组件。
而通过训练功能,将这几个组件让系统进行特征训练,从而生成一个“中英文切换”的公共组件,脚本中使用该公共组件代替录制时自动识别的如上面几个图中其中之一的组件,那么在不同的设备上回放脚本时,就不会出现找不到组件的问题,脚本就可以正确的执行下去。
同理,对于上述第3条目前存在的问题中的2)、3)就能很好的解决了。
四、移动测试云
1.体系架构
移动测试云是基于web架构的移动设备自动化测试工具,基于网页的操作,无需安装客户端程序,无需连接移动设备,支持系统功能测试、系统性能测试、应用程序功能测试、应用程序兼容性测试、应用程序性能测试。
对于应用开发者,可在云上进行应用相关的所有测试,对于设备制造商,可以建立私有云对设备进行系统测试和应用测试。
移动测试云由三大部分组成,客户端(网页)部分、执行器、设备管理器:
其中:
客户端(网页)是用户的操作界面,在该界面上完成测试项目创建,测试用例(脚本)创建、设备连接、脚本的录制、脚本编辑、资源/组件编辑、脚本执行、报告查看等操作。
如果用户安装的是胖客户端(桌面应用),则在具备基本客户端功能的基础上,增加了设备管理器的功能,此时的客户端也成为一个设备管理器,通过NIO与设备管理服务器进行连接,用户可将自己的计算机上连接的设备共享出来。
Web服务器(apache、squid)接收客户对界面的请求操作,如网页、图片。
应用服务器(red5、openfire)使用RTMP(RealTimeMessagingProtocol实时消息协议)或者XMPP(ExtensibleMessagingandPresenceProtocol可扩展消息处理现场协议)接受用户操作请求并将设备指令转发给执行器,执行器将指令发送给设备管理器。
应用服务器可以分布式部署,以便承载更大的并发量。
执行器是所有指令的集中管理部分,如用户创建的项目,测试用例数据,需要下发的设备指令,正在排队的设备使用请求等。
设备管理服务器是对设备的集中管理,所有设备服务器连接的设备都集中在此进行管理。
文件服务器是保存用户文件(脚本文件、场景文件、资源文件、上传的应用程序等)。
采用分布式文件服务器windowsDFS、FastDFS或者HDFS(HadoopDistributedFileSystem)
设备管理服务器器首先是将所有设备服务器连接的设备状态进行监听,将各个设备的状态实时的通过执行器发送到web服务器端,由web服务器将设备状态实时告知客户端。
其次设备管理器将接收到的指令发送到指定的设备服务器上并由设备服务器通过ADB(AndroidDebugBridge)给指定的设备执行操作。
设备管理器、设备管理服务器、执行器之间通过NIO进行通信。
各个模块可以进行分布式的部署,同时角色也可以相互转化,以提高云的覆盖范围,理论上讲,所有的客户端计算机设备都可以转化为此架构中的设备服务器,也就是说,云社区中的用户可以将自己的设备共享出来,并连接到自己的计算机上,则该用户共享的移动设备就成为测试云中的一台设备,其他云中的用户就可以看到该设备,并在该设备上进行自己需要的自动化测试并得到测试报告。
技术指标:
一、并发数
采用集群方式。
web服务器(HTTP请求)取决于服务器操作系统、服务器硬件、服务器网络出口带宽(比如Apache默认最大并发是20000、squid默认最大并发是16384)。
单台应用服务器需要独立的IP地址(RTMP连接可以支持400(800kbps)~700(400kbps)个并发、XMPP连接理论上支持300000个并发)。
(此为实际并发数量的瓶颈,取决于流量、出口带宽、服务器数量,目前使用RTMP协议)
执行器、设备管理服务器、数据库可以分布式也可以合并为一个,采用NIO与设备服务器通信。
如果胖客户端需要共享设备,则设备服务管理需要独立IP地址。
设备服务器上挂接移动设备,理论上一台设备服务器上通过USB集线器可以最多挂接127个设备,目前可连接的设备都是Android系统的设备,与Android版本无关。
设备服务器采用分布式部署,以增加设备数量。
录制脚本时用户仅可以控制一台设备,脚本执行回放时,理论上可以控制所有的设备(全部空闲并且是连接就绪状态)。
二、图像识别准确率(前提为界面组件没有改变)
在相同分辨率下,识别率达到100%,相同比例不同分辨率下(如540X960的图片在720X1280的设备上,都是16:
9),识别率达到95%,不同分辨率不同比例(480X854d图片在540X960的设备上),识别率仅达到60%。
三、脚本执行效率
单行脚本执行时间最少0.5秒,最大执行时间30秒。
多设备脚本执行成功率96%。
2.功能点
与单机版MobileRunner相同的功能点:
1).移动设备管理—对连接设备管理服务器的移动设备进行集中式管理,支持设备的热插拔,自动识别设备厂商、设备型号、操作系统版本、设备分辨率等设备基本信息。
2).移动设备连接控制—对设备进行连接,通过鼠标操作设备,支持基本的触屏操作(点击、滑动、长按)、物理按键操作以及应用程序安装、卸载、启动。
3).操作脚本录制—对设备的操作录制成脚本,在录制过程中自动识别操作的界面组件,形成资源(对象)库。
4).自动图形组件识别及编辑—脚本录制时自动记录操作场景截图及操作组件,可对识别出来的组件进行编辑。
5).图形检查点设置—通过图形识别比对的方式检查脚本执行结果。
6).脚本回放—对录制好的脚本在指定的设备上回放脚本,自动识别界面组件并发送事件。
兼容多操作系统及多设备分辨率。
7).脚本回放报告—对执行的脚本进行回放记录,可以查看执行结果。
8).报告导出—支持html、doc、pdf等格式的报告导出。
9).批量脚本执行—脚本本身支持脚本包含语句,可以批量连续执行多个脚本。
10).无人值守执行—支持脚本定时回放,无需人工干预。
11).脚本语法及编辑—支持beanShell的脚本语法,支持逻辑语法。
12).应用管理—支持apk应用的安装、卸载、启动。
13).设备运行状态监控—支持对连接的设备的CPU使用率、内存使用率等信息的实时监控显示
独特的功能点:
1).网页操作—无需安装客户端,有浏览器即可进行测试。
2).脚本操作预览—录制好的脚本可以通过图形化的方式查看,以便直观的了解到录制时的操作界面及动作。
3).多设备回放脚本—用户可以选择云中多个设备进行脚本执行,多个设备的操作系统版本、设备分辨率是兼容的,不需要因为设备操作系统、设备分辨率进行特别的