网上介绍Monkey用法不计其数。我也不想炒剩饭,写的和他们一样。Monkey基本原理是伪随机算法。这个算法我想大致介绍下(不感兴趣的朋友情无视它)。伪随机数,或称伪乱数,是使用一个确定性的算法计算出来的似乎是随机的数序,因此伪随机数实际上并不随机。在计算伪随机数时假如使用的开始值不变的话,那么伪随机数的数序也不变。伪随机数的随机性可以用它的统计特性来衡量,其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系。伪随机数的优点是它的计算比较简单,而且只使用少数数值很难推算出计算它的算法。

每个伪随机数列都有一个Seed,我们叫种子数,它是生成伪随机数的一个参数。有了它我们可以随机的生成一种不重复的数字。为了证实谷歌的Monkey用了伪随机算法,我们必须深入到Monkey源文件看看才知道。

获取Monkey的源代码方法有二:直接去谷歌官网查找,可惜我没找到;第二种方法:打开eclipse,启动一个模拟器,切换到DDMS视图,你也可以用真机,但是必须得root才能随意查看文件。启动FileExplorer,找到system/framework/monkey.java.用jd-gui-0.3.5反编译工具查看。然后我们拷贝到eclipse里面查看代码

看下图MonkeySourceRamdom306和307行。明眼的人一看就是导入java.util.math的随机函数。

那有人说,那seed从何而来呢?不要着急,在189行,

用.setSeed方法来设置种子,这个参数到使用的时候才生效,因为是用户输入的。

从上面枯燥的源代码中,我们看到了Monkey的基本原理,那我们该如何使用呢?别着急,在/system/bin目次下有一个monkey的shell脚本。内容如下。

哈哈,看到这个,我们可以用exec外部命令启动它,对就是adb shell。进来就linux命令了,是不是感觉到世界又变得美好一些了?很多人不知道adb是什么,全名叫安卓调试桥接(android debuge bridge),意思是通过命令行和设备交互调试。基本上市面上所有自动化工具都是用了这个接口,包括你去刷机器,开root,都少不了它。

你用adb shell进去看看。然后运行monkey+回车

帮助文档就出来了,是不是很简单。到此你可以不用看任何人写的文档,都是谷歌提供给我们的,不知道问谷歌。不需要问其他人,包括百度。

对于测试一个简单app应用,我们完全可以用一行代码来完成。比如你应用程序包名叫com.tencent.mta。这里啰嗦两句,android系统识别应用程序的唯一性是靠包名+签名(这个第6讲后会详细说明,现在说扯得太远)。一个简单的monkey脚本命令是:

monkey  -p com.tencent.mta –v 100

这里没有指定种子数,-p后面是包名,v后面是生成多少个点,速度是一秒8个。很快吧。当然平时测试app应用需求很复杂。不会这么简单的使用。一个比较完备的monkey测试必须用到一些高级参数:monkey -pcom.tencent.mtaexample -s 23  --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

1.   -p后面接着的对应的包名,如果是整机测试,就不需要 -ppackage_name

2.   -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。

3.   --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。

4.   -v 指的是Monkey测试时打印log级别。

5.   100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。

/data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。

6.   2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。

7.   最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。

8.   测试所有模块  monkey  -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

总结:这篇比较简单,但是实用性特别强。不懂技术的人都可以灵活使用,对没有时间写自动化脚本和框架的同学,或者在版本很忙的时间可以偷懒用用,对工作中帮助很大。下一篇,第四篇。笔者会给大家介绍谷歌升级版本的MonkeyRunner。做自己适合的自动化脚本。

下面是金阳光测试资料!

金阳光自动化资料+视频:

1.官网:http://www.goldensunshine.cc/
       2.关注官方新浪微博:金阳光woody
       3.百度搜:金阳光 测试,找到金阳光老师视频
       4.更多最新视频在qq群:212260449更新

5.资料csdn博客:http://blog.csdn.net/haorenmin2008

6.金阳光微信公众账号:搜索金阳光自动化

【金阳光测试】--深入Monkey工具和使用--Android系列(3)2014年八月八号相关推荐

  1. 【金阳光测试】基于控件核心技术探讨---Android自动化系列(2)---2013年5月

    第一讲分享了下安卓自动化一些概况和一些自动化框架现状和技术能够解决什么样的问题.这次课就深入到android世界里面.遨游.翱翔,深入了解自动化测试核心技术. 搞过编程开发的同学听到instrumen ...

  2. 【金阳光测试】大话Android自动化测试--Android自动化系列(1)--金阳光于2013年4月份

    Android自动化测试框架和工具在四年多的发展日趋成熟.从五年前的第一代自动化架构演进到目前第四代(本系列讲座第7篇后将详细剖析第三代和第四代自动化框架)从以前最早谷歌推崇的monkey随机测试工具 ...

  3. 【金阳光测试】Android自动化测试第一季第零讲--预备知识

    百度传课: http://www.chuanke.com/v1983382-106000-218422.html http://www.chuanke.com/v1983382-106000-2184 ...

  4. 【金阳光测试】Android自动化测试第一季第二讲--MonkeyRunner

    百度传课: http://www.chuanke.com/v1983382-106000-218426.html 1.  理论知识和脚本演示 地址:http://developer.android.c ...

  5. 【金阳光测试】Android自动化 -- 学习历程:自动化预备知识上下

    章节:自动化基础篇--自动化预备知识上&&下 网易云课堂: 上:http://study.163.com/course/courseLearn.htm?courseId=712011# ...

  6. 金阳光测试:单元测试第九讲ppt+源代码+视频

    金阳光测试:单元测试第九讲 金阳光测试:单元测试第九讲ppt+源代码+视频 http://goldensunshine.cc/409.html 转载于:https://www.cnblogs.com/ ...

  7. 【金阳光测试独家播出】-IOS专项测试体系预告-7.20号更新第一集

             You are my pretty sunshine,没有你的世界好好坏坏,只是无味空白--(PS: 前段时间电视剧<何以笙箫默>热播,无论是喜欢"高帅冷& ...

  8. 【金阳光测试独家播出】公益视频讲座:WEB自动化测试预告-7月11日更新第一集

      如果学习测试的我们是花千骨,那么金阳光测试就是白子画,个人学习免费教; 如果做测试的我们是赵默生,那么金阳光测试就是何以琛,解决一路测试中的问题; 如果提升测试的我们大熊,那么金阳光测试就是哆 ...

  9. 【金阳光测试】Android自动化测试第一季第三讲—Monkey原理初步和改良优化

    百度传课:http://www.chuanke.com/v1983382-106000-218427.html 一.理论知识: 官方文档:http://developer.android.com/to ...

最新文章

  1. 机器学习-分类之多层感知机原理及实战
  2. 百度大数据可视化产品矩阵
  3. securecrt自动发送空格防止session卡死
  4. php access allow,PHP标头不适用于Access-Control-Allow-Origin
  5. sonar java_修复Sonar中常见的Java安全代码冲突
  6. ios html清除缓存图片,iOS,如何清理缓存的图片
  7. 白板机器学习笔记 P9-P12线性回归
  8. 树莓派使用 USB 摄像头做网络监控
  9. Ubuntu 16.04安装Markdown编辑器MarkMyWords
  10. 区块链软件公司:食品溯源+区块链
  11. 高德地图在android上的开发汇总
  12. Linux-war包解压与压缩
  13. VS软件版本号定义、规则和相关的Visual Studio插件
  14. 社区团购小程序开发安装教程(基于yii框架+PHP)
  15. 2022-4-21 适用于Orange Pi(香橙派) Zero/Zero2的kali 操作系统分享
  16. Eclipse修改为中文版
  17. laravel生成微信公众号带参数二维码并响应扫描带参数二维码
  18. spring关于Aspect、Joinpoint、Advice Pointcut的区别
  19. 助力文化荟萃,区块链或可打造“新”春晚?
  20. TS7016: Could not find a declaration file for module ‘@/api/checkitem.js‘.解决办法

热门文章

  1. 口播类抖音知识干货账号,是最容易变现的
  2. 线程的4种创建方式及区别
  3. 基于深度学习的验证码破解实战【源站图像数据采集+图像预处理+图像切割+模型识别分析】
  4. BNF 范式(巴科斯范式)简介
  5. 关于GPT4权力追求的担忧
  6. 【软件测试笔试题】阿里巴巴(中国)网络技术有限公司
  7. 服务器cpu性能排行2019,2019年cpu排行_2019年cpu推荐_2019年cpu天梯图 _2019年度横评_太平洋电脑网PConline...
  8. 企业如何做客户分级和团队分组?
  9. mysql存储过程 cast_mysql 存储过程参考 - 木鱼若愚 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  10. 如何统计一天24小时每个小时的数据量