持续集成 Android monkey in Jenkins

myersguo · March 23, 2017 · Last by Leena33 replied at November 20, 2018 · 3321 hits
本帖已被设为精华帖!

前言

都说 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 将本帖设为了精华贴 24 Mar 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

myersguo #10 · March 30, 2017 作者

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

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

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

myersguo #13 · April 05, 2017 作者
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 为什么一直报出找不到呢

17Floor has been deleted

jinja2 不见了?能发下吗

jinja2 不见了?能发下吗

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up