我的收藏

App启动时间测试

2019-10-29  本文已影响0人  Aaron_fcff

前言:App启动时间的测试的意义是对一个产品是否体验良好的标尺。平均每多一秒的启动时间,损失的用户数就会同比增加。一般大公司会在灰度期间做一轮启动时间的竞品测试,来对比本公司产品和竞争对手的app优劣。

一、安卓应用的启动时间计算

相对于ios而言,android的启动时间计算比较方便,只需要找到app的包名&启动Actibity即可。
1)获取包名:

adb shell pm list packages | grep app名称

2)获取启动Activity名:

adb shell dumpsys package 包名 | grep Start | grep Startup

3)获取app的启动时间(首先确认手机后台没有其他app进程):

 adb shell am start -W 包名/启动Activity

4)结果如下

Status: ok
Activity: xxx/xxxx
ThisTime: 178
TotalTime: 178
WaitTime: 197
Complete
⚠️*以TotalTime为准

WaitTime 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;
ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时;
TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用 Activity pause 的耗时。

二、iOS应用的启动时间计算

iOS的启动时间计算比较复杂,此处我会用到录制视频+python的视频分帧方法去逐帧逐毫秒去统计启动时间(耗时较长,不建议在测试时间较短进行):
1)同样要确保苹果手机后台没有app运行
2)下载iTools进行录制启动期间的视频(如果有其他更好的,你也可以自行选择)
3)打开iTools录制,再启动目标app(其中会存在误差,因为存在iTools的运行)
4)利用python的CV2&number库去对视频拆帧计算启动时间(其中也存在一定的误差,因为启动的开始与结束时间是人为决定的)
⚠️启动时间以图标变暗为准、结束时间以主页页面加载完整为准
以下贴出部分python切帧的代码(可自行百度):

des = 'tx_ncache_'
for i in range(2,3):
    vc = cv2.VideoCapture('D:/'+des+str(i)+'.mov') #读入视频文件
    c=1
    dir = 'D:/image/'+des+str(i)+'/'
    if vc.isOpened(): #判断是否正常打开
        rval , frame = vc.read()
        print rval
    else:
        rval = False

    timeF = 1  #视频帧计数间隔频率
    while rval:   #循环读取视频帧
        rval, frame = vc.read()
        if(c%timeF == 0): #每隔timeF帧进行存储操作

            cv2.imwrite(dir+str(c) + '.jpg',frame) #存储为图像
        c = c + 1
        cv2.waitKey(1)
    vc.release()
⚠️注意:测试启动时间可以以有缓存和无缓存、冷启动和热启动区分测试

(具体根据所给的测试时间和侧重点决定)

三、测试报告

这里给出一个较为好的竞品测试报告模版~


image.png
上一篇下一篇

猜你喜欢

热点阅读