前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >测试开发进阶(四十八)

测试开发进阶(四十八)

作者头像
zx钟
发布于 2019-12-20 07:53:36
发布于 2019-12-20 07:53:36
54800
代码可运行
举报
文章被收录于专栏:测试游记测试游记
运行总次数:0
代码可运行

电量

统计耗电本身也是一件耗电行为,所以软件统计方式其实都不是很精确

统计方法/工具

  • 功耗仪:统计整机的耗电
  • 腾讯GT工具
  • Battery Historian(Google 官方提供的工具,5.0及以后系统适用)

https://github.com/google/battery-historian

手机投屏软件

windows:apowermirror

Battery Historian

从手机中导出bugreport文件上传至页面,在网页中生成详细的图表数据来展示手机各模块电量消耗过程,然后通过App数据的分析制定出相关的电量优化的方法

  • 安装GO python Java
  • 使用Docker
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker run -p 9999:9999 registry.cn-beijing.aliyuncs.com/center1/google_battery
获取方式
记录唤醒锁的信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ adb shell dumpsys batterystats --enable full-wake-history
重置电量数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ adb shell dumpsys batterystats --reset
采集电量数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Android7.0之后
$ adb bugreport bugreport.zip
# Android7.0之前
$ adb bugreport > bugreport.txt

流畅度

帧率 & 刷新频率

RefreshRate屏幕在一秒内刷新屏幕的次数,取决于硬件的固定参数,如60Hz

FrameRateGPU在一秒内绘制操作的帧数,例如30fps,60fps

卡顿root cause

大多数用户感受到卡顿等性能问题的主要根源都是因为渲染性能,android系统无法及时完成那些复杂的界面渲染操作,就产生了卡顿/不流畅的想象

FPS指标

  • fps低,但是不觉得App卡

因为本来就用不到那么高的fps,屏幕没有绘制要求,那么fps就为0

  • app停止操作后,fps还是一直变化

屏幕每一帧的合成都是针对手机里面所有的进程,当前app停止后其他进程可能还在绘制

计算流畅度

  • 系统合成帧率

数据形式最为直观,游戏/视频等连续绘制的应用可以考虑选用,但不适用于绝大多数非连续绘制的应用

  • 流畅度(SM:SMoothness)

数据形式和FPS类似,可以很好的弥补FPS无法准确刻画非连续绘制的应用显示性能的缺陷

  • 原理:在VSync机制中1s内Loop运行的次数
  • 当流畅度越小的时候说明当前程序越卡顿

指标获取

FPS获取
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ adb shell dumpsys gfxinfo 包名
# 例如
$ adb shell dumpsys gfxinfo com.sankuai.meituan

Draw+Prepare+Process+Execute=完整显示一帧的时间

这个时间需要小于16.67ms才能保证不丢帧

  • 计算总数据的行数(跳过第一行)

frameCount = rowNum

  • 计算每帧的渲染时间

renderTime = Draw + Prepare + Process + Execute

  • 当渲染时间renderTime大于16.67ms,该帧渲染超时,算一次丢帧,需要用掉额外的Vsync个数为(多需要同步的信号)

  • 16.67整数倍

vsyncOverNum=int(renderTime/16.67)-1

  • 非16.67整数倍

vsyncOverNum=int(renderTime/16.67)-1

  • fps计算公式

fps=frameCount*60/(frameCount+vsyncOverNum=int)

SM获取

腾讯GT

流畅度影响因素

  • UI渲染

界面过度渲染 布局边界合理性

  • UI线程复杂运算
  • 频繁GC垃圾回收

UI渲染

UI渲染由CPU和GPU两个部分协同完成

  • CPU负责UI布局元素的Measure,Layout,Draw等相关运算执行。如果布局边界不合理,会导致卡顿
  • GPU负责栅格化,将UI元素绘制到屏幕上,如果界面过度绘制,也可能导致卡顿
页面的过度绘制

一个像素点绘制次数超过1次

开发者选项->调试GPU过度绘制

  • 没颜色:没有过度绘制
  • 蓝色:1倍过度绘制,1个像素点绘制2次
  • 绿色:2倍 3次
  • 浅红色:3倍 4次
  • 深红色:4倍以上 5次以上

蓝色和绿色可以接受

UI线程复杂运算

当android应用启动时,系统会为应用创建一个主线程,负责和UI组件进行交互

如果主线程里面进行复杂运算就会造成界面无响应/卡顿/不流畅(ANR已经是卡顿的极致了)

  • TraceView

分析方法执行时间

  • StrictMode(严苛模式)

在代码里或者开发者选项中开启,查看应用哪些操作在主线程上执行时间过长

当一些操作违背了严格模式时,屏幕四周会闪烁红色,同时输出StrictMode的相关信息到LOGCAT日志中

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
测试开发进阶(四十六)
由于移动端的碎片化特征,需要确保App产品能够在不同系统版本,不同屏幕分辨率,不同系统定制ROM也能够有好的用户体验
zx钟
2019/12/19
6110
【学员干货】App常见性能测试点
(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等,后续会持续更新… 流量测试同这些一起更新,这里就不在说明了 )
新梦想IT职业教育
2019/10/22
3.3K0
【学员干货】App常见性能测试点
专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)?
FPS 和丢帧率可以在一定程度上作为 APP 流畅度的一项衡量标准,本文介绍利用 adb shell dumpsys gfxinfo 命令获取软件渲染加载过程的数据,进行计算从而获取测试结果。
霍格沃兹测试开发
2022/05/23
1.6K0
测试 App 流畅度
FPS 和丢帧率可以在一定程度上作为 APP 流畅度的一项衡量标准,本文介绍利用 adb shell dumpsys gfxinfo 命令获取软件渲染加载过程的数据,进行计算从而获取测试结果。
霍格沃兹测试开发Muller老师
2022/12/01
5770
APP性能测试—功耗测试
功耗,通俗的理解即电流通过导体使设备运行,导体本身的电阻将电能转换为热能的过程,因此,通常功耗测试也叫电量测试。
清风穆云
2021/08/09
6.6K0
专项测试--性能分析三
耗电量测试 耗电量指标 待机时间成为关注指标 提示用户体验 通过不同的测试场景,找出APP高耗电的场景并解决 工具:battery-historian 测试步骤 使用batterystats生成(收集)数据 清理耗电量数据 adb shell dumpsys batterystats --reset adb shell dumpsys batterystats --enable full-wake-history 运行测试用例或手工执行 收集数据 adb bugreport > bugreport.t
用户6367961
2022/11/21
5420
专项测试--性能分析三
专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)
FPS 和丢帧率可以在一定程度上作为 APP 流畅度的一项衡量标准,本文介绍利用 adb shell dumpsys gfxinfo 命令获取软件渲染加载过程的数据,进行计算从而获取测试结果。
霍格沃兹测试开发
2020/09/03
1.6K0
专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)
腾讯视频国际版(Android)电量测试方法研究与总结
在2017年Google I/O大会上,Google发布了Google Play管理中心的新功能:Android vitals。当app在大量设备上运行时,Android vitals会收集与应用性能相关的各种匿名数据,比如:与app稳定性相关的数据、app启动时间、电量使用情况、渲染时间以及权限遭拒等等,这些数据会被分析整理后展示在Google Play管理中心的Android vitals dashboard中。Android vitals 中需要开发者重点关注的核心指标有:crash率、ANR率、excessive wakeups(过渡唤醒)、stuck wake locks(唤醒锁定卡住)。其他指标,需根据应用类型选择性关注(Android vitals中的指标总览见图1-1)。若app某些指标表现很差,会影响用户体验,并且会导致应用在Google Play商店中的等级很低、排名靠后(APP指标异常示例图见图1-2)。开发者可以通过分析Android vitals中提供的一些参照指标,采取相应的措施来优化app。
腾讯移动品质中心TMQ
2019/03/04
3.3K2
腾讯视频国际版(Android)电量测试方法研究与总结
Android性能优化系列之电量优化
电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情,随着Android开的性能要求越来越高,电量的优化,也显得格外重要,一个耗电的应用,用户肯定会毫不犹豫的进行卸载,所以本篇博客,我们一起来学习Android性能优化之电量优化。
老马的编程之旅
2022/06/22
8040
Android性能优化系列之电量优化
Android性能优化(九)之被忽视的电量
移动互联网的大潮到来之后,我们都变身好男人:“用智能手机的男人都是好男人,因为晚上必须回家充电。”一句笑言,但也可以看得出来目前使用智能设备电量方面的问题。
用户2898788
2018/08/21
2.4K0
Android性能优化(九)之被忽视的电量
How to know your application’s battery stats
众所周知,Android系统内置了应用的耗电量统计分析功能,但是并没有提供相应的API和文档,只是可以查看耗电量排行榜前10的应用的耗电百分比。此外,随着Android系统版本的迭代,各个版本耗电量统计的方式略有不同,但庆幸的是其统计模型并没有什么大变化。本文在前人的研究基础上总结Android平台的耗电量统计相关的计算方法和辅助工具。
宅男潇涧
2018/08/01
1.1K0
How to know your application’s battery stats
Android性能测试——发现和定位内存泄露和卡顿
  因此,对开发的Android应用,必须对其进行性能测试,不然将会直接影响用户体验。
顾翔
2019/12/11
3K0
Android性能测试——发现和定位内存泄露和卡顿
Android耗电分析--Battery Historian
APP越来越大,功能越来越多,导致后台运行时耗电急速上升,使用官方推荐的Baterry-Historian进行分析 官方链接:https://github.com/google/battery-historian
None_Ling
2018/10/24
2.4K0
Android耗电分析--Battery Historian
Android性能优化--电量/功耗优化
Android 系统的电量统计工作,是由一个叫 BatteryStatsService 的系统服务完成的。
青杉
2024/06/24
1810
Android性能优化--电量/功耗优化
Android APP性能及专项测试
1、运行Monkey进行压力测试: adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50 2、监控内存值,如果出现过大等递增异常则保存HPROF文件(hprof文件是Java 虚拟机的Heap快照)用于分析查看应用内存的命令: adb shell dumpsys meminfo cn.microinvestment.weitou(进程名) 如果发现内存过大,则保存HPROF文件:adb shell am dumpheap <进程名> <保存路径> 3、分析hprof文件 用工具MAT来查看,首先还要这个HPROF文件转换成MAT可读的文件 在Android SDK tool里面有个hprof-conv命令: hprof-conv <原HPROF文件路径> <转换后的HPROF路径> hprof-conv a.hprof b.hprof 4、用MAT工具打开转换后的HPROF文件 一般选择Leak Suspects Report(通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题)
测试开发社区
2019/09/20
3.9K0
个人资料、消息、书签和偏好设置 Android耗电量测试
目前对于移动设备而言,电量是很重要的一个方面。现在大家使用手机基本每天都需要充电,所以用户也非常关注耗电的问题,如果应用设计不合理导致电量大量消耗,那么对于关注耗电的用户而言,这款应用将会是首要卸载目标。因此,作为测试人员,我们也应该对应用的耗电做一些针对性测试。
CeshirenTester
2022/06/09
5550
APP性能测试—帧率
无论是手机端还是PC端,画面的流畅度一直被用户视为衡量应用视觉体验的重要标准。而对开发者来说,帧率(FPS)通常作为衡量应用是否流畅的标准。
清风穆云
2021/08/09
3.6K0
7大生鲜电商类应用Alarm占用情况评测
开发者们应该都知道,Alarm可以完成闹钟式定时任务,系统主要通过AlarmManager类对其进行管理,我们可以通过AlarmManager在一些Alarm设定的时间点启动服务进行事件处理,同时还可以用Alarm来初始化一些长时间运行的操作。
软件绿色联盟
2022/03/31
6650
7大生鲜电商类应用Alarm占用情况评测
测试开发进阶(四十七)
很多时候,手机发热发烫。是因为CPU使用率过高,CPU过于繁忙,会导致手机无法响应用户,整体性能降低,用户体验会很差,也容易引起ANR等一些列问题
zx钟
2019/12/20
6900
测试开发进阶(四十七)
Android耗电量线下监控: Battery Historian
Android 框架层通过一个名为 batterystats 的系统服务,电池的信息,电压,温度,充电状态等等,都是由BatteryService来提供的。 电池的这些信息是BatteryService通过广播主动把数据传送给所关心的应用程序。实现了电量统计的功能,batterystats实现原理可以查阅电量统计服务 Android 提供的 dumpsys 命令用于查看系统服务的信息(实现原理可以查阅 dumpsys 介绍) 将batterystats作为参数,就能输出完整的电量统计信息。小编在日本最大的游戏直播平台之一项目组开发过一段时间发现直播页面发热问题一直饱受日本用户诟病,因此我准备出一篇技术文章详细介绍整个优化流程,经过功能测试发现: 如果在游戏直播中播放视频,手机很快就会发烫。针对这种现象,我马上拉取数据进行了分析,测试数据表明游戏直播耗电量竟然高达 7%,经过调研,发现 Battery Historian 这个框架还挺合适线下优化的
小木箱
2020/11/27
1.6K0
推荐阅读
相关推荐
测试开发进阶(四十六)
更多 >
LV.1
浙江宇视科技有限公司自动化测试
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文