大家手机上都有用过各种不同类型的App,大家可以来说说,在App使用过程,你所关心的性能有哪些呢? 或者说有没有发现过你认为该情况是性能相关所导致的问题呢?
既然都有见过类似的问题,那为什么不考虑把App性能测试纳入到项目生命周期里面呢?
服务端性能测试在不断的实践中沉淀经验,制定并统一了性能压测计划、流程规范、度量指标等等,然而移动端性能在这些方面还是空白
虽然移动端性能普遍没有给予过多的关注和重视,但它却依旧在默默的发展和不断前进。在过去的几年里,一些自动化技术的出现也促使了移动端性能测试技术的快速成长。下面将从五个历程来概况总结一下
对于服务端的性能压测指标也是耳熟能详,如:接口指标:QPS、5XX、ReqTime;组件指标:MySQL、Redis、MQ、TW、Swoole;机器指标:CPU idle、MEM、磁盘IO、PHP-FPM等等。
移动端的性能指标较多,本期我们以电量为主,其他性能指标可后续作为系列课程进行分享。
目前我们常见的性能指标获取有这么几种途径方式:
MemoryTools的数据收集主要依靠安卓原生api。包含应用顶层Activity所在进程的PSS(Proportional Set Size,即实际使用内存)内存、Private Dirty(私
有内存)内存与全局占用内存,对于单进程应用,该数据表示该应用的内存占用情况;对于多进程应用,同CPU一样,Soloπ也支持自动切换顶层进程。
soloπ基于ActivityManager.MemoryInfo()方法获取内存信息。
本文介绍的电量统计的原理,并不涉及到硬件层面的功耗设计,仅从软件层面围绕以下几个问题进行分析:
手机上的任何系统服务、应用场景都是依赖于电量的基础上进行中,所以引起手机耗电的因素太多太多,下面列举了日常高频使用的一些耗电场景。
当用户点亮屏幕的时候,意味着系统的各组件要开始进行工作,界面也需要开始执行渲染。
当设备从休眠状态中,被应用程序唤醒时,可以看到在第一次唤醒时,出现一条电量使用高峰线。
360手机助手,当充上电的时候,才会自动清理手机垃圾,自动备份上传图片、联系人等到云端;再比如我们自己的APP,其中有一块业务是图片加载或课件下载
在手机上电压一般是恒定的,所以,计算耗电量只需要知道单位时间电流量即可。而单位时间电流量是由厂商给定的,定义在power_profile.xml中,
有了power_profile.xml这个文件描述的单位时间电流量,再收集硬件模块在不同状态下的使用时间,就能够近似的计算出耗电量了。
Uid与App关系:2个App签名和sharedUserId相同,则在运行时,他们拥有相同Uid。就是说processAppUsage统计的可能是多个App的耗电量数据,对于普通App,出现这种情况的几率较少,而对于Android系统应用则较为常见。
Android系统中各种子系统消耗的电量值、CPU运行速度值、总电量等信息都是以固定值的形式存储在power_profile.xml中。由于硬件之间的差异,各子系统耗电信息是不同的,因此此文件需要各生产厂商进行定制。
我们以高通8952的power_profile.xml为例
SystemServer在执行过程中首先会初始化一些系统变量,加载类库,创建Context对象,创建SystemServiceManager对象等之后才开始启动系统服务;
参考业界相关指标,先有后优策略
在 PC 上,通过 Android SDK 提供的ADB client 与同样运行于 PC 中的 ADB server 通信,再由 ADB server 通过 USB 与位于设备中的 Adbd 通信。要实现一套无线化的方案,必须要摆脱对 USB 线的依赖。好在 Android 系统还提供了一种基于 Socket 的 ADB 连接模式,既然是这样,那么只需要按照 ADB 通信协议在端上与本机的 5555 端口进行通信即可获得 ADB shell 的执行能力。
目前已经有一些实现 ADB 通信协议的 Java 开源项目,如 AdbLib ,他们封装了一套 ADB 的调试通信服务,能够替代 PC 上 ADB Server 的角色。我们在Soloπ应用中集成了 AdbLib 开源库,包装成一套 ADB 命令执行工具,为 Soloπ 后续各种专项测试能力的实现奠定了坚实的基础。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/te-ydd/8395.html