专项测试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登录
- 把内容分享到微信
- 使用支付宝等支付手段
- 加载第三方的sdk:加载第三方的服务
- 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