美文网首页
【专项测试】App启动性能分析的笔记

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

作者: 霍格沃兹测试学院 | 来源:发表于2020-12-28 15:48 被阅读0次

    专项测试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启动性能分析的笔记

          本文链接:https://www.haomeiwen.com/subject/owqtoktx.html