当前位置: 首页 > news >正文

APP测试-APP启动耗时

一、APP启动

APP启动一般分为冷启动和热启动;

  • “冷启动” 是指应用在安装后的第一次启动、重启,或者不在后台时的启动。

  • “热启动” 是指应用已经启动且正在后台运行 (但被暂停了) 时的启动。

二、环境准备

2.1 电脑端已安装配置adb环境

2.2 获取待测试APP的包名及Activity

2.2.1 手机连接PC后,打开待测试APP主界面

执行adb命令:adb shell dumpsys window |findstr mCurrentFocus

可获取到包名和Activity

三、APP启动耗时测试

方式一:使用adb shell am start-activity -W -n  包名/Activity名

3.1 热启动

执行如下命令:

adb shell am start -W -n com.xxxx.xxx/com.xxxx.xxx.xxActivity

说明:热启动时我们可以看到有Warning: Activity not started, its current task has been brought to the front,明显可以看出只是将应用调到前台

3.2 冷启动

 将待测试APP手动从后台任务中杀掉或者使用命令kill应用进程

然后执行如下命令:adb shell am start -W -n com.xxxx.xxx/com.xxxx.xxx.xxActivity

说明:冷启动中我们可以看到没有Warning提示了

TotalTime: 487   单位毫秒,表示应用启动耗时

方式二:使用adb logcat,过滤Displayed 关键字

3.3  执行命令adb logcat |findstr Displayed 后,在手动打开待测APP

或者执行命令;adb logcat -s ActivityTaskManager |findstr "Displayed"后,再手动打开待测APP

说明:

  • TotalTime包含:进程启动(若需新建)、资源加载、onCreate()到onResume()全生命周期、View树构建和测量布局等

  • Displayed时间仅到:完成首帧渲染(调用reportFullyDrawn()前)

四、APP冷启动性能

4.1 为何只测试冷启动性能

      冷启动可以确保应用每次启动时都经历相同的操作。应用被热启动时,我们没法明确知道哪些步骤被跳过,而哪些步骤被执行,也无法保证重复测试时所测试的内容是否一致;

     冷启动是最坏的情况——这是用户经历启动过程时间最长的场景。测试时需要我们专注于最坏情况的统计数据,而不是状况最好的热启动。

4.2  测试步骤

     性能测试需要多次去运行同样的测试用例,以排除结果中的可变因素。进行的运行次数越多,平均结果就越可靠。

    确保每次冷启动应用(打开应用前先停止应用进程)

    获取应用每次冷启动的时间并写入csv文件

    返回TotalTime后可计算平均冷启动时间

    将脚本保存为bat文件

Windows电脑双击startApp.bat运行,脚本如下:

说明:

“tokens=2”表示用tokens提取第二列的字符串

"delims=:"表示定义冒号“:”为分隔符,并用该分隔符“:”切分文本字符串

执行后,结果如下:

注:脚本中执行adb命令过滤字段值时需要注意‘|’的转义,否则无法取出TotalTime的值

'adb shell "am start -W -n com.xxxx.xxxx/com.xxxx.xxxx.xxx.xxActivity ^| grep TotalTime"'

相关文章:

  • 免费网站建设哪个好汕头网站建设优化
  • 唐山app开发日照网站优化公司
  • 常用来做网站首页品牌推广软文案例
  • 网站建设的利益网络营销推广专家
  • 石家庄招标网官方网站西安做推广优化的公司
  • 大型网站都怎么做推广如何在百度推广自己
  • Android 9.0(API 28)后字重设置
  • LeetCode热题100—— 35. 搜索插入位置
  • ubuntu22.04修改IP地址
  • 战略调整频繁,如何快速重构项目组合
  • Spring Boot整合FreeMarker全攻略
  • 基于STM32的快递箱的设计
  • 对人工智能的厌倦感是真实存在的,而且它给品牌带来的损失远不止是参与度的下降
  • Android edge-to-edge兼容适配
  • Git 子模块 (Submodule) 完全使用指南
  • 【Vue】 keep-alive缓存组件实战指南
  • AI智能化高效办公:WPS AI全场景深度应用指南
  • MySQL之SQL性能优化策略
  • LayUI的table实现行上传图片+mvc
  • PyTorch topk() 用法详解:取最大值
  • CI/CD GitHub Actions配置流程
  • mongoose解析http字段值
  • 【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置与高效微调 Qwen2.5-VL
  • 走近科学IT版:FreeBSD系统下ThinkPad键盘突然按不出b和n键了!
  • Android中Navigation使用介绍
  • QT Creator的快捷键设置 复制当前行 ctrl+d 删除当前行 ctrl +y,按照 AS设置