【腾讯TMQ】【Android场景化性能测试专栏】CPU耗电性能篇

2024-04-14 04:32

本文主要是介绍【腾讯TMQ】【Android场景化性能测试专栏】CPU耗电性能篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、思路简介

在腾讯内部或者业界,耗电性能测试已有非常多的成熟方案。既有高端深入、带着原理去测试的方案;也有直接读取系统文件、读取手机显示电量百分比的方案。如果你也玩《王者荣耀》,前者可以类比于王者高端局,后者则是青铜匹配局,各有各的乐趣。

读取系统文件或采用工具获取整体手机电流值的方法,受影响的因素多,数据波动大,可信度不高,同时从开发角度说,告诉他一个简单的电流值,对他们定位问题的帮助,也不够。

图一源码中计算APP耗电的逻辑

先简单看下Android源码,无需过于深入理解逻辑。在BatteryStatsHelper类中可以发现,某个App的耗电量值,来源于方法processAppUsage,其中包含CPU、wakeLock、移动网络、WiFi、蓝牙、传感器、摄像头、闪光灯等细分耗电量。通过以上分析:

“这个版本,我们APP耗电量高。”

就可以变成:

“这个版本,我们APP占用CPU时间片过高。”

“这个版本,我们APP单位时间收发网络流量过高。”

“……”

与此同时,CPU、wakeLock、移动网络耗电量等细分指标,则都可以成为测试人员关注的专项测试项。同时测试人员也可以根据自己业务团队重点关注的方向,设计对应的专项测试。

二、数据源 #

在linux中,使用cat /proc/pid/stat获取数据,其中第13、14位数据代表utime、stime。如下,这两个值代表pid进程从进程存活以来,在用户态运行的时间为:1587 jiffies,在内核态运行的时间10 jiffies。

utime=1587 该任务在用户态运行的时间,单位为jiffies。

stime=10 该任务在核心态运行的时间,单位为jiffies。

本方案,主要以这两个值为依托,输出APP耗电各场景下的耗电性能。

三、数据采集

首先设计一个基类,用于各类性能测试,包括本篇的CPU耗电,以及内存性能、UI流畅度等其他专项。主要用于统一化测试执行逻辑set_up()、tear_down()中的调用逻辑(都为start和stop)。

图二性能测试基类

Jiffs的收集方案,在set_up()调用JiffsCollector实例的start()方法时,创建定时器1s后开始执行self.__fun_get_jiffs。同样,在__fun_get_jiffs中同样适用定时器每隔5s收集一次/proc/pid/stat中的utime、stime数据,同时计算这5s过程中,进程耗用的CPU时间( =current_utime – last_utime )。同时每收集一次数据,使用__write_line向文本中将本次计算果写入csv文件。

图三JIFFS性能数据收集具体逻辑

四、数据使用

获得单一进程的JIFFS数据后,使用如下表的平均值即可评估出一个特定UI自动化用例场景下,对应的每5秒 utime、stime是否有优化或者达标。

图四平均值评估CPU耗电

但如上,假设获得333.10jiffs/5s这个值,从标准上可以判定其不符合预期,那如何驱动开发去修改问题呢?

开发在得知这个结果之后,需要复现测试的场景,相当于重走了测试同学的执行路径。所以如果测试多走一步,开发就可以少走两步。借助Android Device Monitor工具(Android Studio -> Tools -> Android -> Android Device Monitor),我们可以获取到详细的ThreadJiffs数据。(Tips:DDMS Threads界面可以 ctrl+a全选,ctrl+c复制到excel做排序)。

图五DDMS分析线程CPU占用

在黑盒性能自动化发现有进程有CPU耗电异常之后,使用DDMS分析debug包,一般可以找出几个耗电大头线程。同时使用refresh功能,又可以大致查看到该线程到底是运行在哪些方法上。

通过以上的分析,基本上可以为业务开发找到CPU耗电元凶。其实如果没有前述的黑盒UI自动化框架,测试在黑盒测试中如果感觉到应用总是会导致手机发烫,也可以去用DDMS关注下各个线程的CPU占用时间,找出Thread元凶给开发修改。

关注微信公众号:腾讯移动品质中心TMQ,获取更多测试干货!

这里写图片描述

这篇关于【腾讯TMQ】【Android场景化性能测试专栏】CPU耗电性能篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902079

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测