日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

app性能测试

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 app性能测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 app性能測試

提到APP的性能測試這個概念比較籠統,因為APP的性能測試分為服務端的性能和手機端的性能測試

1.1 app服務端性能測試

app服務端的性能測試,利用jmeter等工具模擬并發,壓測服務器系統,服務端性能測試,一般可以通過接口來測,關注的指標主要包括以下幾個:

平均響應時間

錯誤率

吞吐量

CPU/內存占用率

網絡/硬盤的讀寫速度

1.2 app客戶端性能測試

app客戶端的性能測試,主要是指app運行操作過程當中,監測當前手機系統的一些性能指標,以此來確定app的性能是否會影響到用戶的體驗。app的性能指標主要包括以下幾個:

啟動速度

CPU占用率

內存占用率

電量消耗

流量消耗

流暢度

2 測試方案及工具選擇

2.1 perfdog

官網:https://perfdog.qq.com/

介紹:騰訊出品的移動全平臺iOS/Android性能測試、分析工具平臺。

特點

  • 無需ROOT/越獄
  • 支持移動全平臺
  • 數據準確,工具本身對測試設備CPU的性能影響<1%,幀率無影響
  • 應用廣泛支持所有APP應用、游戲、小程序、小游戲、H5、web等
  • 云端數據在線分析
  • 支持團隊合作
  • 2.2 測試方案

    2.2.1 啟動時間

    手機APP的啟動時長是一個很容易被用戶感知的性能指標,啟動時長過長會讓用戶極不愿意繼續等待。因此啟動時長是一項比較靠前的性能指標。APP的啟時長分為兩種情況,一種是冷啟動時間,另一種是熱啟動。

    冷啟動:應用序首次啟動,進程首次創建并加載資源的過程
    熱啟動:指app沒有被后臺殺死,仍然在后臺運行,通常我們再次去打開這個app,這種啟動方式叫熱啟動

    1)場景設計

  • 冷啟動

    場景設計:清除后臺所有應用,等待數秒 ,啟動軟件

  • 熱啟動

    場景設計:切換到桌面,等待數秒 ,重新切換回應用

  • 2)測試方法

    • 使用adb命令進行測試

      • 冷啟動:應用進程首次啟動

        • adb shell am start -W 包名/界面名
      • 熱啟動:切換到主頁后再啟動應用

        • adb shell input keyevent 3
        • adb shell am start -W 包名/界面名

    3)結果分析:

    通過adb命令可獲取的時間如下:

    ThisTime :該界面 ( activity ) 啟動耗時(毫秒)

    TotalTime :應用自身啟動耗時 = ThisTime + 應用 application 等資源啟動時間(毫秒)

    WaitTime :系統啟動應用耗時 = TotalTime + 系統資源啟動時間(毫秒)

    如何確定啟動時間是否符合標準?

  • 根據用戶體驗

  • 和以往版本進行對比

  • 橫向對比,和同類產品一起測試,不超過同類產品的1倍

  • 2.2.2 流暢度(FPS)

    FPS是圖像領域中的定義,是指畫面每秒傳輸幀數,通俗來講就是指動畫或視頻的畫面數。FPS是測量用于保存、顯示動態視頻的信息數量。每秒鐘幀數愈多,所顯示的動作就會愈流暢。

    FPS(1s內游戲畫面或者應用界面真實平均刷新次數,俗稱幀率/FPS)

    • AVG(FPS):平均幀率(一段時間內的平均FPS)
    • Var(FPS):幀率方差(一段時間內FPS方差)
    • Drop(FPS):降幀次數(平均每小時相鄰的個FPS點下降大于8幀的次數)

    Jank(1s內卡頓次數)

    • BigJank:1s內嚴重卡頓次數
    • Jank(/10分鐘):平均每十分鐘卡頓次數
    • BigJank(/10分鐘):平均每十分鐘嚴重卡頓次數

    FTime(上下兩幀畫面顯示時間間隔,即認定為幀耗時)

    • AVG(FTime):平均幀耗時
    • Delta(FTime):增量耗時(平均每小時兩幀之間時間差>100ms的次數)

    PerfDog-Stutter(卡頓率)

    PerfDog Stutter 定義:測試過程中,卡頓時長的占比。即Stutter(卡頓率)=卡頓時長/總時長

    1)場景設計

    打開被測軟件的每一個頁面進行測試

    2)測試方法

    在app上進行操作,使用perfdog工具采集數據

    3)結果分析:

    游戲方面

    ? 游戲流暢度是最影響用戶體驗的,所以需要重點關注FPS、Jank及卡頓率。

    APP方面

    APP也需要關注FPS、Jank及卡頓率。只是需要區分使用場景,具體的數據對比可以和以往版本進行對比,也可和競品橫向對比。

    ? 1) 靜態頁面窗

    ? 只需關注FPS,理論FPS應該為0,否則,說明有冗余刷新,容易引起手機發熱及耗電。

    ? 2) 有滾動動畫頁面窗口

    ? 只需關注FPS,FPS處于合適值即可,無需高頻刷新。

    ? 3) 快速滑動頁面窗口

    ? 需要關注FPS、Jank及卡頓率。一般滑動狀態下,幀率越高越好,Jank越小越好。

    ? 4) 播放視頻頁面窗口

    ? 需要關注FPS、Jank及卡頓率,視頻卡頓直接影響用戶。視頻一般幀率18-24幀,Jank=0。比如微信播放視頻、視頻播放器等。

    2.2.3 CPU利用率

    某些場景下我們去使用App,可能會碰到手機會出現發熱發燙的現象。這是因為CPU使用率過高、CPU過于繁忙,會使得整個系統無法響應用戶,整體性能降低,用戶體驗變得相當差,主要關注的是cpu的占用率

    • CPU Usage:傳統cpu利用率,也叫未規范化cpu利用率

      • 計算方法:當前時刻cpu頻率下,CPU Usage = CPU執行時間/CPU總時間,一般adb等獲取的都是未規范化的cpu利用率
    • CPU Usage(Normalized):規范化cpu利用率

      • 由于移動設備CPU頻率時刻變化,用傳統CPU利用率計算方法,假定在低頻率時刻計算出CPU利用率=30%,和在CPU高頻時刻計算出CPU利用率=30%。同樣都是30%但性能消耗是完全不樣的,明顯高頻消耗更高。傳統CPU利用率已無法真實反映性能消耗。

        所以我們需要一種規范化(可量化)的統計方式。將頻率因素考慮進去。

        CPU Usage(Normalized)= (CPU執行時間/CPU總時間) * (當前時刻所有CPU頻率之和/所有CPU頻率最大值之和)。

    1)CPU 測試場景設計

    • 測試點:

    • 空閑時間(切換至后臺)的消耗,基本沒大應用使用cpu

    • 在運行一些應用的情況下,cpu已占50%的情況下,觀察應用程序占用cpu的情況

    • 在高負荷的情況下看CPU的表現(cpu占用應是在80%以上)

    • 具體場景:

    • 應用空閑狀態運行監測CPU占用率,空閑狀態:應用按Home鍵退到后臺,不再占用系統的狀態(通常是滅屏半分鐘后),CPU占用率=0%
    • 應用中等規格運行監測CPU占用率,中等規格:模擬用戶最常見的使用場景,CPU占用率≤30%
    • 應用滿規格長時間正常運行監測CPU占用率,CPU占用率≤30%
    • 應用正常運行期間監測CPU占用率峰值,應用正常運行:打開應用進行基本操作,CPU占用率≤50%

    2)測試方法

    使用perfdog采集不同場景數據

    結果分析:

    • 和自身app的上個版本對比
    • 和競品對比
    • 自身app各個界面對比
    2.2.4 內存

    在Android系統中,每個APP進程除了同其他進程共享內存(shared dirty)外,還獨用私有內存(private dirty),通常我們使用PSS(私有內存+比例分配共享內存)來衡量一個APP的內存開銷

    app內存有以下幾個:

    VSS- Virtual Set Size 虛擬耗用內存(包含共享庫占用的內存)

    RSS- Resident Set Size 實際使用物理內存(包含共享庫占用的內存)

    PSS- Proportional Set Size 實際使用的物理內存(比例分配共享庫占用的內存)

    USS- Unique Set Size 進程獨自占用的物理內存(不包含共享庫占用的內存)

    一般來說內存占用大小有如下規律:VSS >= RSS >= PSS >= USS

    而perfdog的Memory也就是Android PSS Memory,也是我們通常用作代表內存的數據,是實際使用內存的物理內存大小

    1)內存測試場景設計

    空閑狀態:切換至后臺或者啟動后不做任何操作,消耗內存最少

    中強度狀態:時間偏長的操作應用

    強度狀態:高強度使用應用,可以跑monkey來測試(通常用來測內存泄漏)

    內存泄漏:指應用里的內存一直沒有釋放,內存一直增加 ,系統內存一直減少

    2) 測試方法

    使用perfdog采集不同場景數據

    3) 結果分析:

    退出某個頁面后,內存是否有回落

    進行某個操作后,內存是否增長過快

    舊版本和新版本比較

    新版本和競品比較

    2.2.5 流量

    目前的網絡類型包含2G\3G\4G\wifi,其中還有不同運營商的區分,我們在APP的使用中經常遇到大資源,重復請求,調用響應慢,調用失敗等各種情況。在不同的網絡類型之下,我們不僅要控制流量使用,還需要加快請求的響應。

    1)流量測試場景設計

  • 安裝后首次啟動到全部加載完成的所有耗流
  • 非首次啟動到全部加載完成的所有耗流
  • 后臺運行耗流
  • 運行某個業務場景消耗的總流量
  • 2)測試方法

    使用 perfdog 測試工具采集流量數據

    注意! perfdog流量測試僅支持wifi連接狀態

    3)測試結果與分析

    舊版本和新版本比較

    新版本和競品比較

    場景耗流是否通過
    打開登錄頁面,輸入用戶名與密碼進行登錄,點擊簽到并簽到成功xxx KB是/否
    打開商品搜索頁,搜索xxx,直到第一頁搜索的內容全部展示出來xxx MB是/否
    2.2.6 電量

    對于PC來說,移動設備的電池電量是非常有限的,保持持久的續航能力尤為重要。我們必須要慎重檢查APP的電量使用,以免導致用戶手機耗電發熱,帶來不良體驗

    1)耗電量測試場景設計

  • GPS定位,比如:導航類軟件需要獲取實時位置的時候
    • 場景設計:打開xx導航軟件,開啟GPS定位,保持在導航頁面中運行十分鐘后,關閉GPS定位
    • 原因:開啟GPS定位會使用到手機的傳感器,所以需要測試開啟該功能后的電量消耗
  • 屏幕亮度,比如:用戶站在太陽地下看不清屏幕時會調亮手機亮度
    • 場景設計:手機亮度設置為100%的亮度,打開xx軟件運行十分鐘后退出軟件,關閉后臺
    • 原因:測試不同屏幕亮度時軟件的耗電量
  • 網絡傳輸,比如:即時類聊天軟件需要時刻保持網絡暢通,或者是一些類似于播放視頻軟件需要大量使用到網絡的軟件
    • 場景設計:打開xx視頻軟件,觀看視頻十分鐘后退出軟件,關閉后臺
    • 原因:使用網絡時會調用到手機的信號接收、發送模塊,這個情況下如果程序沒有進行合理的調用,會導致這些模塊一直在被使用,導致電量消耗大
  • cpu頻率,需要大量運算的頁面,比如:頁面中有大量動圖、視頻需要處理,或者大量圖表需要繪制
    • 場景設計:打開xx炒股軟件的股票走勢頁面,停留十分鐘后退出軟件,關閉后臺;
    • 原因:在需要動態加載圖表的頁面時會使用到CPU進行運算繪制,如果程序中出現冗余的循環邏輯時會使CPU進行不必要的負載,導致耗電量劇增
  • 內存調度,比如:每次加載頁面都需要加載圖像的頁面
    • 場景設計:打開xx電商軟件商品瀏覽頁,向下瀏覽頁面五分鐘后退出軟件,關閉后臺
    • 原因:該場景需要大量加載圖像,頻繁調用運行內存,如果每次都需要重新加載的話會大量消耗運行內存,導致電量消耗大,所以需要測試電量消耗
  • 長時間連續使用 / 后臺運行狀態下應用無異常耗電現象
    • 場景設計:打開xx軟件,連續使用一個小時
    • 原因:長時間連續使用過程中電量消耗應該處于一個較為平緩正常的耗電,而不應該在使用一段時間以后出現耗電量劇增的情況;同時軟件在后臺運行(不進行聯網操作、GPS定位等功能)時,電量消耗應該極低
  • 2)測試方法

    使用 perfdog 采集手機耗電量

    測的是整機,不是單個APP,測試時要盡量減少系統本身和其他app的干擾,同時無法得知app具體哪方面的耗電量高。

    注意! perfdog電量測試僅支持wifi連接狀態

    3)結果分析

    場景測試頁面測試時長耗電量
    使用GPS功能導航頁面10minxxx%
    置于后臺使用GPS功能導航頁面10minxxx%

    根據測試后拿取的結果,與同類產品進行對比,或者與本產品的其他頁面進行對比,分析是否有異常耗電的情況。

    3 參考資料

    3.1 VSS、RSS、PSS、USS內存

    VSS:Virtual Set Size,虛擬耗用內存。它是一個進程能訪問的所有內存空間地址的大小。這個大小包含了
    一些沒有駐留在RAM中的內存,就像mallocs已經被分配,但還沒有寫入。VSS很少用來測量程序的實際使
    用內存。

    RSS:Resident Set Size,實際使用物理內存。RSS是一個進程在RAM中實際持有的內存大小。RSS可能會
    產生誤導,因為它包含了所有該進程使用的共享庫所占用的內存,一個被加載到內存中的共享庫可能有很
    多進程會使用它。RSS不是單個進程使用內存量的精確表示。

    PSS:Proportional Set Size,實際使用的物理內存,它與RSS不同,它會按比例分配共享庫所占用的內存。
    例如,如果有三個進程共享一個占30頁內存控件的共享庫,每個進程在計算PSS的時候,只會計算10頁。
    PSS是一個非常有用的數值,如果系統中所有的進程的PSS相加,所得和即為系統占用內存的總和。當一個
    進程被殺死后,它所占用的共享庫內存將會被其他仍然使用該共享庫的進程所分擔。在這種方式下,PSS
    也會帶來誤導,因為當一個進程被殺后,PSS并不代表系統回收的內存大小。

    USS:Unique Set Size,進程獨自占用的物理內存。這部分內存完全是該進程獨享的。USS是一個非常有用
    的數值,因為它表明了運行一個特定進程所需的真正內存成本。當一個進程被殺死,USS就是所有系統回
    收的內存。USS是用來檢查進程中是否有內存泄露的最好選擇。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YNNCJp1M-1621393708995)(app性能測試.assets/image-20210515165014128.png)][外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ye8YlW89-1621393708999)(app性能測試.assets/image-20210515165025343.png)]

    共享庫,每個進程在計算PSS的時候,只會計算10頁。
    PSS是一個非常有用的數值,如果系統中所有的進程的PSS相加,所得和即為系統占用內存的總和。當一個
    進程被殺死后,它所占用的共享庫內存將會被其他仍然使用該共享庫的進程所分擔。在這種方式下,PSS
    也會帶來誤導,因為當一個進程被殺后,PSS并不代表系統回收的內存大小。

    USS:Unique Set Size,進程獨自占用的物理內存。這部分內存完全是該進程獨享的。USS是一個非常有用
    的數值,因為它表明了運行一個特定進程所需的真正內存成本。當一個進程被殺死,USS就是所有系統回
    收的內存。USS是用來檢查進程中是否有內存泄露的最好選擇。


    總結

    以上是生活随笔為你收集整理的app性能测试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。