原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6697535

本文章的前提:已经安装了Eclipse和ADT。android SDK也下载完毕。Eclipse里面已经设置好了android SDK。

本文章将系统的介绍Android调试的各个工具。讲的会比较细,希望对大家有所帮助。

写到后面有些偏题了。实际上已经在介绍Android工具了,不仅仅是在Eclipse上的。不过没关系,现在都讲究扩展么,就当是扩展话题吧。^_^

今天讲的是猴子。猴子?猴子跟Android有什么关系?听我说来。猴子-monkey

Moneky

1.       引子

记得听朋友说过,三星的手机在出厂的时候,需要经历一项很严格的测试。有一台测试机,模拟人去点击手机的各个按钮和屏幕,不断重复的随机操作,一定要保证不死机。虽然对韩国人印象很不好,但是客观的说,这个方式也说明了他们严禁的一面。

诚然,每个手机制造商大概都会有类似的测试(山寨机不知道有没有哦)。手机的使用环境十分复杂,任何情况都有可能发生,而手机程序必须健壮到足够的经受各种操作。

2.       定义

Monkey是Android中的一个命令行工具。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对手机应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

Monkey的一些特点

1、测试的对象仅为应用程序包。

2、 Monkey测试使用的事件流数据流是随机的,不能进行自定义。但是可以指定随机数种子,也就是说可以重复再现。

3、可对测试的对象,事件数量,类型,频率等进行设置。

3.       用法

monkey是根植在Android系统中的。可以用adb shell进入Android命令行后输入monkey启动,也可以直接用adb shell monkey启动。我们假设已经用adb shell进入了Android命令行模式。

一个最简单的例子:

#monkey -p com.android.browser 500

马上切到手机上或模拟器上去看。哈哈,是不是屏幕在发疯似的乱跑?

最后,屏幕上会显示出模拟运行的结果。

如果程序运行过程中,出现了异常抛出,则monkey test会立即停止,并且在屏幕上输出异常堆栈。赶紧改bug吧。

4.       伪随机测试

这里又有问题了。monkey test是伪随机测试,也就是说,操作都是随机产生的。我这次发现了bug,但是我再次运行同样的命令,bug就不再出现了。这可怎么办啊。

这里需要简单的讲一下随机和伪随机。真正的随机,是完全不可重复和定义的。也就是说,从理论上是无法定义下一个随机数到底是什么。

那么在计算机里,能不能实现随机数呢?至少到目前,还不行。那我们用的随机数都是哪里来的呢?我们现在常用的是一种伪随机算法,也就是说无限接近随机,但是没法完全达到随机。

伪随机算法都需要一个种子。一系列的随机数,一般的做法就是把上一个随机数作为下一个随机数的种子。可以这么理解,伪随机数算法相当于是一个函数, 入口是一个种子,出口是一个伪随机数。我们可以无限逼真的制造种子,例如种子里面加入当前时间的因子,加入计算机一些硬件编码的因子,以保证伪随机数足够 的“随机”,但是,我说的是但是,相同的种子,出来的伪随机数还是相同的。

我们这里就不具体描述伪随机数算法了。前面说的一切,重点就是最后一句话:

相同的种子,出来的伪随机数还是相同的。

现在,我们再来理解monkey test。测试开始的时候,monkey会根据一个伪随机数种子,后面的序列将根据这个伪随机数种子依次产生。也就是说,第二次操作的种子是第一个操作的 伪随机数,第三次操作的种子是第二次操作的伪随机数。也就是说,我们第一个给的种子相同,那么monkey test的操作序列就是一样的。

我们再来看monkey test的运行结果:

** System appears to have crashed at event 48 of 500 using seed 0

系统在500个操作的第48个操作里出现了异常,用的种子是0。0就是伪随机数的种子。

我们下次想用相同的操作序列再现这个异常,只需要

#monkey -p com.android.browser -s 0 500

当然,这个操作也是需要相同的起点的。也就是说,第一次monkey test之前,画面是停在空白主页面,第二次monkey test之前,画面停在淘宝网主页,那么即使使用相同的随机数种子,现象还是会不一样的。

如果条件完全相同,随机数种子也给的是相同的,而现象还是不一样,异常还是不一定,那么,找找程序里是不是有什么不定因素吧,这就是程序的健壮性不够。不是每次都出现的BUG,才是最头疼的,谁说不是呢 :)

转载于:https://www.cnblogs.com/stephen-init/p/4049644.html

Android工具 - 随机测试(猴子)相关推荐

  1. 【Android工具】更新手机视频流媒体客户端播放器OPlayer

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 之前分享的"安卓魔力播放器moliplayer绿色无广告(2.8.10.83 ...

  2. 【Android工具】安卓应用市场哪家强?chrome浏览器apk下载插件,play安装包下载,妈妈再也不用担心我找不到安装包了...

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 确切的说应该是PC工具,但是下载的是安卓应用安装包,还是放[Android工具]里感觉 ...

  3. 【Android工具】高端DLNA音乐播放器Hi-Fi Cast 来自play

    好久没分享安卓手机上好用的应用了,今天分享一个DLNA音乐播放器,这款软件不仅界面高大上,重点是他支持DLNA功能,可以实现随时播放音乐,而不占用设备的存储空间(只占用一个设备的存储空间) 说到DLN ...

  4. android 音频合成_【Android工具】用手机测量噪声的工具软件,噪声仪分贝计,量化噪声声音工具...

    今天分享一个通过手机麦克风测量环境噪声的工具--声级计(噪声仪). 本来是要分享另一款的,但下载下来的是xapk的安装包,太麻烦了,功能差不多,大家就先用这款吧,有条件的朋友可以去play自己下载. ...

  5. Android工具HierarchyViewer 代码导读(3) -- 后台代码

    在上文中,我们讲解了如何把HierarchyViewer的项目导入到Eclipse中,以便更高效阅读代码.本文将讲解HierarchyViewer的后台代码,建议大家可以先阅读<Android工 ...

  6. 【转载】Android 工具-adb原理

    2019独角兽企业重金招聘Python工程师标准>>> Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的. Android Debug ...

  7. Android 工具类

    前言 相信用过工具类的各位仁兄都觉得工具类好用,小弟不才,今天斗胆拿出自己感觉比较顺手的工具类. 1.Activity控制类 public class ActivityCollector{//acti ...

  8. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  9. ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。

    DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...

  10. 【Android工具】更新谷歌服务安装工具,小结谷歌play安装注意事项

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天需要给坚果pro3安装play等你懂的软件,遇到一些问题,今天把相关安装相关事项汇 ...

最新文章

  1. 转: 网卡名字eth0,eth1的修改方法
  2. 014_TimePicker时间选择器
  3. [转]ExecuteNonQuery()、ExecuteReader()、ExecuteScalar()的简单说明
  4. bzoj 3277 串 后缀树+子树不同数个数
  5. 在 vue 组件中查看 vuex 定义
  6. SAP UI5 jQuery.sap.setObject
  7. ADI官方源码快速搭建demo工程验证设计的正确性
  8. 信息奥赛一本通(1839:【05NOIP提高组】谁拿了最多奖学金)
  9. eclipse里source的快捷方法_教你如何在Linux中设置快捷方式图标
  10. 松下伺服电机pwm控制连线_从零打造树莓派家庭监控 (一): 伺服电机控制
  11. Altium Designer 20的安装教程
  12. 三边定位的最小二乘法运用
  13. Linux之sqlite3使用
  14. python爬取网课答案_高校邦网络数据采集与Python爬虫【带实验】网课答案
  15. Python selenium —— selenium与自动化测试成神之路
  16. linux下 oracle怎么导入dmp文件
  17. 从数学上推导伴随矩阵特征值
  18. PYTHON对接语音验证码接口API
  19. 【CSS】calc 函数(动态计算长度值)
  20. 对我的数据分析工作帮助很大的“无用知识”

热门文章

  1. 毛笔行书书法-黄鹤楼
  2. Java经典书籍推荐
  3. 基于CISe@ZnS新型近红外二区量子点生物探针(CuInS2/ZnS量子点,Cd掺杂ZnO量子点,InP/ZnS,荧光Ag2S量子点)
  4. 葫芦娃系列棋牌服务器在哪里,葫芦娃—【关服】葫芦娃关服公告
  5. 3D动画制作流程概要
  6. 【学术】分享几种论文写作神器,提高你的写作效率
  7. vue中头像加载不出来,怎样设置默认头像
  8. 基于qt linux的视频监控,基于Qt和OpenCV的无线视频监控系统
  9. valgrind:内存泄漏 memory leak 调试教程
  10. redis修改密码(windows)