【专项测试】App启动性能分析的笔记

专项测试checklist
性能测试
耗电量测试
batteryhistory
instruments
卡顿测试
blockcanary
h5性能测试
devtool
headless
chrome
场景测试
兼容性测试
mqc mtc testln
appium grid stf
健壮性测试
monkey
弱网测试
facebok atc
proxy定制
安全测试
wvs
burpsuite

专项测试(技术维度)
崩溃
自动遍历
monkey测试
横竖屏切换、快速进退
卡顿(掉帧、gc、cpu)
卡顿测试
内存泄漏测试
method profile
响应慢(启动时间、交互响应、H5)
冷热启动
界面切换
h5性能测试
发热(cpu、mem、io、network、gps等硬件使用)
method profile
gc统计
io统计
流量统计
硬件使用统计
耗电量分析
兼容性问题(机型覆盖、回归)
兼容性测试
自动化测试
自动遍历
monkey测试

Activity启动流程
含义:在app中,每一个页面就是一个Activity

启动过程
启动app:创建一个空白的窗口,启动app的进程
启动application onCreate:创建一个对象
启动MainTread主线程
activity init:页面进程的创建,init都是进程创建
Activity onCreate:创建activity对象,渲染整个页面,创建好后,替换空白的页面,就是整个==displayed time==结束的时候
other stuff:动态加载页面的过程,比如加载js、php等动态资源
主要流程
application onCreate
加载第三方的sdk:加载第三方的服务
登录使用第三方qq登录
把内容分享到微信
使用支付宝等支付手段
Activity onCreate(占用时间最长)
加载自身的逻辑
发送远程数据请求 xxx.json
渲染界面list
app启动性能指标
冷启动(最重要)

时间:从application onCreate到displayed time之间
通俗含义:app没有启动或app进程被杀
暖启动

app已经启动了,但是很久没有使用,手机内存把app进程杀掉,但对象还在保留
热启动

app进程在后台,没有被内存杀掉,进入app时只是把后台带到前台给用户展示
首屏启动(好像没有这个)

百度了很久好像都没这个东西,估计是指打开之后有一个广告的展示?
建议时间(不是特别标准,了解即可)

冷启动5秒
暖启动2秒
热启动1.5秒

app启动时间测试方法以及工具
adb logcat(时间不太准确)
原因:空白页、广告时间,动态加载其实adb logcat都无法记录,只有一个主“页面”或者进入其他页面之后的时间
录屏+视频拆帧(最准确)
uiautomator等自动化工具200ms
traceview
硬埋点(不同硬件之间,一个统一测试启动时间的方法)
adb logcat
操作步骤
清理缓存数据:adb shell pm clear package
停止进程:adb shell am force-stop package
启动app:adb shell am start -S -W package/activty
获取数据:adb logcat | grep -i displayed
结果
startTime:记录刚准备调用stratActivityAndWait()的时间点
endTime:记录stratActivityAndWait()函数调用返回的时间点
WaitTime:stratActivityAndWait()的调用耗时
WaitTime=endTime-startTime
实战
记录雪球的启动时间

C:\Users\user>adb shell pm clear com.xueqiu.android
Success

C:\Users\user>adb shell am force-stop com.xueqiu.android

-W: wait for launch to complete

-S: force stop the target app before starting the activity

C:\Users\user>adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
Stopping: com.xueqiu.android
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xueqiu.android/.view.WelcomeActivityAlias }
Status: ok
Activity: com.xueqiu.android/.view.WelcomeActivityAlias
ThisTime: 1063
TotalTime: 1063
WaitTime: 1111
Complete

C:\Users\user>adb logcat | grep -i displayed
05-03 05:06:19.698 951 986 I ActivityManager: Displayed com.xueqiu.trade.android/com.xueqiu.android.base.h5.H5Activity: +490ms
05-03 05:08:00.489 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.search.USearchActivity: +214ms
05-03 05:10:00.307 951 986 I ActivityManager: Displayed com.xueqiu.android/.view.WelcomeActivityAlias: +1s63ms
05-03 05:10:02.058 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.MainActivity: +590ms
05-03 05:10:06.771 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.UpdateDialogActivity: +105ms
05-03 05:11:19.856 951 986 I ActivityManager: Displayed com.xueqiu.android/.view.WelcomeActivityAlias: +728ms
05-03 05:11:21.266 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.MainActivity: +955ms

使用ffmpeg拆针
操作步骤
要先吧ffmpeg的程序下载了,然后配置环境变量,请在官网下载windows的版本吧,环境配置特别简单

清除app的缓存:adb shell pm clear package
强制停止app的进程,处于冷启动的状态adb shell am force-stop package
录制一个时间为30秒的视频,并保存在sdcard中:adb shell screenrecord --bugreport --time-limit 30 /sdcard/1.mp4 &
启动app:adb shell am start -S -W package/activity
把文件pull到当前文件夹:adb pull /sdcard/1.mp4 .
把录制的视频转化成gif,感觉没卵用:ffmpeg -i 1.mp4 xueqiu.gif
ffmpeg -i 1.mp4 -r 10 frames_%03d.jpg
-i后面跟要处理的视频文件
-r表示一秒要拆多少帧,如果是30秒的视频,就会拆成300张图片
%03d表示文件从001开始,到最后的300
把1.mp4的视频拆成300张图片,一张图片的时间为0.1秒
==注意:使用方法7时,尽量把视频放在一个文件夹里面==

实操
C:\Users\user>adb shell pm clear com.xueqiu.android
Success

C:\Users\user>adb shell am force-stop com.xueqiu.android

C:\Users\user>adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
Stopping: com.xueqiu.android
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xueqiu.android/.view.WelcomeActivityAlias }
Status: ok
Activity: com.xueqiu.android/.view.WelcomeActivityAlias
ThisTime: 1063
TotalTime: 1063
WaitTime: 1111
Complete

C:\Users\user>adb pull /sdcard/1.mp4 .

C:\Users\user>ffmpeg -i 1.mp4 -r 10 frames_%03d.jpg

(文章来源于霍格沃兹测试学院) 更多技术文章可点击http://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/3822

你可能感兴趣的:(【专项测试】App启动性能分析的笔记)