收藏 分享(赏)

Android 自动.ppt

上传人:scg750829 文档编号:10044548 上传时间:2019-10-01 格式:PPT 页数:27 大小:1.81MB
下载 相关 举报
Android 自动.ppt_第1页
第1页 / 共27页
Android 自动.ppt_第2页
第2页 / 共27页
Android 自动.ppt_第3页
第3页 / 共27页
Android 自动.ppt_第4页
第4页 / 共27页
Android 自动.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、自动化测试,分享人:李洪波 2012-05-28,交流对象: 手机端软件测试人员,思考问题及总结,6,Monkey与MonkeyRunner概述,2,Monkey的基本使用方法,3,4,5,MonkeyRunner的基本使用方法,实际操作及举例说明,目 录,自动化测试背景与前言,1,自动化测试背景,自动化测试的背景,软件测试是软件产品开发过程中的重要环节。测试对于发现软件中缺陷,保障软件的质量具有重要意义。统计表明,软件测试的时间通常占到软件开发时间的 40%,一些可靠性要求高的软件甚至高达 60%以上。手工测试和自动化测试是软件测试的两种基本手段,二者相互补充,不可相互替代。其中,自动化测试

2、能捕捉到资源冲突、多线程、死锁等手工测试难以发现的错误,可以高效的完成大量机械性、重复性测试,能模拟大量数据或大量并发用户等应用场景,从而有效的缩短软件测试周期,提高测试的可靠性及准确度。,最近很多公司开始研究Android自动化测试方法,整理了一些工具、方法和框架,其中包括android测试框架,CTS、Monkey、Monkeyrunner、benchmark,以及其它test tool等等 。 目前看来,monkey这个程序其实并不完善,有些功能连官方文档都还没更新,不过,作为折腾应用的使用还是足够的,看着自己的程序在模拟器中不断的被折磨接下来要讲就是Monkey-及进化的MonkeyR

3、unner,有时候,我们要折腾一下程序,健壮不健壮,然后,找个上幼儿园的的弟弟/妹妹,把手机交给他/她,让他/她胡乱的按,看你的程序能不能接受这样的折腾,但是,我们身边不可能都有正太和萝莉,也不能保证他们拿到手机以后不是测试软件的健壮性,反而测试你的手机经不经摔,这与我们的期望差太远了毕竟咱们是来软的不是来硬的当然,这世界牛人一把把的。然后,google公司考虑到我们的需要,找某个牛人把程序集成到了比较新版本的SDK R8(即 android 2.2以后),然后,就有了下文。,前 言,随着越来越多的手机厂商、运营商、开发商加入Android阵营,带来了各种美化和制度Android系统,同时An

4、droid Market的应用数量增长迅速。这都离不开测试,Android自动化测试的需求愈加迫切。,自动化的 UI 测试,工具的难度指数,Monkey,Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如模拟用户触摸屏幕、滑动Trackball、按键等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。,Monkey与MonkeyRunner概述,MonkeyRunner,如果,把现阶段的monkey比做是幼儿园的小孩,那么monkeyrunner就是一个初中生了它支持自己

5、编写插件,控制事件,随时截图,简而言之,任何你在模拟器/设备中能干的事情,MonkeyRunner都能干,而且还可以记录和回放!,Monkey入门课程,可以通过开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adb shell来达到目的,也可以进入Shell后直接输入Monkey命令。基本语法如下: $ adb shell monkey options 如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动

6、指定的应用程序,把调试等级加了1,并向其发送500个伪随机事件: $ adb shell monkey -p your.package.name -v500,monkey的基本用法,随机测试的使用方法比较简单,可参考下述参数表,这里举一个例子进行说明。 假设现在要测试安全秘书,我们可输入如下命令: adb shell monkey -p com.bbktel.securesecretary -pct-touch 50 -pct-motion 50 -v 1000 命令解释: -p后面接的是要测试的包名,安全秘书的包名为com.bbktel.securesecretary -pct-touch

7、50 指的是touch事件所占的百分比为50 同理-pct-motion 50指的是motion事件所占的百分比为50 -v 使反馈信息级别增加1,其默认值是0 而最后的1000,则表示发送1000个随机事件。 详情可参照下面提供的参数表格。 注意:自己指定的百分比之和不能超过100,否则会出错,随机测试实例说明,参数列表,命令选项参考,常用指令详解,这么多参数,对于新手来说看起来好像很枯燥,很难懂,即使看完了选项也不知道如何使用。首先我们应该明白我们不可能使用monkey来制定做一样测试,重复做很多次,因为monkey是伪随机的,就是说虽然有一定规律可循,但是并不是我们就可以指定动作,但是我

8、们可以通过添加命令选项来将操作限制在一定的范围内。,下面我们来看下这条指令: monkey -v -p com.android.camera -throttle 5000 -pct-anyevent 100 2000,So Easy!,Log的详细度,是指定测试的程序包,设定延时,运行程序的100%比,执行次数,实体工具演示,注:图仅供参考,BBKMonkeyTes工具这是步步高公司由开发用脚本优化后的一个智能机自动化测试的工具,使用方法较为简单!,注:左图仅供参考设置好参数后,点击”执行”按钮开始随机测试,Monkey测试完成后,会在脚本所在目录生成一个文件夹,里面有此次测试的logcat日

9、志,还有Monkey测试的日志。 注:在LOG中查找关键字去分析异常、错误日志。,实体工具演示,使用Monkeyrunner进行自动化测试,需要搭建一系列的开发环境。 参见:Android环境搭建.doc#如果使用SDK AND AVD Manager来安装会比较困难,建议离线安装。参考:http:/ #ADT的安装较容易,建议自己下载最新版本。参考:http:/ 安装方法:从安装包中解压出features与plugins文件夹置于新建文件夹ADT中,并将ADT文件夹放在与Eclipse开发环境同级的dropins文件夹下,如图:,Android环境搭建,JDK安装,Eclipse安装,And

10、roid SDK安装,Monkeyrunner课程,一、如何使用Monkeyrunner,Android自动化测试之Monkeyrunner的使用,是模拟人工的按键、触击屏幕、滑动屏幕、时延等操作来控制Android手机来达到自动化测试的效果,对比monkey功能要强大的多!它支持,自己编写插件,控制事件,随时截图,简而言之,任何你在模拟器/设备中能干的事情,MonkeyRunner都能干,而且还可以记录和回放! 可参考:Android自动化测试之Monkeyrunner从零开始.doc 1. 启动一个Android系统的模拟器,即为命令中device 2. 将cmd命令定位到android

11、SDK的路径下的tools目录 说明:由于以后这个操作用到的比较多,建议设置CMD命令打开后到指定目录,具体方法请参考:http:/ 3. 输入命令“monkeyrunner“,回车,进入Shell命令交互方式导入monkeyrunner所要使用的模块: A.直接在shell命令中输入(然后回车):from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice,MonkeyImageB.输入device = MonkeyRunner.waitForConnection(),然后回车说明:这步操作是和你打开的模拟器进行勾兑。如果你没

12、有打开模拟器而是接入 的Android手机,那么也会和手机进行勾兑;没有任何设备则会勾兑失败。 4. 到这儿,基本上算是完成了,至于参考文档中提到的传入apk则是为了对具体应用的控制;如果不传入则可以实时的控制模拟器,像您在玩自己的手机一样。 5. 确实,我们可以不必这样麻烦的一行行的输入命令,可以将这些指令都写到一个Python文件中,参考:http:/ runner测试实例,该实例是在未导入apk包的情况下做的自动化测试。1. 启动Android模拟器(类似手机)。手动调节到模拟器首页,如左图:,具体实例演示,2. 打开命令提示符窗口,将位置定位到tools文件夹下输入 monkeyrun

13、ner init.py命令,如图:,#如果与模拟器勾兑成功,则会出现以下截图。init.py文件,具体实例演示,3. 下面通过脚本来调节Android模拟器的时间 setDate.py文件,4. 运行的结果截图都保存在: tools/shotpic文件夹下,具体实例演示,5. 也可以通过LogCat查看Android日志来查看运行情况 如图:,注:图中只包含了log级别I以上的日志logcat可参见:http:/ #导入模块: from com.android.monkeyrunner import Monkey Runner, Monkey Device, Monkey Image 2. #

14、连接当前设备,并返回一个Monkey Device对象:device = MonkeyRunner.waitForConnection() 3. #安装Android包:device.installPackage(myproject/bin/MyApplication.apk) 4. #启动一个Activity(定义模拟器到指定的操作界面): device.startActivity(component=“com.flysnow.helloworld/com.flysnow.helloworld.HelloWorld“) 注:/前面是package,后面是activity名称;此时模拟器会打开

15、HelloWorld的欢迎主页 5. #截图:result = device.takeSnapshot() result.writeToFile(C:UsersMartinDesktoptest.png,png) 6. #时延(秒):MonkeyRunner.sleep(3) 7. #滑动屏幕(Python脚本):for i in range(1,70):device.drag(start,end,0.1,10) /参数依次是开始,结束,持续时间步骤 for i in range(1,70):device.drag(end,start,0.1,10)MonkeyRunner.sleep(1)

16、具体实例可参见:http:/ 8. #触击屏幕: device.touch(94,34,DOWN_AND_UP),使用技巧,9. #执行adb shell命令: device.shell(“input text goup01”) 例:按下OK键 device.press(KEYCODE_DPAD_CENTER,DOWN_AND_UP) 相应的按键对应的名称如下: home键:KEYCODE_HOME back键:KEYCODE_BACK send键:KEYCODE_CALL End键:KEYCODE_ENDCALL 上导航键:KEYCODE_DPAD_UP 下导航键:KEYCODE_DPAD_

17、DOWN 左导航:KEYCODE_DPAD_LEFT 右导航键:KEYCODE_DPAD_RIGHT ok键:KEYCODE_DPAD_CENTER 上音量键:KEYCODE_VOLUME_UP 下音量键:KEYCODE_VOLUME_DOWN power键:KEYCODE_POWER camera键:KEYCODE_CAMERA menu键:KEYCODE_MENU,adb shell常用命令,四、Monkeyrunner自动化测试的记录和回放,在前面的命令行操作还是脚本之中,对于那么多的指令以及点击某个点的具体坐标我们都不可能记住!怎么办?我们可以使用文件monkey_recorder.p

18、y对操作进行录制。具体的文件下载地址:http:/ 1. 启动Android模拟器。手动调节到模拟器首页2. 打开命令提示符窗口,定位到tools文件夹下输入 monkeyrunner,monkey_recorder按回车键。如下图:,自动化测试的记录和回放, 3. 使用说明:,Android模拟器之录制,4.对保存的.mr文件,在cmd命令行下运行: monkeyrunner,monkey_recorder.py test.mr 便会看到模拟器执行刚才一样的操作。,参考文献:http:/ 针对传统日志方案的不足之处,我们可以有的放矢,根据它的不足提出改进方案。主要思路有以下两点: 1. 体现

19、错误发生的过程,而不仅仅是结果; 2. 以更简单的方式来表达出更多的信息。,日志改进思路!,改进的措施如下:1. 按固定的时间间隔截屏;并建立缓冲区,存储最近一段时间内的截图。该缓冲区是一个先入先出队列,只存储最近一段时间内的截图,随着自动测试的运行,框架会按照固定时间间隔不断地截屏,存入缓冲区。缓冲区可以有两种实现方式:指定逻辑长度,用来储存某个测试用例执行时的所有截图;或者是指定物理长度,只存储一定数目的截图。2. 一旦在自动测试运行过程中发生错误,所有被缓冲的截图都被收集起来,并转化为动态图片(GIF格式,PNG格式,SVG格式等等)。动态图片按时间顺序展示了运行过程中若干副截图,效果类似于视频片断,真实地再现了当时的测试过程。鉴于测试过程中并非每时每刻都是关键操作,以及测试软件对测试对象的定位也会占用一定的时间,所以并没有必要以过高的频率截屏,通常来说,每秒1帧或2帧已经可以满足再现过程的需求,我们将它称为“伪视频”片断。 总 结:通过新日志方案的说明,我们可以明显体会到这点:测试人员能够直观地了解自动测试过程,快速定位测试脚本或软件缺陷导致的错误成因,从而高效地优化测试脚本或填写测试报告。,工作中多思考、多总结!,Question?,思考?提问!,谢谢观赏,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报