大家手机上都有用过各种不同类型的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π 后续各种专项测试能力的实现奠定了坚实的根本。