【专项测试】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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,724评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,104评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,142评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,086评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,076评论 5 370
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,914评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,220评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,871评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,318评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,834评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,951评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,574评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,162评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,162评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,383评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,349评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,652评论 2 343

推荐阅读更多精彩内容