开发语言:Java
应用平台:Android
框架:
- 为什么选择 jenkins
jenkins 的优点太多,这里就不一一列举,我的性能测试只是把我的工具集成到 jenkins,定时去起,定时发报告的功能
- 为什么选择 monkeyrunner
Android 平台选择 monkeyrunner 可能是大家第一会想到的,可惜的是 monkeyrunner 是那么的不给力,但是勉强可以用用,monkeyrunner 主要坑爹的地方是抓取控件不准,目前这个问题还是没法解决,最终决定以后找个好的替代,为什么没选择 appium,首先 appium 的定位也不是很稳定,比 monkeyrunner 好点,但是不适合再封装,其实可以集成到 jenkins,性能测试只作为一个 appium 的测试用例也可,这种方式后续研究。
- 为什么选择 jfreechart
Android 的图片绘制就是用的是 jfreechart,大家可以在 SDK tools 里面可以看到 jfreechart 的 jar 包,可以直接引用,对于 java 的开源图片绘制库目前就只知道这个。
实现:
性能测试主要是模拟用户操作记录性能测试数据,OK,那我需要做的无非就是 3 个事情:
- 模拟用户操作
当然你可以手动去点击,那网易的开源工具 Emmagee 和腾讯的 GT,都可以作为手动性能测试的选择,我觉得是开发的一个很好选择,那要自动化就让他随机取操作,随机点击很简单,根据屏幕分辨率设置随机坐标去点击,随机滑动同样的道理。
- 记录性能测试数据
记录前需要获取,之前有篇很好的性能测试帖子:http://testerhome.com/topics/470
很感谢 kasi 这位大侠,主要是通过 adb shll dumpsys 这个命令去获取,后面跟的参数我就不一一多讲,这里推荐一篇博客:http://blog.csdn.net/nei504293736/article/details/9249863。
还要做的是就是你间隔多长时间去获取一次,这可以通过配置文件去配置,把命令输出的需要抓取的数据拿出,存放到一个 csv 文件,为什么选择 csv,因为它可以直接用 excel 打开,用 excel 可以直接手动去绘制一个折线图,方法可以看这里:http://jingyan.baidu.com/article/3ea51489107a8852e61bba97.html
需要抓取的数据:CPU 占用,内存占用,功耗,流量。当然要取什么数据根据自己的测试需求去定,这里只是给出一个基础。
最后把获取的数据存储在一个 arraylist 里面。
- 生成测试报告
测试报告是在 jenkins 做的事情,代码里面主要是绘制折线图(绘制什么图可自己根据自己需求去做,jfreechart 支持大部分的图的绘制),绘图无非就是把拿到的数据传给 jfreechart,然后配置 jenkins,获取图片后生成报告自动发送到你的邮箱里面
TODOs
目前只实现了基本功能,需要做的还有很多,我把封装的业务去除后会把代码放到 github 上,希望有兴趣 android app 性能自动化测试的同学可以参与进来,咱们交流下,一起进步,或者有大神带着我进步也可,需要解决的问题会在 md 文件的 TODOs 里面写明,还需要做的事情很多,希望坛子里面大神多多指教,汇聚开源的力量,寻找 android app 性能自动化测试的解决方案。
BTW,马刺打的真好!
↙↙↙阅读原文可查看相关链接,并与作者交流