monkey测试详讲

为啥要进行稳定性测试

1、APP崩溃率过高,但是日常功能测试、系统测试均无法将崩溃、anr提前暴露,

2、稳定性测试可以观察在:一个运行周期内、一定的压力条件下,

软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。 

稳定性测试包含啥

稳定性测试一般包括压力测试、容错测试、兼容性测试等多种测试方式,以满足APP的稳定性和可靠性要求。稳定性测试的主要目的是检测APP的缺陷和漏洞,为开发者提供改进和优化的方向

举个栗子:

adb shell monkey -p com.xxx.xx(被测应用包名) --pct-touch 30 --pct-motion 30 --pct-nav 10 --pct-majornav 15 --pct-appswitch 10 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --throttle 200(每个时间之间的间隔,单位ms) -s 123456 -v 6000(monkey事件的次数)> ~/Downloads/crash.txt

参数介绍

-p:包名

-s 随机生成seed值,避免每次都执行monkey的路径一致

-v 6000 点击6000次,这里的v是设置日志级别,默认是一个-v,如需更详细的日志可以加多一个-v,最多3个-v

>~/Downloads/crash.txt. 存放的地址

—pct-touch 30%  点击触摸事件30%

—pct-motion 30%  滑动事件30%

--pct-trackball轨迹球事件30%

–pct-majornav  主要导航事件百分比

–pct-pinchzoom  缩放事件百分比

–pct-nav  基本导航事件百分比(来自于方向输入设备的上下左右操作)—用的少

–pct-majornav 主要导航事件百分比   (即Navigation Bar的确认,菜单,返回键等)

–pct-syskeys:系统按键事件(系统保留按键,如HOME键,BACK键,拨号键,挂断键,音量键)

–pct-appswitch:应用启动事件--这种事件偏低

–pct-anyevent:其他未提及事件

--pct-rotation 屏幕旋转事件

--pct-flip 键盘事件(主要是指一些与键盘相关的操作。如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等)

--throttle 每个事件固定延迟毫秒

--ignore-crashes。(通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。)

--ignore-timeouts

通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

如何通过脚本运行monkey

adb shell monkey -f 指定脚本路径path 次数

adb shell monkey -f E:\test  10

maxim使用

原理:Maxim是基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim

相关资料:https://testerhome.com/topics/11719

为啥使用fastmonkey?

1、速度快 ,每秒10-15个action事件(界面控件解析算法通过改造底层 framework,直接使用 AccessibilityNodeInfo 并优化减化其调度流程,解析速度控制在 50ms 内,可对界面变化做快速反应。)

2、防止跳出APP(控件解析时获取进程推栈 Top Activity,按非白即黑立即执行切回。各事件执行时按特有逻辑屏蔽掉状态栏,防止误操作)

3、防止休眠(休眠时自动检测并唤醒屏幕。)

4、熔断机制(当事件按某个特有模式固定执行一段时间时则自动触发熔断开始自拉活,防止假死。如重复点击同一位置 n 秒。)

5、场景细粒度(引入 Activity 黑白名单,可控制限定在某些场景内。如只测试某几个相关页面)

6、随机自动输入:检测当遇到可输入模式时,按设定(ape.string)或随机输入键盘事件。如输入 666 或 2333 弹幕   。随机输入 需要提前安装 adbkeyboard    https://github.com/senzhk/ADBKeyBoard

7、崩溃堆栈自动保存;当崩溃(crash、oom)发生时自动抓取,并存于/sdcard/crash-dump.log

8、多平台多系统兼容 5-9(可以下载)

9、轻量极简

如何使用maxim

1、在github:https://github.com/zhangzhao4444/Maxim,下载framework.jar,monkey.jar

2、将framework.jar和monkey.jar push进入手机的/sdcard目录下

adb push framework.jar /sdcard

adb push monkey.jar /sdcard

3、执行cmd命令

adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p  XXX(APPID) —uiautomatormix(策略模式) —running-minutes 60(运行时间) - v  -v —throttle 400 —output-directory  /sdcard/XX/

参数解说

1、tv.panda.test.monkey.Monkey 主调入口。无需修改

2、-p com.duowan.xunhuan 待测appid

3、策略模式

--uiautomatormix 混合模式(70% 控件解析随机点击,其余 30% 按原 Monkey 事件概率分布) 

--pct-uiautomatormix n 可自定义混合模式中控件解析事件概率(类似--pct-nav 5%)

--uiautomatordfs DFS 深度遍历算法(优化版)(注 Android5 不支持 dfs)

--uiautomatortroy Troy 模式 ( 1first 2select 3last 并屏蔽 black 来执行遍历操作) 

4、采用崩溃回溯截图:运行时 shell 增加 --imagepolling 参数,开启崩溃回溯截图、关闭原截图逻辑

当崩溃发生时 进行截图保存,实现可回溯崩溃场景,默认会在 /sdcard/crash_$timestamp/图

因此需要配置 max.config

max.takeScreenShot = true    开启截图

max.flushImagesThreshold =xx 回溯区间大小 xx 张

max.savePageSource = true 保存 xml

截图的生效条件: throttle > 200 && max.takeScreenShot = true && —imagepolling

5、将日志、截图、crash、anr traces,pagesources.xml 保存在output目录。--output-directory /sdcard/XXX

如何分析日志

程序无响应的情况:搜索关键字ANR in

崩溃的情况1:搜索关键字CRASH

崩溃的情况2:搜索关键字Exception

Jenkins自动化配置持续集成获取崩溃日志

通过服务器远程adb connect ip 连接到手机,将新包安装到该手机,并执行monkey脚本后,将崩溃日志上传到workspace,生成构建后文档,直接下载此文件即可获得崩溃日志

相关配置:https://www.cnblogs.com/-lisunman/p/13932642.html

—后记 crash和ANR区别

ANR :application not running 。页面停止响应,弹出dialog提示程序无响应。

原因:主要是由耗时操作导致,大体为:网络操作,文件/数据库的读写

缓解ANR的方法:多开线程,避免在主线程做耗时操作,尽量其他线程处理完再返回给主线程。

crash:奔溃。弹出dialog提示用户应用已崩溃。

原因:异常的出现,并且没有捕获到

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

推荐阅读更多精彩内容