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 项目的自动化测试