测试基础 分享一个自用的 Android 自动化 Monkey 工具 (更新 2016-08-16:支持 windows)

Michael_Wang · 2016年08月11日 · 最后由 zhangzhao_lenovo 回复于 2018年02月05日 · 2679 次阅读

Auto Monkey For Android

版本 1.0

功能简介

  1. 完全自动:只需要负责连接设备
  2. 支持多个设备
  3. 支持随时断开设备、插入新设备,每 5s 定时检测设备自动运行
  4. 崩溃后,发送邮件,邮件内容:执行时长、crash log
  5. 支持 Windows、Mac 系统

系统及环境、依赖

  1. 测试环境:Mac OS、Windows 10、Python 2.7.10
  2. 配置 adb

配置修改

/your_location/monkey_android/performance/config/config.py

class Config:
    # 配置 package_name, adb_location, mail_host, mail_user, mail_pass
    package_name = "com.testerhome.nativeandroid"
    adb_location = '/your_location/sdk/platform-tools/adb'
    mail_host = "smtp.163.com"  # 设置邮箱服务器
    mail_user = "xxxxx@163.com"  # 邮箱用户名
    mail_pass = "xxxxx"  # 邮箱密码
    mail_to_list = ['xxxxx@163.com'] # 发送给收件人

运行

  1. 执行命令 `

    python /your_location/monkey_android/performance/monkey/monkey_server.py`
    
  2. 连接手机

关闭 monkey

  1. 停掉 monkey_server 或当前电脑没有正在运行的 monkey_server
  2. 运行 monkey_stop

    python /your_location/monkey_android/performance/monkey/monkey_stop.py`
    
  3. 或连接一台没有 monkey_server 的电脑,执行重启手机

    adb reboot
    

下载地址

https://github.com/wangyunshuai/monkey_android

邮件截图

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 83 条回复 时间 点赞

这个跟系统有关系?

安卓能用么

#2 楼 @cloudwind 这就是安卓啊。。。

#1 楼 @jaychang1989 没有适配 windows

看错了,是 mac 下的安卓。。我用的是 windows。。

这个就是原声的 monkey?

感谢共享

#6 楼 @pacerron 是的

—— 来自 TesterHome 官方 安卓客户端

拔掉的设备会不会停止运行 monkey?

—— 来自 TesterHome 官方 安卓客户端

  1. 支持随时断开设备、插入新设备,每 5s 定时检测设备自动运行

断开设备后是继续跑还是手机上的操作就中断了?

赞一个

#9 楼 @zhaolixiao 拔掉的设备需要手动重启下手机,或者使用命令

adb -s xxxxxx reboot

已试用,赞

运行报错 from performance.config.config import Config
ImportError: No module named performance.config.config

#14 楼 @huang053117 我看下怎么修改。
你先进入到 monkey_server.py 的目录下运行吧,这样可以

#15 楼 @michael_wang huangzhigangdeMacBook-Pro:monkey huangzhigang$ python monkey_server.py
Traceback (most recent call last):
File "monkey_server.py", line 16, in
from performance.libs.device_monitor import monitor_device
File "/Users/huangzhigang/Documents/monkey_android/performance/libs/device_monitor.py", line 17, in
from performance.monkey.monkey import create_threads_monkey
File "/Users/huangzhigang/Documents/monkey_android/performance/monkey/init.py", line 16, in
from nose.plugins.attrib import attr
ImportError: No module named nose.plugins.attrib
引用这里仍有问题,不过感谢回答

#16 楼 @huang053117 我忘记删掉的调试内容,引用了 nose 模块,你如果没有安装 nose,直接删除下面文件中的所有内容就 OK 了

/Users/huangzhigang/Documents/monkey_android/performance/monkey/init.py

#18 楼 @huang053117 需要进入 monkey_server.py 路径才能执行的问题,修改了,更新到 github 了

Traceback (most recent call last):
File "/Users/qinqin/Documents/monkey_android-master/performance/monkey/monkey_server.py", line 15, in
from performance.config.config import Config
ImportError: No module named performance.config.config
qinqindeMacBook-Pro:~ qinqin$
我这个是啥问题啊,有遇到吗?

@zhaolixiao 拔掉设备不会停止手机端的 monkey,因为执行的 monkey 实在设备上,有个 monkey.jar,需要要停止执行中的 monkey,找到 com.android.command.monkey 进程,干掉就行

#21 楼 @qinqin 更新一下 github,看我楼上的几条就知道了

windows 适配不支持吗?

#24 楼 @testsina 我适配下吧

#23 楼 @huang053117 恩恩,搞定啦,感谢感谢哇~

#25 楼 @michael_wang 我更新了以后有个问题,输入命令执行后,只输出了一句日志,不动了就

2016-08-12 12:24:39,894 INFO | start --[monkey_server.py:20]

#28 楼 @huang053117 启动之后,怎么结束啊,我把线拔掉了,还在执行。。

#29 楼 @qinqin 先 control+z 结束,我这里过了一小会就结束了

#29 楼 @qinqin 重启手机 或者,执行 monkey_stop.py 脚本

#27 楼 @huang053117 我下载下来试了没问题呢,你是怎么执行的?

#32 楼 @michael_wang python /Users/huangzhigang/Documents/monkey_android/performance/monkey/monkey_server.py
这样执行的

#33 楼 @huang053117 我们 qq 讨论吧 415768769

已经跑起来了 谢谢楼主。
请问下,是只要发生了 crash 就会发送邮件吗?

#35 楼 @oyoyo 是的,发送邮箱配置正确了就没有问题

求 windows 适配版

#31 楼 @michael_wang 我执行 stop 文件好像不好使哦,我用的是锤子手机,最后使用万能技强制关机。

#30 楼 @huang053117 我用这个快捷键没起作用。

#40 楼 @qinqin 那个是停止了脚本,但如果停止手机跑 monkey 的话 需要结束进程或手机重启

#41 楼 @oyoyo 恩恩,好的,感谢~

#40 楼 @qinqin 停止脚本,执行 monkey_stop

开源赞一个 不过感觉 monkey 还是根据项目定制更有针对性🌚 先研究下 lz 的思路嘿嘿

#43 楼 @yaming116 效率够高的! 赞!
我用 Nexus 6 试了下。获取出来的设备信息是:{"nexus": "6"}, 可能空格没处理好吧

#46 楼 @michael_wang 现在获取的规则是使用 adb devices 获取的,然后使用 \t 来截取每行的设备号,但是我开始提交的代码好写写成\t 了,不知道是不是这个原因,我现在手里的三星是好的,没办法测试你的设备

cmd_monkey = "%s -s %s shell monkey -s %s -p %s --throttle 300 --pct-syskeys 15 --pct-drag 30 --pct-nav 15 --pct-motion 0 --pct-tap 25 --pct-majornav 15 --pct-trackball 0 --pct-anyevent 0 这里参数设置成这样 报错:global name 'cmd_monkey' is not defined

#48 楼 @testsina 把代码贴全些呢。
或者自己调试下,不改代码会不会报错,然后逐个参数加上去,看到哪个参数开始出错

环境是 python3,是不是就跑不起来了?

#50 楼 @zhong914 这个没有验证,不确定,你可以试试

我也整了这么一个,哈哈


到这一句一直等待,是什么原因?

#53 楼 @heyt 你的设备是连接的吗?看样子是你的设备链接丢失了

#54 楼 @yaming116 设配连接应该是好的,用 adb devices 看没有问题。

#54 楼 @yaming116 刚用 mac 试了,也是同样的问题

#57 楼 @heyt 直接手动执行一些命令试试,就是上面 log 的那个

#58 楼 @yaming116 adb monkey 命令?

#59 楼 @heyt 就是 monkey cmd 后面的那串,在你命令行里面运行

#60 楼 @yaming116 奇怪,是有问题,但是 adb 的连接又是好的

#61 楼 @heyt 请检查一下你自己的环境了

#62 楼 @yaming116 手机有没有 root 要求?

#63 楼 @heyt 没有,请查询相关 monkey 知识,这个是提供一种更易于使用的方式

#53 楼 @heyt 你的 count 设置的多少?有没有发生崩溃?
看了下代码,如果跑完了,没有发生崩溃,会这样。拔下设备等 10s,再插上就可以了

#63 楼 @heyt 是你的 count 设置的太少了,这样判断不太合理。我改了下判断,已经更新了。

#66 楼 @michael_wang 好的,我用新版测试一下。为何这个网络处理时间会显示 15855ms not connected,你知道吗?

#67 楼 @heyt not connected 这个不清楚

#68 楼 @heyt deal with log, 这个每次都这样吗?我有时间在 win 下试试

#70 楼 @michael_wang 每次都这样,本地也没有看见 monkey 的 log 文件,应该是自动删掉了

#70 楼 @michael_wang 方便加个 QQ 沟通吗?

#72 楼 @heyt 你留下 QQ 吧,我加你

已经 start,测试报告怎么展示的?

赞,一次跑过。 以前只用 adb shell 跑 monkey,可以将 log 存到本地,现在直接邮件方式发送,且还可以自定义 conf!

请教下这是什么问题

python 3.0 运行不行呢,郁闷

#78 楼 @wtf_test 没有适配 3.x

#75 楼 @lose 没有统计性的报告,都是单个的 crash log 通过邮件发出

#78 楼 @wtf_test 可以使用 virtualenv 弄一个 2.7.x 的环境

#81 楼 @michael_wang 😙 用 2.7 环境已经可以跑起来了

https://testerhome.com/topics/5670 @michael_wang 楼主的 report 挺好的 可以对接我这个 monkey

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册