专栏首页QA一隅APP性能测试—启动耗时

APP性能测试—启动耗时

应用启动是整个App工序的第一道流程。对于开发者,一般需要在应用启动过程中进行初始化工作,启动页的UI展示。而对于用户来说,启动速度的快慢则极大地影响了使用体验,并且间接地影响了用户的留存率。

应用的启动方式

  • 冷启动:当启动应用时,后台没有该应用的进程,这时系统会首先会创建一个新的进程分配给该应用,这种启动方式就是冷启动。
  • 热启动:当启动应用时,后台已有该应用的进程,这种启动方式叫热启动。
  • 一般测试过程中更多的关注冷启动时间。

Android 启动时间

App启动流程

开发应用的时候,一般会指定一个 mainActivity,可以使用命令aapt dump badging [pkg name] | findstr launchable-activity 用户在桌面上点击这个Activity 的时候,系统会直接起这个Activity. Activity在启动的时候会走 onCreate/onStart/onResume

  • onCreate()在活动第一次创建时被调用,主要用于加载布局。
  • onStart()这个方法在活动由不可见变为可见的时候调用。
  • onResume这个方法在活动准备好和用户进行交互的时候调用。

adb 命令方式获取

通过命令adb shell am start -W [PackageName]/[PackageName.MainActivity]获取启动时间。

λ adb shell am start -W com.youku.phone/com.youku.phone.ActivityWelcome
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.youku.phone/.ActivityWelcome }
Status: ok
Activity: com.youku.phone/com.youku.v2.HomePageEntry
ThisTime: 2152
TotalTime: 2750
WaitTime: 2759
Complete

这里面涉及到三个时间,ThisTimeTotalTimeWaitTime

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

iOS启动时间

Xcode iOS 时间统计

对于第一个时间 Pre-main Time,目前没有比较好的人工测量手段,好在 Xcode 自身提供了一个在控制台打印这些时间的方法:在 XcodeEdit Scheme -> Run -> Auguments 添加环境变量 DYLD_PRINT_STATISTICS并把其值设为 1,如下图:

对于第二个时间 Loading Time,比较好测量,我们可以在 main 函数开始执行和 applicationDidBecomeActive: 方法执行末尾时分别记录一个时间点,然后计算两者时间差即可。

iOS 耗时原理

对于 iOS App 来说,启动时间包括两部分:Launch Time = Pre-main Time + Loading Time,如下图所示

  • Pre-main Timemain 函数执行之前的加载时间,包括 dylib 动态库加载,Mach-O 文件加载等;
  • Loading Time 指 App启动时初始化的执行时间,同时包含首页 UI 被渲染并显示出来的耗时。

Time profile

我们还可以使用time profile,该工具是xcodeInstruments中的一个测试工具,可以用来测试函数耗时。

1.在Xcode中点击菜单Open Developer tool-> Instruments 如下图所示选择time profile

2、选择指定设备和应用点击开始执行即可查看各个函数的消耗时间。

本文分享自微信公众号 - QA一隅(sutune2020),作者:Sutune

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • APP性能测试—功耗测试

    功耗,通俗的理解即电流通过导体使设备运行,导体本身的电阻将电能转换为热能的过程,因此,通常功耗测试也叫电量测试。

    清风穆云
  • 【App测试】怎么测试启动时间?

    启动时间对于App的性能测试,启动时间是个重要指标,启动时间分为两种情况,一种是冷启动时间(通常是系统重启,即在启动前没有该App进程的情况),另一种是热启动,...

    何小伟
  • 探究 | App Startup真的能减少启动耗时吗

    “这些方法很久之前就知道了,不知道说点新东西?比如App Startup?能对启动优化有帮助吗?”

    码上积木
  • 移动APP测试之android性能测试

      当应用实现了新功能后,准备发布版本前,必须进行性能测试以确定没有性能问题,内存使用情况便是其中必须要测试的性能之一。由于内存组成的复杂性,并没有简单通用的方...

    小老鼠
  • 启动耗时可以这样测~

    启动耗时作为App一项核心性能指标,腾讯地图现在是基本上每个版本都会进行数据的收集。纵向的对比(与自己)之前我们都依赖于开发埋点,横向的对比(与竞品)就是人工拿...

    腾讯移动品质中心TMQ
  • 性能测试软启动初探

    在最近测试工作中,遇到了一些新的问题,也对自己的测试框架提出了新的需求,其中一个就是性能测试软启动的问题,还有一个就是高QPS提出新的挑战。

    FunTester
  • APP性能测试—PerfDog

    PerfDog是一个移动全平台Android/iOS性能测试、分析工具。可以快速定位分析性能问题。手机无需ROOT/越狱,手机硬件、游戏及应用APP也无需做任何...

    清风穆云
  • APP性能测试—网络测试

    当前APP网络环境比较复杂,移动运营商网络有2G、3G、4G、5G网络,甚至未来的6G网络,以及越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对...

    清风穆云
  • Android 性能测试之 CPU 耗电性能篇

    现有的耗电性能测试,除了高端深入带着原理去测试的方法,大多数都是读取系统文件或采用工具获取整体手机电流值,这样的方法受影响的因素多,数据波动大,可信度不高,同时...

    陈帅
  • iOS App 启动性能优化

    导语 本文介绍了如何优化 iOS App 的启动性能,分为四个部分: 第一部分科普了一些和App启动性能相关的前置知识 第二部分主要讲如何定制启动性能的优化目标...

    腾讯Bugly
  • 性能测试中记录每一个耗时请求

    在之前的文章性能测试中标记每个请求中提到,把每一个接口都进行requestID的标记,接下来的工作就简单了,就是设置各种超时配置,然后进行压测,会记录超时的请求...

    FunTester
  • 基于机器学习的启动耗时自动化测试方案

    当一个应用的用户越来越多,业务越来越复杂,性能问题就会突显,特别是在低端机上的用户感受尤为明显,甚至会影响到应用的用户活跃度、停留时长等重要指标,提升应用在中低...

    岛哥的质量效能笔记
  • APP性能测试—帧率

    无论是手机端还是PC端,画面的流畅度一直被用户视为衡量应用视觉体验的重要标准。而对开发者来说,帧率(FPS)通常作为衡量应用是否流畅的标准。

    清风穆云
  • 移动App专项性能测试(Android and iOS)

    一直以来,性能测试是被一部分人遗忘,又让另一部分人无可奈何的东西。在绝大部分的创业公司,性能测试基本上都是被遗忘的,他们认为功能测试和稳定性测试才是重点,而在中...

    测试开发技术
  • APP常见性能测试点之响应时间

      软件的响应时间和响应速度直接影响到用户的体验度,如果一个软件,迟迟加载不出来,会直接影响到软件的日活、留存。因此对于一个软件,对响应速度测试是必不可少的。

    小老鼠
  • APP性能测试方便了

    可能很多人都不是做APP开发的,但这个工具非常有用,可以推荐给做APP的朋友,一定会帮到他 腾讯开源了一个APP调试平台 - GT GT(简称随身调)是可以直...

    dys
  • Android APP性能及专项测试

    1、运行Monkey进行压力测试: adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 ...

    测试开发社区
  • App性能测试—CPU使用率

    CPU使用率是性能测试是一项重要指标,CPU占用过高会使得设备运行程序出现卡顿与发热,甚至出现应用程序Crash,影响用户体验。在排除硬件环境的限制下,应用程序...

    清风穆云
  • APP性能测试—过度绘制

    过度绘制就是在同一个区域中叠加了多个控件,也就是说一个像素点上会出现多个像素的叠加,实际上呈现在我们眼前的只是最上面的一个。

    清风穆云

扫码关注云+社区

领取腾讯云代金券