移动性能测试 Monkey+battery-historian 电量测试 (五)

金主 · 2018年03月09日 · 最后由 萍尤 回复于 2020年10月16日 · 1498 次阅读
本帖已被设为精华帖!
:文章有说的不对的地方,大家可以帮忙指出!
Monkey 测试基本操作介绍(一)
Monkey 测试日志讲解(二)
Monkey+Logcat+DDMS 内存泄漏分析以及定位(三)
Monkey+Logcat+traces 查找以及分析定位 ANR 问题(四)
Monkey+battery-historian 电量测试(五)

准备电量数据:

1. 断开 adb 服务

执行:adb kill-server

2. 开启 adb 服务

执行:adb start-server或者adb devices
这两步操作的作用:adb 作为一种连接的方式,有可能被其他的程序占用,所以我们做电量记录时要避免打开很多可能冲突的东西

3. 收集电池的历史数据

执行:adb shell dumpsys batterystats --enable full-wake-history

4. 重置电池数据

执行:adb shell dumpsys batterystats --reset

5. 使用 monkey 对要进行电量测试的应用进行操作

执行:adb shell monkey -p 包名 -v 1000

6. 获取电量报告

(这里要注意手机版本,不然后期向 Battery Historian 导入 bugreport.txt 文件时会提示 “bugreport.txt does not contain a valid bugreport file”,这里也算是一个坑吧)

  1. 从 Android 7.0 和更高版本的开发设备中获得 bug 报告:

    cd /Users/weixiangyang/Desktop/

    adb bugreport bugreport.zip

    实例如图:

  2. 从设备 6.0 和更低版本的开发设备中获得 bug 报告:

    1. 获取 bugreport 信息(记录了从开机之后详细的 dumpsys,dumpstate 和 logcat 信息):
      adb bugreport > 存放的电脑地址/bugreport.txt
    2. 获取 dumpsys 信息(获取系统信息:比如内存,CPU,accounts,activities,wifi 等信息)
      adb shell dumpsys batterystats > 存放的电脑地址/batterystats.txt
      或者获取指定的应用程序的 dumpsys 信息:
      adb shell dumpsys batterystats > 包名 > 存放的电脑地址/batterystats.txt

7. 使用 Battery Historian 查看 batterystats.txt 文件的图形化报告,下载 Battery Historian 工具,继续往下看

Battery Historian 工具简介

Battery Historian 一款由 Google 提供的 Android 系统电量分析工具,从手机中导出 bugreport 文件上传至页面,在网页中生成详细的图表数据来展示手机上各模块电量消耗过程,最后通过 App 数据的分析制定出相关的电量优化的方法。

Battery Historian 工具安装有两种:

1. 安装 GO 环境、Python、Java 环境(这种方法我不管了,亲们自己上 GitHub 研究)

参看链接:https://github.com/google/battery-historian

2. 通过安装 Docker 环境来安装(这种简单方便)

  1. Docker 官方下载地址: Mac:https://docs.docker.com/docker-for-mac/ Windows:https://docs.docker.com/docker-for-mac/
  2. 查看是否安装成功: 执行:docker version
  3. ***,启动镜像,执行命令: docker run -d -p 9999:9999 bhaavan/battery-historian

查看 batterystats.txt 文件的图形化报告

1. 使用浏览器访问地址:http://localhost:9999

2. 导入 batterystats.txt 或者 bugreport.zip 文件


记载这里我遇到一个坑,就是文件上传后,submit 提交按钮不显示

  1. 原因:本质是 web 某些资源没有加载出来,其中的一些资源需要访问 google 服务器,但是这些资源被墙了,无法访问。只要解决了墙的问题,submit 的问题也就迎刃而解了。
  2. 解决方案:
    1. 想办法谷歌(我啦,用同事们买的国外服务器😆
    2. 想办法将无法加载的资源替换为可以加载的资源,参考:https://github.com/waquer/ReplaceGoogleCDN

有同学说 *** 之后还是无法显示 submit 提交按钮,我这里提供下他的解决方案

执行:go run setup.go(必须要 ***,不然资源下载不到)
参考链接:https://blog.csdn.net/super_spy/article/details/51966956

3. 导入成功后,成功展示电量分析结果,下面我就要来贴神图

电量变化曲折图:

系统统计数据图:

英文看不懂?来来来,我再贴个翻译后的,这样内容一目了然,我也不用解释了

注意个细节啊,这个报告竟然还有 Errors 与 Warnings 日志?看图

数据解析

CPU runing: cpu 运行的状态
Kernel only uptime: 只有 kernell 运行
Userspace wakelock: 用户空间申请的锁
Screen: 屏幕是否点亮
Top app: 当前在内存中的应用,按内存占用率排序
Activity Manager Proc: 活跃的用户进程
Crashes(logcat): 某个时间点出现 crash 的应用
Doze: 是否进入 doze 模式
Device active: 和 Doze 相反
JobScheduler: 异步作业调度
SyncManager: 同步操作
Temp White List: 电量优化白名单
Phone call: 是否打电话
GPS: 是否使用 GPS
Network connectivity: 网络连接状态(wifi、mobile 是否连接)
Mobile signal strength: 移动信号强度(great\good\moderate\poor)
Wifi scan: 是否在扫描 wifi 信号
Wifi supplicant: 是否有 wifi 请求
Wifi radio: 是否正在通过 wifi 传输数据
Wifi signal strength: wifi 信号强度
Wifi running: wifi 组件是否在工作 (未传输数据)
Wifi on: 同上
Audio: 音频子系统?
Camera: 相机是否在工作
Video:是否在播放视频
Foreground process: 前台进程
Package install: 是否在进行包安装
Package active: 包管理在工作
Battery level: 电池当前电量
Temperature: 电池温度
Plugged: 连接 usb 或者充电
Charging on: 在充电
Logcat misc: 是否在导出日志

电量优化参考:https://www.jianshu.com/p/5d83d8649c98

最后,monkey 系列算是更新完了,喜欢的宝贝们可以给个赞哈!😆

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 78 条回复 时间 点赞
金主 Monkey 测试基本操作介绍 (一) 中提及了此贴 03月09日 16:33
金主 Monkey 测试日志讲解 (二) 中提及了此贴 03月09日 16:33
金主 Monkey+Logcat+DDMS 内存泄漏分析以及定位 (三) 中提及了此贴 03月09日 16:33
恒温 将本帖设为了精华贴 03月09日 16:35

支持一下,不错。

IOS 的电量测试有什么方案吗

Vin 回复

暂时没研究

@JinZhu 小姐姐,你辣么腻害,让这帮测试小哥哥怎么混

这波操作很 6,给你点个赞,越写越厉害了。

好棒 支持下

金主 #13 · 2018年03月11日 Author
小马 回复

惭愧😪

@JinZhu 小姐姐,我可以加你好友吗,我有问题想向你请教啦

匿名 #15 · 2018年03月12日
金主 回复

关键不知道这个采集到的数据准确吗?指导性意义大不大呢?

金主 #17 · 2018年03月12日 Author

操作尽量是在未充电情况下,这样采集电量数据还算准确

厉害了啊!我的妹

中文翻译的配置文件能否共享一份

厉害了

匿名 #21 · 2018年03月14日

看了一遍,整理得全面,果断一个小小打赏,哈哈

金主 #22 · 2018年03月14日 Author

感谢帅哥的打赏😂

23楼 已删除

用 docker 安装的,不 *** 访问不了:

GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/hot-sneaks/jquery-ui.css net::ERR_CONNECTION_RESET
localhost/:8 GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js net::ERR_CONNECTION_RESET
金主 #25 · 2018年03月15日 Author
water 回复

所以才有了第三步,启动镜像

金主 回复

就是通过镜像启动的,还是存在这个问题

金主 回复

正在想办法 ***TAT

金主 #28 · 2018年03月15日 Author
water 回复

翻吧翻吧,我翻了整整一天,最后还是用的同事买的服务器😪

您好,想请教一个问题,我在安装好 docker,docker-version 也显示正确后,根据 run -d -p…命令运行 battery-historian 时出错显示找不到镜像,当时是可以 *** 的,不知道是不是我遗漏了什么,一直不知道该如何解决错误

金主 #30 · 2018年03月20日 Author
jbj 回复

你加我微信吧,我要看下具体日志,微信个人信息中有的

金主 #31 · 2018年03月20日 Author
81—1 回复

共享不了,你没有相关环境,给你也打不开,最多只能看下我截得图😰

金主 回复

哦,应该是改 docker 里某个生成 HTML 的脚本文件吧,方便就给个吧,或者告诉哪个文件也行,我一直没找到。

金主 #33 · 2018年03月20日 Author
81—1 回复

通过 adb bugreport bugreport.zip 获取电量报告,再访问谷歌浏览器进行解析

金主 回复

中文咋来的呢,环境我的都好了的。

金主 回复

http://ownerworld.win:8081/
我的服务器,想请教你是咋翻译的。

金主 #36 · 2018年03月20日 Author
81—1 回复

我的浏览器自带翻译功能呢!😰

金主 回复

😱 你说的是 chrome 的翻译么,那个不准额。

金主 #38 · 2018年03月20日 Author
81—1 回复

大概意思是明白的,你现在获取到解析报告了吧

金主 回复

我一直是能获取的,只是希望能汉化 batter-history。

金主 #40 · 2018年03月20日 Author
81—1 回复

嗯,那我这没有办法哦,你们公司现在开始做这块的测试啦?

金主 回复

移动设备性能越来越强,在电池技术没有突破性进展的基础下,用户对电量的需求已经有超过流量的趋势了。

金主 #42 · 2018年03月20日 Author
81—1 回复

好官方的回答

金主 回复

意思就是:学个技能,好吹牛皮。

匿名 #44 · 2018年04月03日

我怎么弄都是提示 “” bugreport.zip does not contain a valid bugreport file“”

@JinZhu 楼主非常感谢分享 ,能出个流量测试的么。

adb bugreport > bugreport.txt

之前搭建过这个工具,可以得到 最后结果;然后的,这是测量么,不是测试么?

好厉害啊,姐姐。

提交 bugreport.txt 后,Battery Historian 为什么没有显示我上传的文件?难道这个也必须要 *** 吗?急

金主 #50 · 2018年04月18日 Author
hui_jian 回复

对啊,谷歌浏览器要 *** 的

金主 #51 · 2018年04月18日 Author
hui_jian 回复

该文件有部分内容要访问谷歌服务器进行解析的

金主 回复

我现在 *** 了,为什么还是加载不出来

金主 #53 · 2018年04月19日 Author
hui_jian 回复

截图,我瞅瞅,Docker*没成功?还是谷歌没* 成功?

又学习了一波,人又漂亮技术又好,还这么细心。。。。

金主 回复

我是用 ssr*** 的,youtube 我都可以看,应该没问题吧

金主 回复


我这样应该是没问题吧

金主 #58 · 2018年04月19日 Author
hui_jian 回复

你谷歌浏览器能访问其他链接不?我觉得你谷歌浏览器没 *** 成功

金主 回复

我谷歌浏览器其他链接也可以啊,国外的都能访问,google 官网都可以,android 官网也可以

金主 回复

windows 电脑也需要安装 dock 吗,难道是我没有安装 dock?

金主 #61 · 2018年04月19日 Author

那你试着提交 bugreport.zip 的文件,看能否显示出提交按钮

金主 回复

没办法

必须安装 dock 环境吗

金主 #64 · 2018年04月19日 Author
hui_jian 回复

没安装 docker,你的 Battery Historian 工具是怎么安装的?

金主 回复


这样安装的

金主 #66 · 2018年04月19日 Author
hui_jian 回复

😂 这这这,你加我 qq 聊吧:2359465121

金主 #67 · 2018年04月20日 Author

go run setup.go

请问 6.0 以及以下版本没看到 adb shell dumpsys batterystats 这个文件的用处

7.0 的手机 adb bugreport bugreport.zip 这个命令没用。


adb bugreport > 存放的电脑地址/bugreport.txt

adb shell dumpsys batterystats > 存放的电脑地址/batterystats.txt

adb shell dumpsys batterystats > 包名 > 存放的电脑地址/batterystats.txt

这几个命令获取的文件上传之后没内容。

7.0 的手机 adb bugreport bugreport.zip 没用,如下图

希望楼主可以加入自动化测试微信群,互相学习,互相成长。aitestwork。谢谢

72楼 已删除

adb bugreport bugreport.zip 7.0 以上机型,生成后,文件存到了手机的一个文件夹,是没有权限获取的对么,除非 root 了手机?我尝试把它存到本地电脑提示拒绝访问。楼主大人,获取后能直接获取到文件么?

金主 Monkey+battery-historian 电量测试 (五) 中提及了此贴 11月22日 10:43
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44

我们是用功耗仪来测的,7.0 以上的手机拿不到电量值吧!好像必须得 root 还是必须得开发机来着

simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08

7.0 手机获取不到电量报告

回复楼上部分问题:1.关于 bugreport 获取的电量数据的准确性,bugreport 是以一个 xml 文件(framework 下一个叫 power_profile.xml 的文件)为基准值来计算在测试期间的电量消耗,如果这个 xml 文件未被修改过,xml 的功耗基准都是 Google 的默认值,对 DOU 测试分析有一定的参考意义;2.关于获取 bugreport,在 Google 开发者网站上(https://developer.android.com/studio/profile/battery-historianbugreport 的方法,如下:),有如何获取
For devices running Android 7.0 and higher:
adb bugreport > [path/] bugreport.zip

For devices running Android 6.0 and lower:
adb bugreport > [path/] bugreport.txt

如果在使用命令时无法导出 7.0 以上的 bugreport,很有可能是因为你的 adb 版本过低导致的,这个命令是不需要 root 权限的,默认权限即可
adb 命令介绍(https://developer.android.com/studio/command-line/adb),
adb 版本下载(https://developer.android.com/studio/releases/platform-tools

Seamus 回复

@Seamus 请问下,有没有遇到导入后生成报告是空白,报错信息:
Errors
strconv.ParseFloat: parsing "p": invalid syntax
could not parse aggregated battery stats
device capacity is 0

template: checkin.html:154:31: executing "checkin" at <.CheckinSummary.Wifi...>: can't evaluate field WifiTransmitTime in type aggregated.Checkin,有人遇到过这个错误吗?

82楼 已删除
路了个飞 回复

+1 解决了吗

用的网页版https://bathist.ef.lc/正常的,不过不知道为啥现在挂了

翻墙后直接 google battery-historian online 就可以使用

请教一下,报告已经出来了,我想看 app 是什么情况下耗电最多,应该是什么思路呢

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