# 引言 這段影片將示範如何測量應用程式的性能,包括啟動時間、關鍵用戶操作(如滾動和點擊)以及如何自動化這些測量。接著,會展示如何利用基線配置文件優化應用性能。 # 簡介 影片中,我們會使用Jetpack Macro Benchmark Library來測量應用程式的性能,並在後續影片中介紹如何優化這些性能。 - 影片中使用的應用程式非常簡單,包含一個按鈕和一個懶加載的列表。 # 建立測試模組 要開始測量性能,我們需要建立一個新的Gradle模組。 - 切換到專案視圖。 - 右鍵選擇根目錄,新增模組。 - 選擇Benchmark模組類型並配置相關設定。 # 設定測試環境 設置完成後,Android Studio會生成一個範例啟動基準測試類。 - 測試類會導航到設備主螢幕並啟動預設活動。 - 必須確保專案的活躍建置變體設為Benchmark。 - 添加profileable標籤到應用程式的清單檔案。 # 範例啟動基準測試 範例測試程式碼將啟動應用並測量其啟動時間。 - 設置測試包名和測量指標(如啟動時間)。 - 設置迭代次數以獲取更準確的測量值。 - 使用冷啟動模式測量應用的啟動時間。 # 不混淆代碼 在進行基準測試時,應避免混淆代碼。 - 創建Benchmark rules.pro檔案。 - 在Benchmark的Gradle文件中引用這個檔案。 # 執行基準測試 設置完成後,可以在實體設備上執行基準測試。 - 選擇Benchmark建置變體並執行測試。 - 測試會多次啟動應用以測量啟動時間。 # 依賴問題 測試過程中可能會遇到Baseline profiles相關的錯誤。 - 添加Profile Installer依賴解決問題。 # 測試結果 測試結果會顯示應用啟動的時間數據。 - 最重要的是中位數值,顯示應用平均啟動時間。 ## 重點整理 - **影片目標**:測量和優化應用性能。 - **使用工具**:Jetpack Macro Benchmark Library。 - **步驟**: - 創建新的Benchmark模組。 - 設置測試環境(profileable標籤)。 - 編寫範例啟動基準測試。 - 避免代碼混淆(Benchmark rules.pro)。 - 執行基準測試並解析結果。 - **測試結果**:展示應用啟動時間的詳細數據,主要關注中位數。 ## 補充 - **Baseline Profiles**:在後續影片中介紹,優化應用性能的重要工具。 - **實體設備測試**:基準測試應在實體設備上進行,以獲取最接近真實使用情境的數據。 # 測量應用程式效能的測試 # 介紹 - 測量應用程式啟動時間外,還需要測量滾動、關鍵用戶操作等效能。 # 關鍵用戶操作 - 指大多數用戶在啟動應用程式後可能進行的操作。 - 例子:筆記應用程式,用戶打開應用程式後,進行搜索、點擊筆記、編輯等。 # 創建滾動性能測試 ## 步驟 1. 複製啟動基準測試代碼,並命名為`scrollAndNavigate`。 2. 不測量啟動時間,而是測量幀時間指標(frame timing metrics)。 ## 擴展功能 - 使用`macroBenchmarkScope`來與UI自動化測試庫(UI Automator)結合。 - 外部創建擴展功能,以便重用`macroBenchmarkScope`。 ## 查找按鈕和列表 - 使用`UI Automator`查找按鈕和列表。 - 透過文本查找按鈕,例如`"Click me"`。 - 為列表設置測試標籤(test tags),如`"itemList"`,使其可被查找。 ## 點擊按鈕並滾動列表 - 點擊按鈕30次以添加30個項目到列表中,使其可滾動。 - 設置滾動手勢邊距,避免觸發設備導航手勢。 - 執行滾動手勢並點擊列表中的最後一項。 ## 等待詳細屏幕加載 - 點擊列表中的最後一項,等待詳細屏幕顯示特定文本。 ## 結果分析 - 測試結果包含幀持續時間和幀超過時間兩種指標。 - 使用百分位數(P50、P90等)來表示大部分幀的速度。 - 幀超過時間負值表示幀在截止時間前完成,正值表示超過截止時間。 # 結論 - 根據應用程式的用戶數量和需求,決定是否進行效能優化。 - 性能優化應與用戶體驗和功能改進相平衡。 # 關鍵字 - **App Launch Time (應用程式啟動時間)**: 應用程式從點擊圖示到初次顯示畫面的時間。 - **Critical User Journey (關鍵用戶旅程)**: 用戶在應用程式中進行的主要操作流程,例如滾動、點擊項目、導航到詳細頁面等。 - **Frames Dropped (丟幀)**: 在滾動或動畫過程中應用程式未能按預期刷新畫面,導致的畫面卡頓。 - **Jetpack Macro Benchmark Library (Jetpack宏基準庫)**: 一個用於測量應用程式整體性能的庫,包括啟動時間、滾動性能等。 - **Macro Benchmark (宏基準測試)**: 測量應用程式主要性能指標的大範圍基準測試。 - **Micro Benchmark (微基準測試)**: 測量應用程式較小範圍性能指標的基準測試。 - **Gradle Module (Gradle模組)**: 一個構建單元,包含應用程式的相關配置和依賴項。 - **Profileable (可分析)**: 一個標記,使應用程式允許性能數據的收集和分析。 - **Instrumented Test (儀器化測試)**: 在真實設備上運行的測試,用於測量應用程式的性能。 - **Startup Timing Metric (啟動時間指標)**: 用於測量應用程式啟動時間的性能指標。 - **Iterations (迭代次數)**: 測試重複運行的次數,以確保測量結果的準確性。 - **Startup Mode (啟動模式)**: 測試啟動時間的不同模式,包括冷啟動(cold)、熱啟動(hot)等。 - **Proguard (代碼混淆工具)**: 用於壓縮和混淆應用程式代碼的工具。 - **Baseline Profiles (基線配置檔案)**: 預先定義的性能配置,用於優化應用程式啟動和運行性能。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up