1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        移動App專項性能測試(Android and iOS)

        共 3868字,需瀏覽 8分鐘

         ·

        2021-07-18 18:34


        一直以來,性能測試是被一部分人遺忘,又讓另一部分人無可奈何的東西。在絕大部分的創(chuàng)業(yè)公司,性能測試基本上都是被遺忘的,他們認為功能測試和穩(wěn)定性測試才是重點,而在中等規(guī)模的公司中一部分測試人員考慮進行性能測試,卻無從下手。

        從測試工程師的工作實踐出發(fā),介紹移動端性能測試的通用方法和結合產品特點的不同側重。

        隨著流量費用的降低,越來越多的人開始在公交地鐵等移動場景使用視頻應用。視頻類的應用會更多關注播放流暢度、下載等性能指標,下面介紹的是百度視頻的性能測試方法

        視頻app是第三方視頻資源聚合類產品,主要提供用戶在線播放、離線下載各種視頻服務,提供PC、Android、iOS三端入口,用戶體驗、流暢度、下載速度、檢索視頻資源等是目前產品線最關注的層面。

        一款優(yōu)秀的娛樂類應用,必須具有卓越的性能,超越同類競品,同時兼具良好的用戶體驗。

        1. App性能分析維度

        App類型眾多,根據(jù)具體類型劃分,性能指標的維度和優(yōu)先級各不相同。視頻類App歸屬于娛樂游戲型的App,因此性能測試維度優(yōu)先級排序為:流暢度、crash、內存、流量、響應時長、功耗、CPU。

        表征不同維度指標的量化單位如圖21所示。比如流暢度是FPS(幀率),內存是兆比等等。

        因為Android平臺底層是由linux系統(tǒng)改良而來,不同維度的指標絕大部分都可以通過命令來取不同的指標(具體方法可以參加后面工具)

        在iOS平臺上,性能的獲取,必須使用Xcode里面instruments下的相應組件,不像開源的Android那樣靈活,但技術上是可以做到各平臺的性能指標獲取測試。

        2. App性能指標獲取手段

        2.1 Android系統(tǒng)指標獲取

        • CPU

        CPU的測試方法分為幾類

        a.使用Android提供的方法

        adbshell dumpsyscpuinfo |grep packagename >/xxx/cpu.txt來獲取

        b.使用top命令

        adbshell top |greppackagename>/xxx/cpu.txt來獲取

        • 內存

        內存消耗,這個測試的設計目標是為了讓應用不占用過多的系統(tǒng)資源,且及時釋放內存,保障整個系統(tǒng)的穩(wěn)定性,當然關于內存測試,在這里我們需要引入幾個概念:空閑狀態(tài)、中等規(guī)格、滿規(guī)格。

        空閑狀態(tài):指打開應用后,點擊home鍵讓應用后臺運行,此時應用處于的狀態(tài)叫做空閑。中等規(guī)格和滿規(guī)格指的是對應用的操作時間的間隔長短不一,中等規(guī)格時間較長,滿規(guī)格時間較短。

        接下來我們說說在內存測試中,存在很多測試子項,如下清單所示:

        1. 空閑狀態(tài)下的應用內存消耗情況

        2. 中等規(guī)格狀態(tài)下的應用內存消耗情況

        3. 滿規(guī)格狀態(tài)下的應用內存消耗情況

        4. 應用內存峰值情況

        5. 應用內存泄露情況

        6. 應用是否常駐內存

        7. 壓力測試后的內存使用情況

        • 電量

        功耗測試主要從以下幾個方面入手進行測試:

        a、測試手機安裝目標APK前后待機功耗無明顯差異。

        b、常見使用場景中能夠正常進入待機,待機電流在正常范圍內。

        c、長時間連續(xù)使用應用無異常耗電現(xiàn)象。

        功耗測試的方法分為兩類,一類為軟件測試,一類為硬件測試。

        一般分為2類:

        第一種采用市場上提供的第三方工具,如金山電池管家之類的。第二種就是自寫工具進行,這里一般會使用3種方法:

        方法一、基于android提供的PowerManager.WakeLock來進行;

        方法二、稍復雜一點,功耗的計算=CPU消耗+Wakelock消耗+數(shù)據(jù)傳輸消耗+GPS消耗+Wi-Fi連接消耗;

        方法三、通過adbshell dumpsys battery來獲取。

        接著說下硬件測試,在這里我們一般使用萬用表或者功耗儀進行測試,使用功耗儀測試的時候,需要制作假電池來進行的,有些不能拔插電池的手機還需要焊接才能進行對了測試。

        • 啟動時長

        首先我們來說說啟動時間。關于應用的啟動時間的測試,分為三類:

        1. 首次啟動 --應用首次啟動所花費的時間
        2. 非首次啟動 --應用非首次啟動所花費的時間
        3. 應用界面切換--應用界面內切換所花費的時間

        那么如何來做啟動時間的測試呢,一般我們分為2類,一類為使用軟件來測試,一類為使用硬件來測試。對于軟件測試的方法,大部分人都比較通曉使用Android 提供的 DisplayManager 來獲取 activity 的啟動時間。通過日志過濾關鍵字 Displayed 來過濾所有 activity 所打印的,記錄日志通過。

        • 幀率

        GPU這個詞對于PC性能測試者來說并不陌生,而今3Dmax,安兔兔之類的第三方軟件讓GPU 在移動端性能測試領域家喻戶曉,但對于App內的GPU該如何來測試呢?首先我們引入幾個名詞:過度繪制、幀率、幀方差。

        過度繪制是指界面顯示的activity套接了多層導致的結果。幀率是指屏幕刷新率。幀方差是指屏幕刷新幀間隔方差。

        對于 GPU 的測試主要包括以下幾個測試子項:界面過度繪制、屏幕滑動幀速率、屏幕滑動平滑度。

        對于過度繪制的測試主要通過人工進行測試,通過打開開發(fā)者選項中的顯示GPU過度繪制來進行測試(PS:只有Android4.2及以上的版本才具備此功能),驗收的標準為:

        a、不允許出現(xiàn)黑色像素

        b、不允許存在4x過度繪制

        c、不允許存在面積超過屏幕1/4區(qū)域的3x過度繪制(淡紅色區(qū)域)

        對于屏幕滑動幀速率,常用手段包括軟件測試或硬件輔助測試。軟件測試的方法如下:

        1.手機端需打開開發(fā)者選項中的啟用跟蹤后,勾選Graphics 和 View;

        2.啟動SDK工具Systrace插件,勾選被測應用,點擊Systrace插件,在彈出的對話框中設置持續(xù)抓取時間,在tracetaps下面勾選gfx及view選項;

        3.人滑動界面可以通過節(jié)拍來進行滑動或者掃動,幀率數(shù)據(jù)會保存到默認路徑下,默認名稱為 trace.html;

        4.將trace.html文件拷貝到linux系統(tǒng)下通過命令進行轉換,生成trace.csv文件。

        • 網(wǎng)絡流量

        性能測試的——流量,當然我所指的性能測試是針對大部分應用而言的,可能還有部分應用會關注網(wǎng)速、弱網(wǎng)之類的測試。流量測試,同樣需要引入幾個名詞:

        中等負荷:應用正常操作

        高負荷:應用極限操作

        流量測試包括以下測試項:

        a、應用首次啟動流量提示

        b、應用后臺連續(xù)運行2小時的流量值

        c、應用高負荷運行的流量峰值

        d、應用中等負荷運行時的流量均值流量測試

        流量測試一般都是用軟件來進行的,這里我們一般分為2類:

        a、采用市場提供的第三方工具來進行測試,如流量寶

        b、自研工具進行測試

        自研工具進行測試一般包含 2 類方法:

        a、通過tcpdump抓包,再通過wireshake直接讀取包信息來獲得流量

        b、首先獲得被測應用的uid信息(可以通過adbshelldumpsys package來獲?。?,然后在未操作應用之前,我們可以通過查看

        adbshell cat/proc/uid_stat/uid/tcp_rcv
        adbshell cat/proc/uid_stat/uid/tcp_snd

        獲取到應用的起始的接收及發(fā)送的流量,然后我們再操作應用,再次通過上述 2 條命令可以獲取到應用的結束的接收及發(fā)送的流量,通過相減及得到應用的整體流量消耗。

        2.2 iOS系統(tǒng)指標獲取

        對于iOS系統(tǒng),只需要一個裝了xcode的mac電腦,取以上指標相對容易。

        性能測試工具,推薦用下面三個:

        工具一、Instruments,這個是mac蘋果自帶的工具,里面有很多模板,選擇不同的系能模板就可以監(jiān)聽手機App性能了,但是要注意,沒越獄的機器必須注冊開發(fā)者證書,或者拿到App企業(yè)證書,這樣xcode才能啟動App進行性能監(jiān)控,也就是說你被測App必須有源代碼才行,當然你想規(guī)避這個問題,得走百度smallApple破解簽名機制

        工具二、GT,是騰訊開發(fā)的一款App,但是也得在源碼層面嵌入GT的SDK

        工具三、SmallApple

        https://github.com/hyxbiao/smallapple

        Smallapple是一個開源的IOS自動化測試工具,旨在提供一套完整的iOS自動化測試解決方案,提供針對iOS App的功能和性能測試,同時提供類似Android adb、重簽名、instruments結果解析、錄制回放等工具集。

        Smallapple通過一鍵式的執(zhí)行方式,自動完成App重簽名、安裝、測試、性能采集(包括CPU、內存、流量等)、Crash檢測和結果報告等工作。

        Smallapple特性:

        1. Smallapple致力于以最簡單的方式,最小的代價提供給用戶使用。
        2. 支持非越獄設備
        3. 不需要依賴源碼
        4. 支持Appstore或者第三方下載的App安裝測試
        5. 完全的命令行模式


        PS:  由狂師老師親自授課主講的「全棧測試開發(fā)技能訓練營」正在招生,課程非常值得推薦,課程大綱:重磅消息 | 2021年最新全棧測試開發(fā)技能實戰(zhàn)指南(第2期)


        推薦閱讀
        重磅消息 | 2021年最新全棧測試開發(fā)技能實戰(zhàn)指南(第2期)

        測試開發(fā):推薦一款阿里最新 Python 自動化開源工具!

        測試開發(fā)進階:一文教你從0到1搞懂大數(shù)據(jù)測試!

        推薦一款自動化測試神器,不會寫代碼也能做!


        END

        所有原創(chuàng)文章
        第一時間發(fā)布至此公眾號「測試開發(fā)技術」

        長按二維碼/微信掃碼  添加作者



        瀏覽 113
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            西西人体大胆视频在线一二三区 | 97超碰免费 | 啊cao翻你个小sao货视频 | 天天干夜夜怕 | 国产一区二区免费电影 | 国产老骚逼 | 日本护士三级少妇三级999 | 偷偷操青娱乐 | 放荡护士夹得我好爽 | 欧美午夜AAAAAA免费视频 |