专栏首页APP测试APP测试之Monkey压力测试(二)

APP测试之Monkey压力测试(二)

通过APP测试之Monkey测试(一),我们了解了Monkey是什么,Monkey是如何实现对APP进行压力测试,也熟悉了Monkey基本的命令,今天将在之前的基础上进行补充和拓展,一起深入接触并掌握Monkey,这之后,我们还将总结APP测试常见问题,不要错过哦!

Monkey命令组合及规范

Monkey参数的约束限制规范:

1.一个 -p 选项只能用于一个包,指定多个包,需要使用多个 -p 选项;

2.-s <seed> 伪随机数生成器的seed值,如果用相同的seed值再次运行monkey,它将生成相同的事件序列,对9个事件分配相同的百分比;

3.-c 用此参数指定一个或多个类别,同样,需要指定多个类别就需要多个-c参数;常见的类别有Intent.category.LAUNCHER、Intent.category.MONKEY;

4.-v 命令行的每一个-v将增加反馈信息的级别:

Level 0为一个-v的命令,除了启动的提示、测试完成和最终结果之外,提供较少的信息 ; Level 1为两个-v的命令,提供较为详细的测试信息,如逐个发送到Activity的事件 ; Level 2为三个-v的命令,提供更加详细的测试信息,如测试中被选中或未被选中的Activity;

常见命令组合:

1.monkey -p com.package -v 500 :简单的输出测试的信息;

2.monkey -p com.package -v -v -v 500 :以深度为三级输出测试信息;

3.monkey -p com.package --port 端口号 -v :为测试分配一个专用的端口号,不过这个命令只能输出跳转的信息及有错误时输出信息;

4.monkey -p com.package -s 数字 -v 500 :为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错;

5.monkey -p com.package -v --throttle 3000 500 :为每一次执行一次有效的事件后休眠3000毫秒;

Monkey测试参数建议

间隔时间:500毫秒;

种子数:随机;

遇到错误:不停止;

执行时长:每机型不小于12小时或点击次数:100万次;

机型覆盖建议:覆盖高中低端机型

不同芯片平台(高通、海思、MTK等)

不同分辨率(480*800以上主流分辨率)

不同安卓版本(安卓4.0以上主流安卓版本);

Monkey参考命令

adb shell monkey -p com.tencent.XXX(替换包名) 
--throttle 500 
--ignore-crashes 
--ignore-timeouts 
--ignore-security-exceptions 
--ignore-native-crashes 
--monitor-native-crashes -v -v -v 1000000>d:\monkeyScreenLog.log

测试可以发现的问题

Android平台应用程序可能产生以下四种Crash:

App层(JAVA应用程序):

1、Force Close Crash

2、ANR Crash

Native层(本地框架):

3、Tombstone Crash(Native Crash)

Kernel层(LINUX内核空间):

4、Kernel Panic

Monkey工具九个事件

//Monkey工具随机事件类型(seed值)
[--pct-touch PERCENT]  -0. 触摸事件(down-up事件);
[--pct-motion PERCENT] -1.动作事件(down-up事件和伪随机事件组成);
[--pct-trackball PERCENT] -2.轨迹事件(随机移动、有时伴随点击);
[--pct-nav PERCENT] -3.基本导航事件(导航事件来自方向输入设备的up、down、left、right组成);
[--pct-majornav PERCENT] -4.主要导航事件(引发图形界面动作,如回退、菜单按键);
[--pct-syskeys PERCENT] -5.系统按键事件(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键);
[--pct-appswitch PERCENT] -6.调整启动Acticity百分比(在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法,从一个Activity跳转到另一个Activity);
[--pct-flip PERCENT]    -7.调整键盘翻转事件的百分比
[--pct-anyevent PERCENT]-8.其它类型事件(它包罗了所有其它类型的事件,如:按键、不常用的设备按钮等)

记录monkey log的值

adb shell monkey -p com.xxx.xxx 1000 > C:\monkey.txt

说明:

1.ctrl + c 退出shell 模式 然后 C:\XXX\XXXX>adb shell monkey -p 包名 -v 300 >e:\text.txt 注:进入adb shell后就相当于进入linux的root下面,没有权限在里面创建文件~

adb remount 获取root权限。

2.数字对应下面百分比对应的数字,比如下图中0:15.0%,表示分配--pct-touch事件15%,测试100次分配15次测试down-up

3.如果在monkey参数中不指定上述参数,这些动作都是随机分配的,9个动作其每个动作分配的百分比之和为100%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。

示例:我们先来看一下不加动作百分比控制,系统默认分配事件百分比的情况

命令:adb shell monkey -v -p com.tencent.WeChat 500

再看一下指定事件,控制事件百分比之后的情况

命令:adb shell monkey -v -p com.tencent.WeChat --pct-anyevent 100 500

说明:--pct-anyevent 100 表明pct-anyevent所代表的事件的百分比为100%

运行结果如下:

Monkey日志定位问题

1 .典型Monkey测试日志文件输出,如下:

//主要Log文件说明
anr目录:从手机/data/anr导出的日志,保存发生anr crash 时的相关信息;
dontpanic目录:从手机/data/dontpanic/导出的日志,保存发生Kernel Panic时的相关信息;
Tombstone目录:从手机/data/tombstones/导出的日志,保存发生Tombstone Crash时的错误信息;
dropbox目录:从手机/data/tombstones/导出的日志,经过dropbox服务截取的部分tombstones错误信息;
BugReportLog.log:通过adb shell bugreport命令提取的系统各种信息;
MonkeyScreenLog.Log:保存Monkey测试过程、应用层错误信息,发生Native Crash时,在此文件也会有记录;

2 .通过日志定位问题步骤

(1) 在MonkeyScreen.Log日志文件搜索关键词“Fatal”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,或分析发生Crash前后的日志事件;

如图:

(2)检查dropbox目录下是否有相关crash日志信息,主要关注是否有以下4类crash错误信息:data_app_wtf,data_app_anr,data_app_crash,system_server_watchdog,如图:

(3) 检查tombstone目录是否有生成日志,有的话说明发生过native crash,如图:

(4)通过anr目录中的日志文件或BugReport.log日志文件,进一步分析问题原因;

(5)通过上述日志信息,结合代码分析或通过搜索引擎寻找对应问题的可能错误,定位解决问题。

Monkey后台运行

作用:使得android系统的设备脱离PC,独立运行monkey和记录logcat和monkey日志。

方法如下:

1. 连接设备和PC;

2 .adb shell 命令进入命令行模式;

3. 输入 logcat 命令(日志文件的地址使用> /sdcard/logcat_x.log),之后回车,

如:logcat -v time >/sdcard/logcat_x.log

4 .输入 monkey 命令(日志文件的地址使用> /sdcard/monkey_x.txt),回车;

如:monkey -p packageName --throttle 500 -v -v -v 1000000 >/sdcard/monkey.log 对于其余的monkey命令的参数可以自己添加

5 .此时monkey开始运行,拔掉设备和PC的数据线;

6 .同时需确认logcat和monkey的日志记录ok(重新连接设备和PC,通过adb shell,进入sdcard,使用 ls –l查看,logcat和monkey日志文件的大小不断变化即ok)。

以上

That‘s all

本文分享自微信公众号 - ITester软件测试小栈(ITestingA),作者:ITester小锦鲤

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python接口自动化之logging日志

    点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 07:30准时推送。

    ITester软件测试小栈
  • Fiddler跨域调试及Django跨域处理

    在上一篇Fiddler系列文章:Fiddler设置断点(一),主要介绍了通过Automatic BreakPoints设置断点,以下主要介绍Fiddler跨域调...

    ITester软件测试小栈
  • Python接口自动化之logging封装及实战

    在上一篇Python接口自动化测试系列文章:Python接口自动化之logging日志,主要介绍日志相关概念及logging日志模块的操作流程。

    ITester软件测试小栈
  • APP测试之Monkey压力测试(二)

    通过APP测试之Monkey压力测试(一),我们了解了Monkey是什么,Monkey是如何实现对APP进行压力测试,也熟悉了Monkey基本的命令,今天将在之...

    橙子探索测试
  • Appium+python自动化(二十)- 猴哥失散多年的混血弟弟还是妹妹- Monkey猴子日志

      日志是非常重要的,用于记录系统、软件操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统、软件的活动等重要...

    北京-宏哥
  • AutoLine开源平台常见问题解答

    答:AutoLine基于Python3开发,不兼容Python2,最低要求Python3.4版本

    苦叶子
  • MySQL 复制 - 性能与扩展性的基石 3:常见问题及解决方案

    主备复制过程中有很大可能会出现各种问题,接下来我们就讨论一些比较普遍的问题,以及当遇到这些问题时,如何解决或者预防问题发生。

    北国风光
  • Debian 8.2 64位 安装MongoDB

    http://blog.csdn.net/ctbinzi/article/details/42425989

    zhangheng
  • 本体技术视点 | 如何运用数字身份进行转账?

    众所周知,ONT ID 是用户自治的身份,用户通过 ONT ID 可以管理自己的相关身份数据,比如 CFCA 的身份认证信息等。广泛来看,用户拥有的地址和数字资...

    本体Ontology
  • 如何快速区分IaaS、PaaS 、SaaS?

    云是一个非常广泛的概念,它涵盖了所有可能的在线服务,但是当企业参考云采购时,通常会考虑三种云服务模式,即基础架构即服务(laaS),平台即服务(PaaS)和软件...

    齿轮易创说互联网

扫码关注云+社区

领取腾讯云代金券