核心目标
验证App长时间运行,反复操作,各种干扰不Crash,不ANR,无内存泄漏,不死机,数据正常。
*
判定标准
无崩溃(crash),无ANR,OOM,长时间运行内存不持续上涨,功能可正常恢复。
*
前置准备
准备被测APP,拿到包名:
#获取包名
adb shell pm list packages|findstr xxxx
提前清理:关闭自动锁屏,省电,弹窗,自动更新,保证测试不被打断;开启日志抓取
*
测试工具
###### Monkey
Monkey发送随机点击,滑动,按键,切换Activity等事件,自动检测崩溃,ANR,是稳定性标配工具。
###### 常用命令:
adb shell monkey -p shturl.cc/O --throttle 300 -v -v -v 100000 > D:\test\logcat\monkey_log.txt
#-p:指定对应的包
#COUNT 100000 :事件总数数(运行事件的时间*延时时间)
#--throttle 300:每个事件间隔300ms,模拟人操作节奏
#-v-v-v:三级详细日志,方便定位问题
#<D:\test\logcat\monkey_log.txt :输出日志到本地文件
#通过事件数量来测试稳定性
###### 实用增强参数(企业常用):
adb shell monkey -p shturl.cc/O --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 100000 > D:\test\logcat\monkey_log.txt
#--ignore-crashes:崩溃后不停止,继续跑(长时间稳定性适合)
#--ignore-timeouts:ANR超时不终止
#--pct-touch 60触摸占比;--pct-motion 20 滑动;--pct-appswitch 10页面切换,可自定义事件比例
###### Monkey 日志怎么看
日志末尾关键词:
1. CRASH --\> 应用崩溃
2. ANR --\> 应用无响应
3. OOM --\> 内存溢出
###### 专项稳定性场景(Monkey覆盖不到,必须手工/脚本)
Monkey随机,不能保证走核心业务流;需要固定业务场景循环跑:
* 工具:Appium
* 思路:写脚本按业务路径循环N小时,持续断言页面正常,监控crash,内存,FPS
* 适合:核心流程长时间稳定性,比Monkey更贴近真实用户
###### 面试常问要点
* Monkey本质:随机事件压力测试,优点简单高效;缺点:无业务逻辑,路径不可控
* Monkey不能替代业务循环稳定性
* 稳定性重点看:Crash,ANR,OOM,内存泄漏,后台保活,干扰场景