一種基於動態外掛程式系統的移動測試黑科技

2022-07-30 02:06:12 字數 1730 閱讀 9787

移動端線上問題定位的幾個場景

移動端線下測試的幾個場景

基於外掛程式系統,做乙個測試外掛程式,把我們所有覺得有用的線下測試能力打進去,同時整合業內知名的好框架,譬如dexposed、 leakcanary等,還有一些系統開放了但是主版使用會影響效能的好東西traceviewer、choreographer、activitylifecyclecallback等。統統打到雲外掛程式中,並通過雲端已經構建好的動態模組小流量系統下發到特定目標使用者手機中,持續暴露問題

nice job!!

經過如上,下圖中的jar或apk中包裹的場景外掛程式就可以被雲外掛程式動態載入進來,同時對宿主的各種類、本地空間、以及系統中與宿主相關的資訊進行讀取、採集。至於是hook、反射、**注入、異常捕獲、插樁等這些只是一種手段了 

正文: 以流暢度為例,我們看如何非常快速的構建雲除錯外掛程式的case吧

流暢度:可以理解為android系統繪製ui的速度,理論上,人眼在1s內接收60幀影象才會感覺程式流暢。 android系統之初,流暢度一直是人們詬病的目標,直到android 4.1系統的時候,有了註明的project buffer,並引入了三大元素,vsync(垂直同步)、triple buffer和choreographer。其中choreographer這個東西是我們今天討論的目標。它是整套機制中的協調者,並且所有looper都共用乙個choreographer物件

choreographer對外開放了乙個framecallback的東西,在每次系統繪製時,都會通過這個**doframe函式,通過這個函式可以計算出在1s內,當前頁面的繪製次數。但是問題來了: 

看上圖,含義就是,此貨雖然好,但是建議是你們開發者還是不要用了。。。這如何玩,本來還想拿它上個流暢度監控的。。此時一定會想到,我們有云除錯外掛程式。

構建很簡單,如下,只需要把這段**copy到任意android工程,然後打包,注意nutxerror只作為編譯依賴即可, 如果已有外掛程式系統, 這段**就可以直接被載入並執行了

public class

nutframemonitor extends basecase catch (exception e)

if (sdkversion >= 16) catch (exception e) }}

private static  class nutframecallback implements choreographer.framecallback

}mlastframetimenanos = frametimenanos;

choreographer.getinstance().postframecallback(nutframecallback.callback);}}

}

下面這個截圖是在操作客戶端執行的時候(注意監控case是通過雲外掛程式動態載入的喲),發現的乙個流暢度問題。同時也可以看到,在監控到繪製問題後,使用者停留的每個介面也被畫了出來。 然後線下就可以沿著這條trace去復現結果了~ 

是不是很酷~~~ 

外掛程式的一種安裝方法

今天看到eclipse color themes這款外掛程式,各種心水啊 一直是could not find 我想了一下,可能是一下兩個問題 1 我直接用的是adt自帶的eclipse,可能有bug,導致不能安裝外掛程式。2 網路問題,單位的性質比較特殊,不容許翻牆,所以母雞是不是這個問題。最後,我...

一種基於Makefile的編譯系統架構實現及自動化

一.我分享的是乙個簡化版的編譯架構,我要實現的目標是 對遵循以下組織結構的資料夾進行編譯 bb inc src entry modules module1 module2 src 目錄下可以允許有遞迴目錄或者檔案,最大深度不超過 5,makefile 定義規則會去自動搜尋所有的 c原始檔,編譯出的所...

tmpfs 一種基於記憶體的檔案系統

tmpfs是一種基於記憶體的檔案系統,tmpfs有時候使用rm 物理記憶體 有時候使用swap 磁碟一塊區域 根據實際情況進行分配。rm 物理記憶體。real memery的簡稱?真實記憶體就是電腦主機板上那塊記憶體條,叫做真實記憶體不為過。tmpfs最大可使用的大小為什麼是rm swap。swap...