测试APP启动耗时

热启动

  • "热启动" 是指您的应用已经启动且正在后台运行 (但被暂停了) 时的启动。
C:\Users\xxx>adb shell am start-activity -W -n com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.SplashScreenPresener
Starting: Intent { cmp=com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.SplashScreenPresener }
Warning: Activity not started, its current task has been brought to the front
Status: ok
LaunchState: HOT
Activity: com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.MainFragmentPresenter
TotalTime: 190
WaitTime: 60
Complete

冷启动

  • "冷启动" 是指您的应用在安装后的第一次启动、重启,或者不在后台时的启动。
  1. 一致性: 冷启动可以确保您的应用每次启动时都经历相同的操作。应用被热启动时,我们没法明确知道哪些步骤被跳过,而哪些步骤被执行,因而也无从得知您到底在对什么进行计时 (也无法保证重复测试时所测试的内容是否一致);
  2. 最坏情况: 按照定义,冷启动是最坏的情况——这是您的用户经历启动过程时间最长的场景。您需要专注于最坏情况的统计数据,而不是状况最好的热启动。如果您忽略最坏情况,许多重大问题将无法被解决。
C:\Users\xxx>adb shell am start-activity -W -n com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.SplashScreenPresener
Starting: Intent { cmp=com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.SplashScreenPresener }
Status: ok
LaunchState: COLD
Activity: com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.SplashScreenPresener
TotalTime: 3136
WaitTime: 3141
Complete

耗时说明

image
  • WaitTime 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;
  • ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时;
  • TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用 Activity pause 的耗时。也就是说,开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时

shell脚本控制

  • 性能测试总是应当多次去运行测试用例,以排除结果中的可变因素。进行的运行次数越多,平均结果就越可靠。
  • 确保每次冷启动应用(打开应用前先kill应用进程)
  • 设备CPU锁频(用户真实场景可能不会主动操作锁频,可忽略此项)
  • Windows机器使用Git Bash命令行启动./startAPP.sh
#!/bin/bash
#Author:wch
#Desc:测试应用启动性能
#Time:2021-04-20

echo "=========================start test==========================="
touch totalTime.csv
n=10

for i in `seq 1 $n`
do
   adb shell am force-stop com.xdja.safekeyservice
   sleep 2
   totalTime=`adb shell "am start-activity -W -n com.xdja.safekeyservice/com.xdja.scservice.presenter.activity.SplashScreenPresener|grep "TotalTime" | cut -d ' ' -f 2"`
   echo $totalTime && echo $totalTime >> totalTime.csv
   sumTotalTime=$(($sumTotalTime+$totalTime))
   sleep 3
done
echo 'avgTotalTime'=$(($sumTotalTime/$n))
echo "=========================end test==========================="
  • 返回TotalTime后可计算平均冷启动时间

    image
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言:App启动时间的测试的意义是对一个产品是否体验良好的标尺。平均每多一秒的启动时间,损失的用户数就会同比增加。...
    Aaron_fcff阅读 2,643评论 0赞 0
  • 手机APP的启动时长是一个很容易被用户感知的性能指标,启动时长过长会让用户极不愿意继续等待。因此启动时长是...
    _Minty阅读 2,183评论 0赞 2
  • 用于测试启动的 Shell 命令 本文的编写目的,更多的在于介绍性能、启动测试以及我进行启动测试背后的原因。但如果...
    谷歌开发者阅读 124评论 0赞 2
  • 第一步:首先测试APP冷启动时间建议打成正式包后来测试启动时间一 启动类型 工欲善其事,必先利其器。想要优化 Ap...
    Mr_Fly阅读 754评论 0赞 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 9,121评论 28赞 54

友情链接更多精彩内容