berserkJS 是基於 Qt (C++跨平臺庫)開發的前端網絡(性能)監測工具。 它的核心功能是經過內置 webkit 收集由頁面實際網絡請求相關數據。 偏重於頁面上線前檢測與評估。html
頁面性能分析工具,可用 JS 編寫本身的檢測、分析規則。 基於 Qt 開發,可跨平臺編譯,部署。內置基於 QtWebkit 的瀏覽器環境。 源碼需在目標系統中編譯後,可產生運行於 Windows / Linux / Mac 系統的可執行文件。 工程中自帶 Window 系統中動態編譯的可執行文件,此文件位於 bulid 目錄下。前端
無界面瀏覽器測試:在不依賴本地任何瀏覽器的狀況下,運行測試框架,如 QUnit,Capybara, QUnit, Mocha, WebDriver, YUI Test, BusterJS, FuncUnit, Robot Framework 等。git
頁面自動化:能夠無障礙訪問和操做網頁的標準 DOM API 以及頁面所用 JS 變量、對象、屬性等內容。github
屏幕捕獲:以編程方式獲取網頁所有或部份內容,可根據 Selector 截取指定 DOM 元素渲染狀況;包括 CSS,SVG 和 Canvas。可將截取圖片 base64 化,以便發送給遠端服務器保存。web
網絡監控:自動化的網絡性能監控,跟蹤頁面全部資源加載狀況並可簡便的將輸出結果格式化爲標準HAR格式。編程
頁面性能監控:自動化的頁面渲染監控,可獲取 CPU、 內存使用狀況數據,根據頁面總體狀況可簡便的輸出首次渲染時間、首屏渲染時間等關鍵數據。api
跨平臺性:基於 Qt 開發,可跨平臺編譯,部署。內置基於 QtWebkit 的瀏覽器環境。源碼需在目標系統中編譯後,可產生運行於 Windows / Linux / Mac 系統的可執行文件。瀏覽器
功能性:工具內置 webkit 瀏覽器內核,可響應瀏覽器內核事件回調、支持發送鼠標消息給瀏覽器、包裝瀏覽器網絡請求數據爲JS數據格式、可與瀏覽器內JS作數據交互。服務器
開放性:工具將主要操做均包裝爲JS語法與數據格式,採用JS語法包裝,前端工程師可根據API組裝出符合各自預期的檢測功能。網絡
接口性:工具自己支持命令行參數,可帶參調用。API支持處理外部進程讀取輸出流、支持HTTP發送數據。可由 WEB 程序遠程調用後獲取測試的返回結果。
標準性:徹底真實的瀏覽器環境內 DOM,CSS,JavaScript,Canvas,SVG 可供使用,絕無仿真模擬。
與 PhantomJS 相比具備如下不一樣:
API 簡易: 更直接的 API,如獲取網絡性能數據,僅需 3 行代碼,而非 PhantomJS 的幾十行,且信息量比 PhantomJS 豐富。
API 標準化: 經常使用 API 均採用 W3 規範標準命名,事件處理代碼可重複綁定而不相互覆蓋,能夠無縫兼容 Wind.JS 等異步流程處理庫來解決自動化時異步流程控制問題。
頁面性能信息豐富:具備頁面渲染和 CPU、 內存使用狀況數據獲取能力,可輸出首次渲染時間、首屏渲染時間等頁面性能關鍵數據。
調試便利: 具備 GUI 界面與命令行狀態兩種形式,開發調試期可以使用 GUI 模式定位問題,此模式中可開啓 WebKit 的 Inspector 工具輔助調試頁面代碼與 DOM 。實際運行時可開啓命令行狀態避免自動執行時 GUI 界面干擾。
新浪微博:已使用 berserkJS 構建前端性能監測數據分析平臺,防止微博主要產品在不停開發迭代時,頁面性能產生退化。
Cisco: 用於 WebEx 項目的自動化測試