berserkJS前端網(wǎng)絡(luò)(性能)監(jiān)測(cè)工具
berserkJS 是基于 Qt (C++跨平臺(tái)庫(kù))開(kāi)發(fā)的前端網(wǎng)絡(luò)(性能)監(jiān)測(cè)工具。 它的核心功能是通過(guò)內(nèi)置 webkit 收集由頁(yè)面實(shí)際網(wǎng)絡(luò)請(qǐng)求相關(guān)數(shù)據(jù)。 偏重于頁(yè)面上線(xiàn)前檢測(cè)與評(píng)估。
頁(yè)面性能分析工具,可用 JS 編寫(xiě)自己的檢測(cè)、分析規(guī)則。 基于 Qt 開(kāi)發(fā),可跨平臺(tái)編譯,部署。內(nèi)置基于 QtWebkit 的瀏覽器環(huán)境。 源碼需在目標(biāo)系統(tǒng)中編譯后,可產(chǎn)生運(yùn)行于 Windows / Linux / Mac 系統(tǒng)的可執(zhí)行文件。 工程中自帶 Window 系統(tǒng)中動(dòng)態(tài)編譯的可執(zhí)行文件,此文件位于 bulid 目錄下。
使用案例
無(wú)界面瀏覽器測(cè)試:在不依賴(lài)本地任何瀏覽器的情況下,運(yùn)行測(cè)試框架,如 QUnit,Capybara, QUnit, Mocha, WebDriver, YUI Test, BusterJS, FuncUnit, Robot Framework 等。
頁(yè)面自動(dòng)化:可以無(wú)障礙訪(fǎng)問(wèn)和操作網(wǎng)頁(yè)的標(biāo)準(zhǔn) DOM API 以及頁(yè)面所用 JS 變量、對(duì)象、屬性等內(nèi)容。
屏幕捕獲:以編程方式獲取網(wǎng)頁(yè)全部或部分內(nèi)容,可根據(jù) Selector 截取指定 DOM 元素渲染情況;包括 CSS,SVG 和 Canvas??蓪⒔厝D片 base64 化,以便發(fā)送給遠(yuǎn)端服務(wù)器保存。
網(wǎng)絡(luò)監(jiān)控:自動(dòng)化的網(wǎng)絡(luò)性能監(jiān)控,跟蹤頁(yè)面所有資源加載情況并可簡(jiǎn)便的將輸出結(jié)果格式化為標(biāo)準(zhǔn)HAR格式。
頁(yè)面性能監(jiān)控:自動(dòng)化的頁(yè)面渲染監(jiān)控,可獲取 CPU、 內(nèi)存使用情況數(shù)據(jù),根據(jù)頁(yè)面整體情況可簡(jiǎn)便的輸出首次渲染時(shí)間、首屏渲染時(shí)間等關(guān)鍵數(shù)據(jù)。
工具特性
跨平臺(tái)性:基于 Qt 開(kāi)發(fā),可跨平臺(tái)編譯,部署。內(nèi)置基于 QtWebkit 的瀏覽器環(huán)境。源碼需在目標(biāo)系統(tǒng)中編譯后,可產(chǎn)生運(yùn)行于 Windows / Linux / Mac 系統(tǒng)的可執(zhí)行文件。
功能性:工具內(nèi)置 webkit 瀏覽器內(nèi)核,可響應(yīng)瀏覽器內(nèi)核事件回調(diào)、支持發(fā)送鼠標(biāo)消息給瀏覽器、包裝瀏覽器網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)為JS數(shù)據(jù)格式、可與瀏覽器內(nèi)JS做數(shù)據(jù)交互。
開(kāi)放性:工具將主要操作均包裝為JS語(yǔ)法與數(shù)據(jù)格式,采用JS語(yǔ)法包裝,前端工程師可根據(jù)API組裝出符合各自預(yù)期的檢測(cè)功能。
接口性:工具本身支持命令行參數(shù),可帶參調(diào)用。API支持處理外部進(jìn)程讀取輸出流、支持HTTP發(fā)送數(shù)據(jù)??捎?WEB 程序遠(yuǎn)程調(diào)用后獲取測(cè)試的返回結(jié)果。
標(biāo)準(zhǔn)性:完全真實(shí)的瀏覽器環(huán)境內(nèi) DOM,CSS,JavaScript,Canvas,SVG 可供使用,絕無(wú)仿真模擬。
特點(diǎn)差異
與 PhantomJS 相比具有以下不同:
API 簡(jiǎn)易: 更直接的 API,如獲取網(wǎng)絡(luò)性能數(shù)據(jù),僅需 3 行代碼,而非 PhantomJS 的幾十行,且信息量比 PhantomJS 豐富。
API 標(biāo)準(zhǔn)化: 常用 API 均采用 W3 規(guī)范標(biāo)準(zhǔn)命名,事件處理代碼可重復(fù)綁定而不相互覆蓋,可以無(wú)縫兼容 Wind.JS 等異步流程處理庫(kù)來(lái)解決自動(dòng)化時(shí)異步流程控制問(wèn)題。
頁(yè)面性能信息豐富:具有頁(yè)面渲染和 CPU、 內(nèi)存使用情況數(shù)據(jù)獲取能力,可輸出首次渲染時(shí)間、首屏渲染時(shí)間等頁(yè)面性能關(guān)鍵數(shù)據(jù)。
調(diào)試便利: 具有 GUI 界面與命令行狀態(tài)兩種形式,開(kāi)發(fā)調(diào)試期可使用 GUI 模式定位問(wèn)題,此模式中可開(kāi)啟 WebKit 的 Inspector 工具輔助調(diào)試頁(yè)面代碼與 DOM 。實(shí)際運(yùn)行時(shí)可開(kāi)啟命令行狀態(tài)避免自動(dòng)執(zhí)行時(shí) GUI 界面干擾。
應(yīng)用企業(yè)
新浪微博:已使用 berserkJS 構(gòu)建前端性能監(jiān)測(cè)數(shù)據(jù)分析平臺(tái),防止微博主要產(chǎn)品在不停開(kāi)發(fā)迭代時(shí),頁(yè)面性能產(chǎn)生退化。
Cisco: 用于 WebEx 項(xiàng)目的自動(dòng)化測(cè)試
