持续集成 Android monkey in Jenkins

myersguo · 2017年03月23日 · 最后由 Leena33 回复于 2018年11月20日 · 3431 次阅读
本帖已被设为精华帖!

前言

都说 monkey 是压力测试工具。但实际使用中我们好像只关心 monkey 是否跑出了 ANR, CRASH, 压力测试过程中的性能数据似乎没有那么重要。性能指标更多的是需要分析出来,而不是跑一次 monkey 可以得出的。

如何每次跑 monkey 的时候把性能指标也统计出来并方便每个人查看呢?

这里仅提供一个性能统计的思路 —— 执行 monkey 的时候统计性能指标 (cpu, mem, mem heap),并用 jenkins 展示出来。

  • 启动 monkey 命令
  • 执行统计
  • 将统计结果写入 HTML,用 jenkins html publisher plugin 展示结果

鉴于性能统计的方法testerhome上有很多,以下仅为 Jenkins 创建任务说明。

Jenkin JOB

** 构建一个自由风格的软件项目。**

在源码管理中配置 git 拉取源码

jenkins monkey job

在构建中添加 shell/bat(参数即 monkey 的执行参数,更改为你自己的参数即可):

cd adb
python tools/monkey.py  -p com.example.android.testing.uiautomator.BasicSample --pct-syskeys 0 --pct-motion 0 --throttle 300 --bugreport 1000

jenkins monkey shell

构建后,public html report:

jenkins public html

执行构建后,查看 html report:

构建之后,jenkin html report这个插件会把指定的archive的所有 html(这里是 workspace/$jobname/adb/output) 复制到jobs/$jobname/htmlreports文件夹下。

jenkins public result

备注:如果构建中遇到了报错:

Blocked script execution in 'index.html' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.

需要把 jenkins 的安全限制放开 (jenkins 启动文件 config.xml 中配置-Dhudson.model.DirectoryBrowserSupport.CSP=)

这样,结合 jenkins ,每日 monkey 跑性能的同时,也可以展示性能指标的趋势。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 17 条回复 时间 点赞
思寒_seveniruby 将本帖设为了精华贴 03月24日 15:03

加精理由:有意思的小改进

能定位得到性能的问题在啥地方吗?

实际监控下来,效果怎么样啊?

@neyo , @snake

非常遗憾的说,从 monkey 统计的监控数据指标来看,意义不是很大。性能问题的分析还是应该借助于更加专业的工具(如 DDMS)和针对性的测试场景下进行。

这里仅仅提供一个统计的思路和参考。 发现问题并进行调优的专项,应该有更好的方法来做。

@neyo 你好,我想向你请教下关于 python+appium1.6.3 获取 toast 的问题,不知道你可不可以指教一下,我看了你贴的源码,自己也试了,一直是提示超时

对我的工作来说,有启发指导意义,感谢楼主,打赏了。

若想监控 monkey 的性能数据,也可在 app 安装一个 GT 的监测工具,监测结束后,会以邮件 excel 的形式发送性能统计数据,如 cpu,内存,电量,流量,温度等

我是一个新手,请问遇到下面问题如何解决呢?
Failed to connect to repository : Error performing command: git.exe ls-remote -h https://github.com/LiuChaoForBrian/workspace.git HEAD

你的这个应该是 jenkins 的 git 插件的问题, 你可以看 git 是否在你的环境变量里面。

如下图,我的环境变量里面是有 git 的,但还是会报这个问题,我在 cmd 窗口也可以 clone 您的代码。

前段时间层主也试过通过 monkey 收集性能数据尝试,但最终发现还是不可行,最大的问题是行为不可控,导致数据无法与线上数据对标,这种情况,有办法解决?目前想到的就是通过自动化模拟线上用户操作习惯

jb 回复

一个思路:一般 app 都会集成打点 sdk,性能统计可以集成到打点服务中。具体如何统计还要看定义统计的指标,这样可以通过打点日志来定位性能问题。

myersguo 回复

嗯,这个思路是没有问题的,只是说,monkey 得出的数据,其实跟线上真实的数据,没有可比性。。


C:\Program Files (x86)\Jenkins\workspace\jenkins_monkey\adb>python tools/monkey.py -p xxx --pct-syskeys 0 --pct-motion 0 --throttle 300 --bugreport 1000
Traceback (most recent call last):
File "tools/monkey.py", line 10, in
from jinja2 import Template
ImportError: No module named jinja2


jinja2 不见了?😹

@seveniruby

jenkins 上使用 monkey
如图所示,我已经配置了 ANDROID_SDK_ROOT 值就是 sdk 的安装目录
且 system-image 下有 kernel file 为什么一直报出找不到呢

3楼 已删除

jinja2 不见了?能发下吗

jinja2 不见了?能发下吗

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