Android App響應時間測試方法研究

2021-07-27 13:33:34 字數 3014 閱讀 5108

測試場景

說明同上

無網路請求的頁面響應時間

一般指從發起跳轉,到頁面完全載入出來的時間間隔

有網路請求的頁面響應時間同上

這些測試場景,目前業內也沒有成熟的測試方法。我們傳統的測試方法是掐秒錶或者在**裡面打日誌。但這樣誤差大,操作成本高,非常有必要改進。下面我們就來討論一下我們的改進思路。

對於測試方法的衡量,通常從兩個維度:準確性和效率。而帶來這兩方面提公升的方法一般是通過自動化的手段來進行。對於啟動時間和響應時間的測試,我們只做到了半自動化,但已經從很大程度上提高了準確度和效率。

一、啟動時間的測試(方案一)

環境依賴:

參考**:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import os,sys

import random,time

from com.android.monkeyrunner import monkeyrunner,monkeydevice

import thread

defgetlaunchtime

(startactivity):

#cmd = './tools/aapt %s | grep package' % apkpath

#pkginfo = output.split("name=/'")[1].split("/' ")[0]

#print pkginfo

#等待主機與android裝置連線

device = monkeyrunner.waitforconnection()

monkeyrunner.sleep(1)

#殺掉待測程式,通常用於排除干擾

cmd = 'am force-stop %s' % startactivity.split('/')[0]

device.shell(cmd)

running = true

starttime = time.time()

#print starttime

endtime = time.time()

#device.startactivity(component='com.pafinancialtech.shundebank/com.pingan.fstandard.activity.splashactivity')

device.startactivity(component=startactivity)

#print out

while running:

out = device.shell('dumpsys activity activities | grep mfocusedactivity')

#print out

if (out.find("splashactivity") == -1):

running = false

endtime = time.time()

#print endtime

print

if __name__ == "__main__":

getlaunchtime(sys.argv[1])

二、啟動時間的測試(方案二)

流程二

環境依賴:

參考**:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys

import random,time

from com.android.monkeyrunner import monkeyrunner,monkeydevice,monkeyimage

defgetlaunchtime

(screenshot,startactivity):

#等待主機與android裝置連線

device = monkeyrunner.waitforconnection()

#獲取初始頁面截圖,作為對比標準

result = monkeyrunner.loadimagefromfile(screenshot)

#殺掉待測程式,通常用於排除干擾

device.shell('am force-stop %s' % startactivity.split('/')[0])

#啟動待測程式的主activity

device.startactivity(component=startactivity)

#monkeyrunner.sleep(15)

starttime=time.time()

while

1: current=time.time()

mainpageimage=device.takesnapshot()

#print time.time()-current

if(result.sameas(mainpageimage,0.6)):

launchtime=current-starttime

print launchtime

break

if __name__ == "__main__":

getlaunchtime(sys.argv[1],sys.argv[2])

三、頁面響應時間的測試

頁面響應時間

依賴工具:

測試結果示例:

如下圖所示,計算出來的各個頁面的響應時間如下:

響應時間

響應時間優化

業務不停的迭代,加上打工人換了一波又一波,導致很多業務介面特別重,可讀性非常的差。最近專案在重構優化,部分介面平均響應時間在 1.5s 左右,對於使用者體驗來說,非常的不友好。本文旨在提出幾個介面優化的一些常用的辦法。1 優化的準則 一切的前提是業務價值需要。如果沒有足夠的價值,那麼可讀性才是第一,...

Eureka響應時間優化

1 心跳傳送時間間隔 eureka.client.leaserenewalintervalinseconds 2 心跳檢查間隔 eureka.server.evictionintervaltimerinms 3 readwrite 快取 同步到 readonly 快取中的 間隔時間 eureka.s...

通過Ethereal測量響應時間

我們在測試過程中有的時候響應時間可以通過客戶端效能測試工具獲得,但是有的時候不能,特別是非同步傳輸的系統,當系統請求發出後系統不是及時響應,而是通過後續的應用獲取資訊,這種情況下現有客戶端效能測試工具很難解決響應時間的衡量。因此在類似於此類測試過程中我們可以通過 ethereal 類似的協議分析工具...