【App测试】怎么测试启动时间?

版权声明:本文由何小伟原创文章,转载请注明出处: 
文章原文链接:https://www.qcloud.com/community/article/687066001482481827

来源:腾云阁 https://www.qcloud.com/community

背景介绍

Android用户也许会经常碰到以下的问题: 1)应用后台开着,手机很快没电了——应用耗电大; 2)首次/非首次启动应用,进入应用特别慢——应用启动慢; 3)应用使用过程中,越来越卡——CPU能力不足/内存泄露; 4)应用页面卡顿——帧率较低、页面卡顿。 因此,对开发的Android应用,必须对其进行性能测试,不然将会直接影响用户体验。

Android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等。本次先介绍启动时间的测试方法。

启动时间对于App的性能测试,启动时间是个重要指标,启动时间分为两种情况,一种是冷启动时间(通常是系统重启,即在启动前没有该App进程的情况),另一种是热启动,即App从被切换到前台(点back退出后再点击图标启动)。QA测试时,一般关注冷启动的启动时间。以下介绍三种测试启动时间的方法,供大家参考,可以有针对性的使用。

1.1 使用adb命令

1.1.1 测试方法 输入adbshell am start -W packagename/MainActivity命令,计算启动时间。如下图: 

图1应用第一次启动也就是我们常说的冷启动,这时候你的应用程序的进程是没有创建的. 这也是大部分应用的使用场景.用户在桌面上点击你应用的 icon 之后,首先要创建进程,然后才启动 MainActivity.这时候adbshell am start -w packagename/MainActivity 返回的结果,就是标准的应用程序的启动时间。注意Android 5.0 之前的手机是没有WaitTime这个值的。关于ThisTime/TotalTime/WaitTime的区别,下面是其解释。 WaitTime=endTime-startTime

  • startTime记录的刚准备调用startActivityAndWait()的时间点
  • endTime记录的是startActivityAndWait()函数调用返回的时间点
  • WaitTime = startActivityAndWait()调用耗时。

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

总结一下,如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime。

1.1.2 总结

该方法算出的时间是系统从开始处理启动activity的时间到完成运行layout和draw函数的时间,简单的理解就是启动这个Activity的时间,并不包括点击icon到系统接收到消息的时间。显然,这个时间并不能完整的模拟用户操作场景的启动时间。其次该方法只计算一个Activity的整体启动时间,没有分别统计其中每个函数的时间,不便于定位问题。针对这两个问题,我们接下来看一下下面两个方法是怎样解决的。

我们在测试中关注的其实是用户体验的启动时间,那么上面的时间就不能满足我们的需求了。既然是用户体验我们可以用更直观的方式,使用screenrecord进行屏幕录制然后分析视频。

1.2 使用screenrecord进行屏幕录制

1.2.1 测试方法 (1)输入命令adb shellscreenrecord --bugreport /sdcard/lanch.mp4--bugreport 参数会使视频输出一些时间信息和帧信息便于我们分析启动时间。 (2)点击收集图标,app完全启动后,使用ctrl+c结束视频录制。 (3)使用命令adb pullsdcard/lanch.mp4 ./,导出视频 (4)导出视频到电脑,使用可以按帧播放的视频软件打开(mac上quicktime就可以,win下可以用kmplayer),并按帧播放。 如下图所示: 图2按帧播放视频,视频左上角会显示每一帧的时间(精确到ms)和帧数。如图,11:09:38.031表示时分秒,f=333是帧数。在视频中会看到icon会变暗然后高亮,高亮时就是系统开始处理本次icon点击事件了。可以把这里作为点击时间,然后根据体验要求,看到app启动页完全绘制完作为终止时间,这个时间减去点击时间就是app的启动时间。

1.2.2 总结 该方法虽然可以模拟用户的操作场景,但是操作成本较高且无法准确清晰明了的知道哪些函数调用时间过长。 以上两种方法,单从启动时间看,是无法定位出具体哪个函数耗时多一些,遇到启动时间大于预定的启动时间阀值时,需一步步的打log,分析查明原因。下面的方法是贴吧目前计算启动时间的办法,可以很清晰的看到每个函数的调用时间。

1.3 代码埋点,查看输出日志

1.3.1 测试方法 在代码中打点,输出日志查看。拿贴吧举例,下图是整个启动要经历的操作。 图3具体每步做了哪些,可以参照下表。 图4这样通过打点输出日志来测试启动时间,QA就可以很方便的查看到具体每个模块的耗时时间了,如下图。

1.3.2 总结 这样打点,可以清晰明了的看出Activity的总耗时及各个函数的耗时情况,这样在测试过程中,如果遇到问题可以很容易的定位到具体的函数。在测试过程中也有针对点,比如贴吧直播后续会以插件的形式整合到贴吧里,测试时,可以多关注plugin初始化的时间。

针对启动时间这一性能指标,个人觉得打点输出日志的方式较为理想,QA在测试过程中发现有疑似问题后,可以给出具体的函数耗时时间。

时间: 2024-10-01 07:29:26

【App测试】怎么测试启动时间?的相关文章

app的版本升级测试

从已有的项目经验来看,APP的升级测试需要考虑以下几个方面: 1. 正常的下载升级过程 1. 考虑iOS和安卓的下载渠道不同 iOS的下载来自于AppStore Android的升级来自于官网下载或者是各个渠道 2. 考虑网络的影响 2G/3G/4G wifi下是否都能正常升级或者能够基于流量的影响进行智能下载 3. 考虑中断下载和升级过程后是否和继续或者重新下载和升级 手动中断后可以继续进行相关操作 4. 考虑断电和内存不足的问题 能够继续进行相关升级,对于内存有友好的提示 5. 考虑应用权限

APP功能点测试

一.移动互联网特点: 1,用户体验至上:精准的用户体验 2,核心竞争力:市场占有率和业务创新能力 3,营销模型:通过口碑传播吸引客户,随之参与互动(如分享等,对接口测试要求高) 二.项目特点: 1,开发周期短 2,创意高于一切 3,项目研发成本相对较低 4,需求多变且不明确 5,常采用敏捷开发模型 三.测试关注: 终端: 1, 整机测试 2, App测试 服务端: 1, 服务端软件测试 2, 大数据分析与挖掘 四.测试类型: 功能,性能,自动化 五.app测试点 1,安全测试 A,软件权限 B,

跨多个App的UI测试

本文翻译自:Testing UI for Multiple Apps 水平有限自己感觉很多地方表达的并不到位,但找不到更好的表达方式,如果您觉着有更好的表达方式,帮助我改进! 跨越多个App进行UI测试 通过跨越多个APP之间的交互来测试你的APPUI,让你确认你的APP表现是否正确,比如:用户在你的APP和其他APP之间或者进入系统UI之间进行切换操作时.一个例子比如用户切换至短信APP它允许用户输入一个文本消息,然后切换到Android通讯录来选择要发送的目标,然后再返回短信APP来发送短信

如何使用TestFlight进行App构建版本测试(转)

在日常的开发当中,当一个项目在开发过程中或者完成准备上线,都需要我们进行真机测试,否则不可能开发完了就直接扔到了App,等上线了再下载看看,这都是不可能的.那么说到真机测试,大家肯定会想到弄一个99美刀的开发者账号,然后在开发者账号中把自己的设备注册成测试机,下载一个证书,一个描述文件,安装,运行,搞定.我平时也是这么搞得,但是对于高度强迫症的我来说,在项目发布前还是不放心使用测试机进行测试,万一把测试环境的版本传上去怎么办,所以这个时候我习惯性的就会使用TestFlight进行测试一下,不求别

iOS开发实用技巧—打包app发给测试人员测试

iOS开发实用技巧—打包app发给测试人员测试 说明:在项目开发过程中经常需要开发人员将项目打包成ipa包后,发给测试人员进行测试.本文贴图对打包的过程简单介绍. 一.Product ->archive (注意,不能是模拟器状态,如果当前调试状况是模拟器的话,则archive为灰色不可点击) 模拟器情况下: 剩余步骤: 选择 证书 生成ipa包 保存 注意:在打包的同时保存xcarchive文件,以备将来查看应用的crash日志.

一些通用的触发移动App崩溃的测试场景

一些通用的触发移动App崩溃的测试场景,如下: 1 验证在有不同的屏幕分辨率,操作系统和运营商的多个设备上的App行为. 2 用新发布的操作系统版本验证App的行为. 3 验证在如隧道,电梯等网络质量突然改变的环境中的App行为. 4 通过手动网络从蜂窝更改到Wi-Fi ,或反过来,验证App行为. 5 验证在没有网络的环境中的App行为. 6 验证来电/短信和设备特定的警报(如警报和通知)时的App行为. 7 通过改变设备的方向,以不同的视图模式,验证App行为. 8 验证设备内存不足时的Ap

互联网App应用程序测试流程及测试总结

近年来随着移动互联网发展迅猛,APP也进行了爆发式的增长,相应的APP的测试检测就摆在每家企业眼前,以下是由国内应用安全检测团队-爱内测(www.ineice.com)的CTO为我们介绍App应用程序测试流程及测试总结: 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向主管确认项目排期. 1.3测试资源 测试任务开始前

App测试1-App测试概述

App测试的分类 1.UI测试 2.功能测试 安装:断网.弱网.安装后删除安装文件 卸载. 更新 3.兼容性测试 4.稳定性测试:monkey 5.极限测试 耗电量测试: 1) 2) 弱网环境测试:https://www.cnblogs.com/rookie-c/p/5753422.html 6.性能测试 6.回归测试 7.上线测试 原文地址:https://www.cnblogs.com/runoob/p/9573255.html

使用fiddler进行app弱网测试

转自:http://www.51testing.com/html/01/n-3727001.html APP弱网模拟测试 移动端测试区别于PC端测试的一点就是网络的多变性:不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响. 例如:进地铁.上公交.进电梯等,如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到APP闪退.ANR.数据丢失等问题.因此,app网络测试,特别是弱网测试显得尤为重要. 利用fiddler的Simulate Modem Speeds功能,可

日程管理APP测试计划及测试矩阵

1.测试计划 测试编号 测试类型 测试内容 测试环境 开始时间 结束时间 1 单元测试 是否对用户名.密码的格式进行限制 Android 5.1 2016.12.12 2016.12.12 2 功能测试 注册.登录是否正常 Android 5.1 2016.12.12 2016.12.13 3 功能测试 日程是否可以正常添加 Android 5.1 2016.12.14 2016.12.16 4 功能测试 有日程当天是否提醒用户 Android 5.1 2016.12.17 2016.12.19