性能测试之APP页面响应时长

用户角度来说,APP 页面请求的响应时间包括:

用户界面发送请求的时间 + 网络传输时间 + 服务端处理时间 (包括数据层的处理时间)+ 网络传输时间 + 用户端展示返回结果的时间,如下图:

响应时间

从概念上来说:响应时间,就是指应用系统从发出请求开始到客户端接收到所有数据所消耗的时间。该定义强调的是所有数据都已经被呈现在客户端所花费的时间。

需求:

一、APP启动时长

二、APP主要页面响应时长

一、APP启动时长测试

测试项:

1、刚下载后的启动时长;

2、下载后,启动过,杀死后台进程,在启动时长

3、下载后,启动后,置于后台,然后在启动到前台

4、应用界面切换时长

测试方案:

方法一:adb命令    adb shell am start -W -n packagename/activity

方法二: 抓取日志  (1)adb logcat -v threadtime >log.txt

                                    (2)检索关键词: displayed

                                      (3)检索需要的activity

故使用方法一测试1,2,3;方法二测试4,切换多页面求平均值

测试过程:

(1)下载APP,不启动 ------》adb shell am start -W -n com.gree.iems/.MainActivity ------》读取TotalTime的数值即可;

(2)下载APP,启动 ------》adb shell am force-stop com.gree.iems ------》adb shell am start -W -n com.gree.iems/.MainActivity ------》读取TotalTime的数值即可;

(3)启动APP ------》adb shell input keyevent 3 ------》adb shell am start -W -n com.gree.iems/.MainActivity ------》读取TotalTime的数值即可;

(4)启动APP,切换到不同功能页面 ------》adb logcat -v threadtime >log.txt ------》检索关键词: displayed ------》检索需要的activity------》读取TotalTime的数值即可;

(5)使用命令行方式统计多次启动某个Activity的平均用时可以在shell中执行如下指令:

adb shell am start -S -R 10 -W com.gree.iems/.MainActivity

其中-S表示每次启动前先强行停止,-R表示重复测试次数。每一次的输出如下所示信息。

Stopping: com.example.app

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.app/.MainActivity }

Status: ok

Activity: com.example.app/.MainActivity

ThisTime: 1059

TotalTime: 1059

WaitTime: 1073

Complete

其中TotalTime代表当前Activity启动时间,将多次TotalTime加起来求平均即可得到启动这个Activity的时间。

备注:实时监控当前正在运行的Activity命令

》adb shell

》logcat | grep ActivityManager

二、APP主要页面响应时长测试

测试方案:

1. 使用安卓自带 SDK 中的 adb shell  screenrecord     录制操作屏幕(MP4格式)

2. 使用 ffmpeg 转换MP4 为 AVI 格式 (需要下载解码器FMP4,点击下载ffshow)

3. 使用视频分析工具(帧分析)  VirtualDub

4. 找出用户点击屏幕的时间点和屏幕完全展示的时间点,两者差值就是app的响应速度

测试过程:

如何使用adb录制操作屏幕?

(1)安装adb

下载android-platform-tools 然后把路径添加到环境变量中

(2)连接手机或模拟机(记得数据线后连接手机)

打开开发者选项------》打开USB调试------》cmd窗口输入adb devices -l 检查连接是否成功

jiajiadeMacBook-Pro:~ jiajia$ adb devices

List of devices attached

S001070006321          device usb:338690048X product:G0215D model:G0215D device:G0215D transport_id:2

(3)录制视频

启动:jiajiadeMacBook-Pro:~ jiajia$ adb shell screenrecord /sdcard/demo1.mp4 

停止:^C

说明:录制手机屏幕,视频格式为mp4,存放到手机sd卡根目录下,文件名为demo1.mp4,默认录制时间为180s。 可以使用Ctrl + C 停止录制

保存: 

jiajiadeMacBook-Pro:~ jiajia$ adb pull /sdcard/demo1.mp4 /Users/jiajia/Desktop

/sdcard/demo1.mp4: 1 file pulled. 3.8 MB/s (7329786 bytes in 1.822s)

说明:导出视频的位置在桌面目录下,名称为demo1.mp4

如何获得Mac文件地址,把文件拉到终端,即可显示文件地址

备注:screenrecord是一个shell命令,支持Android4.4(API level 19)以上,支持视频格式: mp4

1. 指定视频录制时长,参数 --time-limit

adb shell screenrecord --time-limit 100 /storage/sdcard0/demorecord.mp4

2.  指定视频分辨率大小,参数 --size

adb shell screenrecord--size 1280*720 /sdcard/demo.mp4

  说明:录制视频,分辨率为1280*720,如果不指定默认使用手机的分辨率,为获得最佳效果,请使用设备上的高级视频编码(AVC)支持的大小

3.  指定视频的比特率, 参数  --bit-rate

adb shell screenrecord--bit-rate 6000000 /sdcard/demo.mp4

说明:指定视频的比特率为6Mbps,如果不指定,默认为4Mbps. 你可以增加比特率以提高视频质量或为了让文件更小而降低比特率

  4. 旋转90度,参数: --rotate

adb shell screenrecord--rotate /sdcard/demo.mp4

说明:此功能为实验性的,在nexus6设备上实验,录制的视频播放时也是旋转90度播放,体验不太友好。

D:\>adb shell screenrecord --help

Usage: screenrecord [options] <filename>

Android screenrecord v1.2.  Records the device's display to a .mp4 file.

Options:

--size WIDTHxHEIGHT

Setthe video size, e.g."1280x720".Defaultisthe device's main

display resolution (ifsupported),1280x720ifnot.Forbest results,

use a size supportedbythe AVC encoder.

--bit-rate RATE

Setthe video bit rate,inbits per second.  Value may be specifiedas

bitsormegabits, e.g.'4000000' is equivalent to '4M'.  Default 4Mbps.

--bugreport

Add additional information, suchasa timestamp overlay, thatishelpful

invideos capturedtoillustrate bugs.

--time-limit TIME

Setthe maximum recording time,inseconds.Default/ maximumis180.

--verbose

Display interesting informationonstdout.

--help

    Show this message.

(4)视频格式转换

1.下载离线包,点击下载

2.在安装目录下,shift+右键 打开命令行窗口  用命令进行格式的转换;

3.ffmpeg -i 原视频路径 转换后视频路径

eg:  ffmpeg -i F:\appium\demo1.mp4 -b:v 1712k -bufsize 1712k -maxrate 1712k -vf scale=320:640 F:\appium\demo2.avi

注释:设置高码率使视频更清晰  -b:v主要是控制平均码率;-bufsize 用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动;但bufsize和-maxrate需要同时设置。

总比特率(码率) 就是 视频的比特率加上音频的比特率 1106+128

(5)视频帧分析

如何对录制视频进行帧分析?

计算原理
视频分析工具是VirtualDub

实例说明

1. 寻找开始点

通过VirtualDub工具可以很容易的得到相关帧的数据,如下图。

从上图可以很清楚的看出,第69/70/71帧中,手指在逐步下降接近app图标;71帧的时候,手指达到最低点,之后,第72/73、74帧手指又逐步远离屏幕,因此第71帧(0:00:02:367)展示的基本就是用户点击屏幕的时间点。

2. 寻找结束点

通过VirtualDub工具可以很容易的得到相关帧的数据,如下图。

从上图可以很清楚的看出,从第100帧开始,应用的界面初步显示,直到第104帧完全显示出来;因此,第104帧就是用户界面完全展示的结束时间点(0:00:03:500)。

3. 计算响应时间

通过上面两个步骤得到了开始时间点(0:00:02:367)和结束时间点(0:00:03:500),这样两者相减就得出了app的响应时间为0:00:01:133,即1133ms。

特别说明

(1)为了尽可能的消除误差,这个过程最好重复5~10次,将测试结果取平均值;

(2)这种方法不仅仅能够测试app启动的响应时间,还可以验证app中某个功能的响应时间;

(3)手机app中某些界面的加载是依赖网络的,有时候这个响应时间受网络的影响比较大;

(4)这种方式也可以用来测试其它跟时间相关的场景。


参考资料:

http://blog.sina.com.cn/s/blog_6e22d8fb0102wobr.html

http://blog.sina.com.cn/s/blog_6e22d8fb0102wobr.html

http://blog.sina.com.cn/s/blog_7120c0be0100q5p7.html

https://blog.51cto.com/ournet/376882

https://www.jianshu.com/p/ddafe46827b7

https://www.jianshu.com/p/59a2ca7df681

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