標籤:冗餘 警戒線 演算法 智能 系統 服務架構 效率 大記憶體 執行時間
專項分類
一、專項效能 - 記憶體
1. OOM:一次性分配記憶體不足,超過Android進程最大記憶體限制,擠爆記憶體。持續內容泄漏導致記憶體不足。
2. Low Memory Killer:手機剩餘記憶體低於警戒線後,Low Memory Killer會在後台釘死佔用記憶體較多的進程。
3. 頻繁GC:JVM虛擬機器在進行GC時,除GC線程外其他線程掛起狀態。記憶體使用量不當,導致頻繁GC引起卡頓。
二、專項效能 - CPU
1. CPU冗餘使用:代碼寫得爛,演算法不高效,變數類型不合理,給CPU帶來額外負擔,不僅執行效率低還耗電高
2. CPU資源爭搶:搶佔主線程CPU資源引起UI卡頓,CPU核心數與線程數不匹配導致效率低下
3. CPU利用率低:CPU利用率低導致執行時間長,如:單線程、同步初始化導致啟動時間長
三、專項效能 - 網路流量
1. Round-Trip Time(RTT,往返時延):主要決定依賴介面資源的頁面載入時間,受網路、服務架構等方面影響
2. 請求流量頻寬:使用者和公司都要為流量資費買單;流量同樣影響RTT。
四、專項效能 - 載入時間
頁面首次渲染主題結構和靜態內容(T1)、網路請求動態資料內容(T2)、重新渲染填充動態資料內容(T3),頁面載入總時間長度=T1 + T2 + T3
五、UI卡頓
低於24FPS人眼會感知不連續;低於30FPS無法表達絢麗畫面。CPU問題(不必要的布局和時效)、GPU問題(過度繪製)會造成UI卡頓。
六、啟動時間
1. 冷啟動
2. 暖開機
3. 初次開機
七、穩定性
1. Monkey
2. 智能遍曆:根據深度優先或廣度優先演算法遍曆點擊頁面中的元素,目的以儘可能多點擊APP中的元素,看哪裡會出現異常
3. 弱網測試:類比不同頻寬和丟包率的弱網路環境下APP的運行狀態,常與UI自動化結合。
八、相容性
1. 品牌
2. 系統
3. 解析度
九、安全性
1. 敏感資訊加密:對敏感資訊比如帳號密碼進行加密儲存,避免明文儲存。敏感資訊傳輸加密,並採用https安全性通訊協定等。
2. 代碼混淆:將程式碼轉換成一種功能上等價但難於閱讀和理解的形式的行為。如變數、函數、類的名字改寫成無意義的名字,將for迴圈改寫成while迴圈,將迴圈改寫成遞迴,精簡中間變數等。
3. APK加殼:加殼程式可以有效阻擊對程式的反組譯碼分析,從而保護軟體著作權,防止被破解。Android Dex檔案加殼,一般需要加殼程式、解殼程式和來源程式。
工具集
| 工具集 |
記憶體 |
CPU |
流量 |
流暢度 |
耗電量 |
| 發現問題 |
adb shell dumpsys meminfo | grep packagename |
adb shell dumpsys cpuinfo | grep packagename |
adb shell cat /proc/uid_stat/<UID>/tcp_rcv adb shell cat /proc/uid_stat/<UID>/tcp_snd |
adb shell dumpsys gfxinfo adb shell dumpsys SufaceFlinger |
Battery Historian |
| 定位問題 |
Memory Monitor MAT LeakCanary |
TraceView Systrace |
Wireshark |
Hierarchy Viewer CPU過度繪製檢測 |
Battery Historian |
前端app專項測試理論基礎