测试之monkey

简述:

Monkey起源:

Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar。Monkey配套执行shell脚本存放路径是:/system/bin/monkey。

Monkey作用:

Monkey用于进行压力测试(软件稳定性测试,向系统发送伪随机用户事件流实现压力测试。解放双手,告别点点点。)。 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的异常问题。

Monke优缺点:

优点:提升应用稳定性,能测出一些不可知的情况还有手动点点点无法测出的问题。

缺点:一般用来测试UI问题,局限性很明显。

一、Android之monkey

操作步骤:

1、安装adb(monkey测试使用的是adb命令,因此只需要配置即可);

2、安装JDK

3、adb安装及环境配置(adb命令工具为使用方便这里默认选择放在c盘):

使用adb命令前提:安卓手机必须设置为开发者USB调试模式。

我的电脑->属性->环境变量->path->编辑->新建  填入adb路径(C:\Users\haoku\platform-adb-tools)->保存

4、检测是否有monkey环境:

a、进入设备

adb shell

b、进入指定目录:

cd:/system/framework/

c、查看monkey.jar:

ls

执行结果

d、查看monkey执行之shell脚本(Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey 这样就可以通过在shell窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。)

cd:/system/bin/

ls

执行结果

5、测试安装包

a、获取安卓包名:

首先手机端运行待测项目,然后终端命令:

adb logcat >C:\Users\haoku\Desktop\testOne.txt

示例

再“Displayed”关键字搜索testOne.txt即可找到包名

b、手机设置

为保证monkey测试正常进行,需设置屏幕休眠时间间隔越长越好(可调永不休眠最佳,没有此项的应选最大时间值)。

c、运行monkey

C:\Users\haoku>adb shell monkey -p com.xxxxx.xxxxxx -v 3000 >C:\Users\haoku\Desktop\test.txt

d、测试停止后,查看导出的monkey日志,发现问题。

在log(test.txt)的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

首先查看log日志,搜索“ANR ”看是否出现了ANR(异常或无响应问题),

然后在日志中搜索“Exception”崩溃异常,快速定位到关键事件信息,

最后查看Monkey里面出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发。

6、monkey语法

monkey -p com.xxxxx.xxxxxx -s 23  --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>C:\Users\haoku\Desktop\test.txt 2>&1 &

详解:

        a、  -p后面接着的对应的包名,如果是整机测试,就不需要 -p package_name

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

        c、 --throttle <毫秒> 指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。

        d、  --ignore-crashes --ignore-timeouts

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

        e、  -v 指的是Monkey测试时打印log级别。

-v:最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息

-v  -v :提供了较为详细的测试信息,如逐个发送到Activity的事件信息

-v  -v  -v :提供了更多的设置信息,如测试中选中或未选中的Activity信息

常用:-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用

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

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

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

        l、  测试所有模块  monkey  -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> C:\Users\haoku\Desktop\test.txt 2>&1 &

另附:

--ignore-security-exception  作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

--pct -touch  作用:调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等

--pct -motion  作用:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁

--pct -trackball  作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁

--pct-nav  作用:导航,现在手机基本没有导航了

--pct-syskeys  作用:按键消息比例,主页、后退、音量增减

--pct-anyevent  作用:其他不常用的按键比例的设置,不常用

--hprof  作用:monkey测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间

--ignore-security-exceptions  作用:忽略权限问题的

--kill-process-after-error  作用:当错误发生时杀进程

--monitor-native-crashes  作用:监视崩溃时的本地代码

adb shell kill [刚才查到的进程号]  作用:杀死monkey进程

二、iOS之Fastmonkey

简述:

Fastmonkey起源:

基于 appium 或 macaca 的开源Monkey测试工具在使用过程中出现诸多问题,比如:配置过于复制,上手慢,执行速度达不到测试要求、有的还需要进行App源码插庄,直到Faskmonkey的出现,它集众家之长,已经基本满足iOS压力测试。

Fastmonkey优点:

无需插桩、高效率、每秒4-5个action、轻量极简。

1、Fastmonkey配置

a、Fastmonkey 下载:

xcode9.2版本

b、brew 安装 Carthage,用于iOS下载工程所依赖第三方库:

brew install  carthage

c、Fastmonkey之Xcode(XCTestWD)工程配置过程

首先下载工程依赖包:

carthage update

更新工程依赖包

然后如下配置:

配置值删除:

清空XCTestWD的Objective-C Bridging Header选项中的值

证书配置:

格式:com.xxx.xxx
appid与上图一致

代码配置:

XCTextWDRunner配置
XCTestWDMonkey配置
Monkey配置

2、Fastmonkey执行

首先选择:XCTestWDUITests -> 真机,然后:command +“u”,Fastmonkey测试开始。

操作示意

另附:其他异常处理结果


小白一只,不足之处欢迎指正!期待Monkey爱好者一起学习进步~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容