著录项信息
专利名称 | 一种Android设备软件自动测试方法 |
申请号 | CN201210265962.0 | 申请日期 | 2012-07-30 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2012-12-26 | 公开/公告号 | CN102841845A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/36 | IPC分类号 | G;0;6;F;1;1;/;3;6查看分类表>
|
申请人 | 广东欧珀移动通信有限公司 | 申请人地址 | 广东省东莞市长安镇乌沙海滨路18号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | OPPO广东移动通信有限公司 | 当前权利人 | OPPO广东移动通信有限公司 |
发明人 | 曾元清 |
代理机构 | 深圳中一专利商标事务所 | 代理人 | 张全文 |
摘要
本发明涉及一种Android设备软件自动测试方法,包括自动脚本录制、回放和验证步骤,其中录制包括:101)启动被测程序,并创建一层覆盖在被测程序上的透明可视(View)层;所述透明View层是android.view.View的子类;102)按测试要求操作屏幕或按键;在操作过程中,所述透明View层截取记录对应触控/按键事件,再通过向被测程序发送对应一致的模拟触控/按键事件传递操作指令;被测程序执行所述操作指令。这种自动测试方法,基于Android系统本身,无须使用shell命令和高性能pc,从而提升测试安全、可靠、广泛和易实施性。
1.一种Android设备软件自动测试方法,其特征在于,包括以下自动脚本录制步骤:
101)启动被测程序,并创建一层覆盖在被测程序上的透明View层;所述View层是android.view.view的子类;
102)按测试要求操作屏幕或按健;
在操作过程中,所述透明View层截取记录对应触控/按键事件,再通过向被测程序发送对应一致的模拟触控/按键事件传递操作指令;被测程序执行所述操作指令;
所述透明View层截取记录对应触控/按键事件包括:
通过View层取触控事件的代号、动作类型、按键值,并封装成一条字符串添加到StringBuffer和List集合中;取按键事件的代号、动作类型以及界面控件元素所处的X轴Y轴的坐标,并封装成一条字符串添加到StringBuffer和List集合中。
2.根据权利要求1所述Android设备软件自动测试方法,其特征在于,步骤102)中通过解析录制的测试脚本结合自动测试框架向被测程序发送模拟触控/按键事件。
3.根据权利要求2所述Android设备软件自动测试方法,其特征在于,当透明View监听到有UP动作时先暂时移除本身并传递录制信息到回调函数HandleEvent中,而回调函数HandleEvent则根据录制的信息结合自动化测试框架Instrumention发送模拟触控/按键事件来更新被测程序界面,步骤102)中截取记录包括记录对应屏幕界面。
4.根据权利要求3所述Android设备软件自动测试方法,其特征在于,自动脚本录制步骤包括跨进程录制。
5.根据权利要求1-4任一项所述Android设备软件自动测试方法,其特征在于,所述录制步骤还包括当透明View监听到有结束录制请求后结束录制并通知后台服务RecordService提取录制信息,生成录制脚本。
6.根据权利要求5所述Android设备软件自动测试方法,其特征在于,该自动测试方法还包括脚本回放步骤:根据录制脚本向被测程序发送与录制脚本对应的一系列模拟触控/按键事件。
7.根据权利要求6所述Android设备软件自动测试方法,其特征在于,所述回放步骤还包括脚本解析和有效性检测子步骤。
8.根据权利要求6所述Android设备软件自动测试方法,其特征在于,该自动测试方法还包括结果验证步骤,所述结果验证步骤包括截取被测程序屏幕输出和自动/人工图像比对。
9.根据权利要求6所述Android设备软件自动测试方法,其特征在于,该自动测试方法还包括结果验证步骤,所述结果验证步骤包括记录被测程序数据输出和自动数值比对。
一种Android设备软件自动测试方法\n技术领域\n[0001] 本发明涉及软件黑盒测试技术,具体涉及一种安卓(Android)设备软件自动测试方法,尤其应用于智能手机。\n背景技术\n[0002] 现有,Android系统软件自动化测试工具中大致分为三种,其一是由测试开发者为某个程序的某个测试路径预先设计好测试工具(比如目前流行的Juit(java单元测试)和Robotium(一种基于Android的黑盒自动化测试框架),再用来自动化测试,这样的好处是省去了测试员的工作量,但却大大地增加了测试开发者的工作量,首先一个程序是存在多条测试路径的,测试开发者就必须得根据不同的测试路径来设计测试工具,若不这样也就做不到程序测试的全面性。所以做不好上述问题也就做不好自动化测试,同时也会导致产品存在严重的风险与缺陷。或许你可以说采用人工的方式进行测试!这样确实可以解决自动化测试的问题,但传统的人工测试覆盖面窄,周期长,人工成本高等问题又是各厂商所不能接受的。\n[0003] 其二是采用计算机(pc)连接Android终端的方式,其实现是通过在pc机上装有Android自带的安卓驱动(ADB)工具或是通过通用串行总线(USB)实现与外围设备连接并配置好套接字(Socket)通讯参数,在界面上通过标准小窗口工具箱(swt)/jface工具展示出来,在底层则通过壳(shell)命令来获取设备被测程序的信息来生成相应测试脚本,这样虽能解决上述问题,但它脱离不了电脑,做不到随时随地自动化测试,工具的便捷性与实用性非常差,比如申请号为:201110446674.0的专利。\n[0004] 其三是通过开放设备的最高管理权限,通过获得该设备的最高使用权限时才能使用的shell命令来获取设备被测程序的信息来生成相应测试脚本,该方式与Android系统底层连接紧密,不利于Android设备的安全,易成为黑客入侵的工具/技术,比如申请号为:\n201010616361.0的专利的安全问题就令人担忧。\n[0005] 所以说在现行的测试技术亦中都不足以做好Android系统的自动化测试,亟待改进。\n发明内容\n[0006] 本发明需要解决的技术问题是,如何提供一种Android设备软件自动测试方法,无须使用shell命令和高性能pc进行自动化测试,从而提升测试安全、可靠、广泛和易实施性。\n[0007] 本发明的上述技术问题这样解决:构建一种Android设备软件自动测试方法,包括以下自动脚本录制步骤:\n[0008] 101)启动被测程序,并创建一层透明可视(View)层;所述View层是android.view.View的子类;\n[0009] 102)按测试要求操作屏幕或按键;\n[0010] 在操作过程中,所述透明View层截取记录对应触控/按键事件,再通过向被测程序发送对应一致的模拟触控/按键事件传递操作指令;被测程序执行所述操作指令。\n[0011] 按照本发明提供的Android设备软件自动测试方法,步骤102)中通过回调函数HandleEvent和自动测试框架Instrumention向被测程序发送模拟触控/按键事件。\n[0012] 按照本发明提供的Android设备软件自动测试方法,步骤102)中被测程序执行所述操作指令包括更新屏幕界面。\n[0013] 按照本发明提供的Android设备软件自动测试方法,当透明View监听到有UP动作时先暂时移除本身并传递录制信息到回调函数HandleEvent中,而回调函数HandleEvent则根据录制的信息结合自动化测试框架Instrumention发送模拟触控/按键事件来更新被测程序界面,步骤102)中截取记录包括记录对应屏幕界面。\n[0014] 按照本发明提供的Android设备软件自动测试方法,所述自动脚本录制步骤包括跨进程录制,这在基于shell和pc的方式中无法做到。\n[0015] 按照本发明提供的Android设备软件自动测试方法,所述录制步骤还包括通过预先定义的交互方式通知透明View层结束录制,生成录制脚本,具体是:所述录制步骤还包括当透明View监听到有结束录制请求后结束录制并通知后台服务RecordService提取录制信息,生成录制脚本。\n[0016] 按照本发明提供的Android设备软件自动测试方法,该自动测试方法还包括脚本回放步骤:根据录制脚本向被测程序发送与录制脚本对应的一系列模拟触控/按键事件。\n[0017] 按照本发明提供的Android设备软件自动测试方法,所述脚本回放步骤多次重复。\n[0018] 按照本发明提供的Android设备软件自动测试方法,所述回放步骤还包括脚本解析和有效性检测子步骤。\n[0019] 按照本发明提供的Android设备软件自动测试方法,该自动测试方法还包括结果验证步骤。\n[0020] 按照本发明提供的Android设备软件自动测试方法,结果验证步骤包括但不限制于以下方式:\n[0021] (一)所述结果验证步骤包括截取被测程序屏幕输出和自动/人工图像比对;\n[0022] (二)所述结果验证步骤包括记录被测程序数据输出和自动数值比对。\n[0023] 本发明提供的Android设备软件自动测试方法,尤其应用于智能手机,较现有技术具有以下优点:\n[0024] 1、被测程序可以通过本发明来录制不同测试路径的测试脚本,并且不需要编写任何代码或修改测试脚本,避免手动录制不同测试路径的脚本来解决程序测试路径多样性与测试工具开发者设计工具困难、工作量大的问题;\n[0025] 2、不需要借助pc机来实现自动录制,且不需要Android设备的最高管理权限;利用技术完全模拟人机交互功能,可以录制90%以上的程序测试路径多样性的测试脚本,从而减少自动化测试工具的开发量以及人力资本的投入,大大地提高了自动化测试效率;\n[0026] 3、通过采集元素坐标进行自动化测试的,由于录制时只会根据界面的切换而进行录制测试脚本,故而能进行跨进程的脚本录制与脚本回放测试;\n[0027] 4、可用于回归测试,冒烟测试以及功能测试,更实用、更安全、更便捷和更可靠。\n附图说明\n[0028] 下面结合附图和具体实施例进一步对本发明进行详细说明:\n[0029] 图1为本发明优选具体实施例触摸屏智能手机上的自动化测试软件的程序流程示意图。\n具体实施方式\n[0030] 首先,说明本发明基础和关键:\n[0031] (一)基本思想\n[0032] 在录制过程中,当被测程序启动时同时创建一层透明的View放置于被测程序上。\n当有事件发生时,该View所实现的监听方法会记录动作被测程序所点触元素所在的坐标或者该设备的按键值并生成测试脚本保存于手机存储卡上。回放时,再根据对应脚本解析算法结合Instrumentation(Android平台的一种自动化测试框架)实现跨进程的回放测试。\n[0033] (二)自定义View层\n[0034] 该自定义的透明View继承自android.view.View,通过复写它的按键事件onKeyDown()、onKeyUp()、onKeyLong()以及触控事件的onTouchEvent()以上的几个方法来监听设备动作事件,同时该步骤还会在启动该被测程序时把被测程序的Target Package、Activity Name(被测程序的包名与主类名)与当前设备的信息(自定义代号为\n0)封装成一条特殊的字符串(格式为:″自定义代号″+″,″+″TargetPackage″+″,″+″Activity Name″+″,″+″XX″)添加到StringBuffer(java中一个类似于String的字符串缓冲区)中)。\n[0035] 第二,结合优选实施例详细说明本发明具体实现:\n[0036] 如图1所示,本发明优选具体实施例触摸屏智能手机上的自动化测试软件程序具体包括以下步骤:\n[0037] 301)启动程序,选择开始录制(该步骤的实现是获取当前设备的所有可见可操作的程序并罗列出来显示在屏幕上,单击选择某项后会启动该程序,同时也会创建一层自定义的透明View覆盖其上;启动被测程序时把被测程序的Target Package,Activity Name与当前设备的信息封装成一条特殊的字符串添加到StringBuffer中;\n[0038] 302)在录制中,随意点触屏幕(该步骤的实现是通过监听到当前测试员对该透明View的一些模拟键盘/触屏事件后,规则如下:\n[0039] 如果是按键事件则取事件的代号(自定义代号为1)跟动作类型(类型分为:\nUP(弹起),DOWN(按下),LONG(长按))和按键值(比如设备的″返回键″的键值为4)。\n[0040] 如果是触控事件则取事件代号(自定义代号为2)跟动作类型(类型分为:UP(弹起),DOWN(按下),MOVE(移动))以及该界面控件元素所处的X轴Y轴的坐标(注:一个单击的动作由一个DOWN跟一个UP两个动作组成;而一个移动的动作由一个DOWN跟多个MOVE及一个UP动作组成)并把其值封装成一条特殊的字符串(其一格式为:″自定义代号″+″,″+″动作类型″+″,″+″X轴坐标″+″,″+″Y轴坐标″)分别添加到StringBuffer和List集合(java中一种有序的序列)中,同时对该事件的动作类型进行判断,规则如下:\n[0041] 如果动作类型是up类型的话则暂时移除该透明view,然后从List集合中循环取出每条字符串时经转换成字符串数组后判断该字符串数组首个元素的值,如果值为“1”,则取其后的所有元素的值并结合Instrumentation的sendKeySync()方法发送模拟键盘事件。如果值为“2”,则取其后的所有元素的值并结合Instrumentation的sendPointerSync()方法发送触控事件。并由此实现了在透明view上的触摸动作/点按设备按键的各种动作事件(比如在透明的view下我们是看得到被测程序界面上的某些控件的,当你点击(该动作由down跟up类型组成,也就是说该动作是先按下再松开)某个控件时它是没反应的,因为点击的对象是透明的view,当后台程序监测到刚才点击动作中包含有UP动作类型时,程序会暂时的移除该透明view,然后取出刚刚保存到List集合中的事件信息,经解析后结合Instrumentation()的sendPointerSync()方法发送点击动作,故此就实现界面的跳转或更新),当该动作完后又把该透明view覆盖其上并清空List类的所有值,故而通过这样周而复始的方式才实现了脚步的录制,直至程序监听到退出命令);\n[0042] 303)退出录制时点击屏幕下方的X监听图标(该步骤的实现是把保存在公用临时区信息写入到本地存储卡上,经此自动化测试脚本也就录制好了);\n[0043] 304)当步骤303)完成后程序会返回到主界面,这时选择开始测试(该步骤的机制是通过实现一个简单的文件管理器,其目的是用来管理本发明录制的测试脚本);\n[0044] 305)找到刚录制的脚本并点击,程序自动开始检测(该步骤的实现是通过找到测试脚本文件后,进而检测测试脚本是否有效,如果有效则直接进入步骤307);\n[0045] 306)若检测到测试脚本无效时,程序会提示测试员是重新录制还是取消(该步骤的实现是如果测试员选择了重新录制则直接进入步骤302),反之则取消);\n[0046] 307)程序进入解析阶段,解析完后提示测试员设置测试次数和测试延时或者点击″取消″(该步骤的实现是若是由步骤305)跳转的则直接解析该测试脚本文件并把每条解析出来的字符串添加到List集合中);\n[0047] 308)设置好后,点击“确定”后程序会根据设置的信息进行自动化测试(该步骤的实现是取得步骤307)中解析后List类后,通过循环取值的方法来取出每一条带有事件信息的字符串并通过String的spit(″,″)方法转换成一个字符串数组并根据该字符串的首个元素的值来进行判断,规则如下:\n[0048] 如果值为“0”,则取其第二个元素跟第三个元素的值来启动被测程序;\n[0049] 如果值为“1”,则取其后的所有元素的值并结合Instrumentation的send KeySync()方法发送模拟键盘事件;\n[0050] 如果值为“2”,则取其后的所有元素的值并结合Instrumentation的send PointerSync()方法发送触控事件;\n[0051] 309)在自动化测试时,程序会在屏幕上显示测试进度,中途也可手动停止测试;\n[0052] 310)当测试执行完毕后,程序会弹出对话框询问测试员是否继续;\n[0053] 311)若点击继续,则自动化测试重新开始,若点击停止,自动化测试则退出;\n[0054] 312)结束。\n[0055] 最后,以上所述仅为本发明的较佳实施例,凡依本发明权利要求范围所做的均等变化与修饰,皆应属本发明权利要求的涵盖范围。
法律信息
- 2023-08-11
未缴年费专利权终止
IPC(主分类): G06F 11/36
专利号: ZL 201210265962.0
申请日: 2012.07.30
授权公告日: 2015.02.11
- 2020-02-25
专利权人的姓名或者名称、地址的变更
专利权人由广东欧珀移动通信有限公司变更为OPPO广东移动通信有限公司
地址由523860 广东省东莞市长安镇乌沙海滨路18号变更为523860 广东省东莞市长安镇乌沙海滨路18号
- 2015-02-11
- 2013-02-13
实质审查的生效
IPC(主分类): G06F 11/36
专利申请号: 201210265962.0
申请日: 2012.07.30
- 2012-12-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-08-13
|
2008-01-21
| | |
2
| | 暂无 |
1995-11-09
| | |
3
| |
2012-01-11
|
2011-09-05
| | |
4
| | 暂无 |
2010-11-09
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |