Telemetry是Chrome瀏覽器項目的一個性能測試框架。它允許你在頁面(或者是任何Android App)上自動化的執行任何操作,然后給你報告相關的性能指標。Telemetry支持Windows、Mac、Linux、Chrome OS、Android等平臺上的Chromium內核瀏覽器、ContentShell還有Android App的性能測試。它與瀏覽器的自動化測試通過DevTools Remote Debugging Protocol,與Android App的自動化測試通過adb shell。
之前我的同事@甚知 做過這方面的技術分享,最近我做瀏覽器內核升級,做性能對比,再次用起了Telemetry這個工具,研究了一兩個星期,寫篇博客總結一下。
性能測試的一個關鍵點是保證測試的可重復性。Telemetry使用了一種Web Page Replay技術來緩存所有的請求網絡數據,在后續的測試中再重放之前的網絡環境,保證了測試結果不會因為網絡環境的改變而產生偏差。
正常情況下,瀏覽器是直接從Internet中獲得網絡數據。Web Page Recorder先把程序請求網絡數據的情況保存在本地文件中。比如請求了什么資源,用了多久的時間。隨后我們進行性能的測試的時候,就不在需要再請求網絡了,而是直接根據之前記錄下來的數據,來還原之前的網絡狀況。
以上是Telemetry一些重要的對象:
運行benchmark進行性能測試之前,我需要錄制StorySet的wpr數據。如果沒有已經錄制的好的wpr數據,我們可以在運行run_benchmark腳本時加上–use-live-sites命令行參數,它會使用線上的網絡數據進行測試。
錄制StorySet的wpr數據很簡單。StorySet里面有個archive_data_file的成員變量,它指定了保存StorySet網絡數據的文件路徑。運行以下命令:
python record_wpr aef_page_set --browser=system
它會自動打開系統安裝好的Chrome瀏覽器,并開始錄制aef_page_set這個StorySet所需的網絡數據,保存在archive_data_file所指定的路徑。
運行以下腳本,開始運行aef.smoothness這個benchmark測試程序的流程性。我們在命令行里指定了程序的路徑和輸出結果的格式和輸出目錄:
python run_benchmark aef.smoothness --browser=exact --browser-executable="D:\to_xp\content_shell.exe" --output-format=html --output-dir="D:\telemetry\result\aef.smoothness"
run_benchmark這個腳本的命令行參數比較多,以下介紹一些常用的:
原文轉自:http://gclxry.com/telemetry-performance-testing-framework/