App中如何测试启动时间

92次阅读
没有评论

共计 2095 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍了 App 中如何测试启动时间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

背景介绍

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),并按帧播放。如下图所示:  图 3 具体每步做了哪些,可以参照下表。 

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

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

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“App 中如何测试启动时间”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2095字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)