App随机测试之Monkey和Maxim

摘要:
Monkey是一个熟悉的应用程序测试工具。Monkey可以随机生成许多事件来操纵应用程序,因此它可以用于压力测试和稳定性测试的几个常见选项:-p指定测试包-s种子。将来,只要运行相同的种子,您就可以回溯相同的猴子操作步骤,这通常用于为开发提供问题。在开发和修复之后,验证修复是否完成。-v log-v-vv[-vv日志比-v]更详细--throttle500在每个操作之间等待

Monkey是我们app测试熟知的一个工具,monkey可以随机的产生很多事件来操控app,所以可以用来做压力测试、稳定性测试

常用的几个选项:

  -p 指定测试的包

  -s 种子,以后回溯的时候只要运行相同的种子就可以回溯相同的monkey操作步骤了,常用来提供给开发复现问题、开发修复完毕以后验证是否修复完成

  -v 日志 -v -vv 【-vv日志比-v详细】

  --throttle 500 每个动作之间的等待时间,单位毫秒

  --pct-touch 触摸事件

  --pct-motion 动作事件(直线滑动)

  --pct-trackball 轨迹事件(曲线滑动)

  --pct-majornav 主要导航事件(回退、菜单按键等)

可以通过【adb shell monkey】来查看命令monkey支持的其他选项

$ adb shell monkey
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
              [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
              [--ignore-crashes] [--ignore-timeouts]
              [--ignore-security-exceptions]
              [--monitor-native-crashes] [--ignore-native-crashes]
              [--kill-process-after-error] [--hprof]
              [--pct-touch PERCENT] [--pct-motion PERCENT]
              [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
              [--pct-nav PERCENT] [--pct-majornav PERCENT]
              [--pct-appswitch PERCENT] [--pct-flip PERCENT]
              [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
              [--pct-permission PERCENT]
              [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
              [--wait-dbg] [--dbg-no-events]
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
              [--port port]
              [-s SEED] [-v [-v] ...]
              [--throttle MILLISEC] [--randomize-throttle]
              [--profile-wait MILLISEC]
              [--device-sleep-time MILLISEC]
              [--randomize-script]
              [--script-log]
              [--bugreport]
              [--periodic-bugreport]
              [--permission-target-system]
              COUNT

  

举例:

$ adb shell monkey -p com.xueqiu.android --throttle 200 --pct-motion 80 --pct-majornav 20 -s 100 -vv 150

打印日志如下:

:Monkey: seed=100 count=150
:AllowPackage: com.xueqiu.android
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages:
//   0: 0.0%
//   1: 80.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: -0.0%
//   6: 0.0%
//   7: 20.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
//   11: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.xueqiu.android/.view.WelcomeActivityAlias;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xueqiu.android/.view.WelcomeActivityAlias } in package com.xueqiu.android
:Sending Touch (ACTION_DOWN): 0:(1144.0,36.0)
:Sending Touch (ACTION_UP): 0:(1166.7858,0.0)
:Sending Touch (ACTION_DOWN): 0:(695.0,1372.0)
:Sending Touch (ACTION_UP): 0:(785.3247,1288.2296)
:Sending Touch (ACTION_DOWN): 0:(1065.0,863.0)
:Sending Touch (ACTION_UP): 0:(1060.9724,799.45374)
:Sending Touch (ACTION_DOWN): 0:(840.0,608.0)
:Sending Touch (ACTION_UP): 0:(818.21136,641.3733)
:Sending Touch (ACTION_DOWN): 0:(954.0,1680.0)
:Sending Touch (ACTION_UP): 0:(986.87213,1625.6768)
:Sending Touch (ACTION_DOWN): 0:(518.0,280.0)
:Sending Touch (ACTION_UP): 0:(504.64883,311.34415)
:Sending Touch (ACTION_DOWN): 0:(542.0,814.0)
:Sending Touch (ACTION_UP): 0:(542.8679,814.5196)
:Sending Touch (ACTION_DOWN): 0:(329.0,1624.0)
:Sending Touch (ACTION_UP): 0:(353.21414,1614.9838)
    // Allowing start of Intent { cmp=com.xueqiu.android/.main.view.MainActivity } in package com.xueqiu.android
    // Allowing start of Intent { cmp=com.xueqiu.android/.community.StatusDetailActivity } in package com.xueqiu.android
    // activityResuming(com.xueqiu.android)
:Sending Touch (ACTION_DOWN): 0:(639.0,1447.0)
:Sending Touch (ACTION_UP): 0:(650.47205,1434.4948)
:Sending Touch (ACTION_DOWN): 0:(330.0,1600.0)
:Sending Touch (ACTION_UP): 0:(285.38858,1726.274)
:Sending Touch (ACTION_DOWN): 0:(454.0,673.0)
:Sending Touch (ACTION_UP): 0:(516.2043,670.9724)
:Sending Touch (ACTION_DOWN): 0:(313.0,1037.0)
:Sending Touch (ACTION_UP): 0:(290.13596,1044.888)
:Sending Touch (ACTION_DOWN): 0:(966.0,369.0)
:Sending Touch (ACTION_UP): 0:(930.24414,400.18967)
    //[calendar_time:2020-11-20 16:37:56.463  system_uptime:652225]
    // Sending event #100
    //[calendar_time:2020-11-20 16:37:56.695  system_uptime:652432]
    // Sending event #100
:Sending Touch (ACTION_DOWN): 0:(656.0,712.0)
:Sending Touch (ACTION_UP): 0:(557.1301,660.5694)
:Sending Touch (ACTION_DOWN): 0:(269.0,334.0)
:Sending Touch (ACTION_UP): 0:(323.9889,344.96362)
:Sending Touch (ACTION_DOWN): 0:(806.0,813.0)
:Sending Touch (ACTION_UP): 0:(802.8336,830.3396)
:Sending Touch (ACTION_DOWN): 0:(454.0,375.0)
:Sending Touch (ACTION_UP): 0:(439.70593,411.3031)
:Sending Touch (ACTION_DOWN): 0:(143.0,1312.0)
:Sending Touch (ACTION_UP): 0:(194.25143,1208.045)
    // Allowing start of Intent { cmp=com.xueqiu.android/.stock.privatedetail.PrivateDetailActivity } in package com.xueqiu.android
    // activityResuming(com.xueqiu.android)
    // Allowing start of Intent { cmp=com.xueqiu.android/.common.account.LoginOptionActivity } in package com.xueqiu.android
:Sending Touch (ACTION_DOWN): 0:(192.0,701.0)
Events injected: 150
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=15983ms (0ms mobile, 0ms wifi, 15983ms not connected)
// Monkey finished

 

但是呢,monkye有一些无法满足的点,亟需改善的是下面2点:

1.就有可能点击到页面的顶部,下拉通知栏,或者点击到底部返回键菜单栏(尤其是模拟器里执行的时候),会有各种误点操作

2.纯随机,没有任何遍历算法加持

针对上面这俩点,我们可以选择使用Maxim来代替monkey,而且Maxim还提供了很多意外之喜:

Maxim github地址:https://github.com/zhangzhao4444/Maxim

比如:比monkey更高效的性能、可以随机输入、支持点击xpath控件、定制滑动路径 等等(但笔者目前还有尝试这些用法,惭愧)

我们先使用一下和monkye类似的功能:

首先是安装(其实github里作者写的也很清楚,这里在重新备注一下):

$ git clone git@github.com:zhangzhao4444/Maxim.git
$ adb push framework.jar  /sdcard
$ adb push monkey.jar /sdcard  

只需要这3条命令就可以了,如果想要确认一下是否真的push到手机的话可以进入adh shell查看:

$ adb shell
$ cd /sdcard
$ ls

  

接下来就是使用,可以从官方copy命令

App随机测试之Monkey和Maxim第1张

改成自己app包和jar包的路径,执行就好了

$ adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 1 -v -v

  

以上就是Maxim的初级使用了,其实Maxim的github主页中写的还挺详细的,有兴趣的读者可以移步到主页深入学习(ps:也可以给Maxim的作者点个星星,真的是一个好工具啊),这里只做抛砖引玉,如果本文能提供给你一点点点帮助,就请点个赞支持一下作者,感谢支持

 

免责声明:文章转载自《App随机测试之Monkey和Maxim》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android登录实现,存储数据到/data/data/包名/info.txt如何通过反射获取和设置对象私有字段的值?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

xshell各个版本下载

官网下载 怎么从官网下载Xshell 5 或者其他版本呢? 下面我们详细步骤说明! 1)首先我们打开netsarang官网, 点击下载Xshell 6 !填写邮箱等信息! http://www.netsarang.com/download/down_form.html?code=622 2)然后查看邮箱邮件,可见一个Xshell 6 下载的邮件!里面有下载...

ACM/ICPC 之 双向链表_构造列表-模拟祖玛 (TSH OJ-Zuma(祖玛))

这一题是TsingHua OJ上的一道题目,学堂在线的一位数据结构老师的题目(原创),所以我直接把题目先贴下来了,这道题对复习双向链表很有帮助,而且也对数据结构中List,也就是对列表的回顾也是很有帮助的。   祖玛(Zuma) 描述 祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色...

adb monkey测试使用及分析

1. adb的用途     adb monkey是一款稳定性测试工具,通过随机点击屏幕一段时间,app不会出现崩溃,无响应,能够正常维持运行的测试。是由android系统自带应用,可以通过adb shell monkey直接使用。 2. Monkey命令参数介绍 monkey 命令执行 adb shell monkey-p com.hst.che --t...

ceph 运维常用指令

集群 启动一个ceph 进程 启动mon进程 service ceph start mon.node1 启动msd进程 service ceph start mds.node1 启动osd进程 service ceph start osd.0 查看机器的监控状态 [root@client ~]# ceph health HEALTH_OK 查看ceph的...

AcWing算法基础课

第一讲:基础算法 第二讲:数据结构 1.单链表 2.双链表 3.栈 4.队列 5.单调栈 6.单调队列 7.KMP 8.Trie 9.并查集 10.堆 838. 堆排序 题目: 输入一个长度为n的整数数列,从小到大输出前m小的数。 输入格式 第一行包含整数n和m。 第二行包含n个整数,表示整数数列。 输出格式 共一行,包含m个整数,表示整数数列中前m小的...

Android Monkey压力测试

一、Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。只针对Activity做测试,不能对Service做测试。...