android 压力测试

tips:每次去面试你都会说自己的技术经验丰富,会说自己的代码质量很高,但是说多了总会觉得有点空,到底有多好呢?这里给出一种最简单的衡量标准:压力测试。

先做压力测试,然后分析日志(日志跟我们通常看到的logcat一样)。可以根据关键字exception来搜索,一般去掉会导致崩溃的异常就行。

下次面试我们就可以说,我开发的APP可以经历百万次压力测试仍旧屹立不倒。

demo:

adb shell monkey -p com.xy.android.junit -s 500 -v 10000

以时间序列500测试10000次,最后将测试结果输出到java_monkey_log.txt

adb shell monkey -p com.saipeisi.expressgold -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt

MAC下面

adb shell monkey -p com.saipeisi.expressgold -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > /Users/kangwencai/Desktop/monkey_log.txt

常用选项

  • -p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
  • -c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;
  • -v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。

事件选项

  • -s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200 两次-s 200产生的事件是一样的,这样的话可以做压力回归测试
  • --throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
  • --pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:
  • --pct-motion <percent> (滑动事件)、 --pct-trackball <percent> (轨迹球事件) 、 --pct-nav <percent> (导航事件 up/down/left/right)、 --pct-majornav <percent> (主要导航事件 back key 、 menu key)、 --pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、 --pct-appswitch <percent> (activity之间的切换)、 --pct-anyevent <percent>(任意事件)

调试选项

  • --dbg-no-events:初始化启动的activity,但是不产生任何事件。
  • --hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。
  • --ignore-crashes:忽略崩溃
  • --ignore-timeouts:忽略超时
  • --ignore-security-exceptions:忽略安全异常
  • --kill-process-after-error:发生错误后直接杀掉进程
  • --monitor-native-crashes:跟踪本地方法的崩溃问题
  • --wait-dbg:知道连接了调试器才执行monkey测试。

缺点

对于多文本输入的项目来说,monkey测试基本无效,因为它基本无法通过前端的非空和正则判断

进阶

一般来说,做这种压力测试,我们会顺便配置上严苛模式来检查内存和线程上的问题。详情请见 Android严苛模式

展开阅读全文

没有更多推荐了,返回首页