Coder Social home page Coder Social logo

tapir-dream / berserkjs Goto Github PK

View Code? Open in Web Editor NEW
754.0 72.0 132.0 31.39 MB

berserkJS 是新形态的前端测试自动化工具 + 页面性能分析工具 ,同时也是个使用 JS 语法控制的命令行浏览器。可用 JS 编写前端自动测试用例 + 页面性能分析用例。 想了解更多?看看连接中的文档吧~~

Home Page: http://tapir-dream.github.com/berserkJS

License: Other

JavaScript 9.88% C++ 89.51% C 0.12% QMake 0.49%

berserkjs's Introduction

berserkJS(大名:狂暴JS / 昵称:疯子JS)

页面性能分析与测试自动化工具,可用 JS 编写自己的检测、分析规则,并自动执行。

基于 QT 开发,理论上可以跨平台使用,前提是在目标平台编译并部署 QT 运行环境。

此工具用于尝试前端自动化分析页面网络请求数据,可以使用 JS 操作页面导向,获取所需数据。

#使用案例

  • 无界面浏览器测试:在不依赖本地任何浏览器的情况下,运行测试框架,如 QUnit,Capybara, QUnit, Mocha, WebDriver, YUI Test, BusterJS, FuncUnit, Robot Framework 等。
  • 页面自动化:可以无障碍访问和操作网页的标准 DOM API 以及页面所用 JS 变量、对象、属性等内容。
  • 屏幕捕获:以编程方式获取网页全部或部分内容,可根据 Selector 截取指定 DOM 元素渲染情况;包括 CSS,SVG 和 Canvas。可将截取图片 base64 化,以便发送给远端服务器保存。
  • 网络监控:自动化的网络性能监控,跟踪页面所有资源加载情况并可简便的将输出结果格式化为标准HAR格式。
  • 页面性能监控:自动化的页面渲染监控,可获取 CPU、 内存使用情况数据,根据页面整体情况可简便的输出首次渲染时间、首屏渲染时间等关键数据。

#工具特性

  • 跨平台性:基于 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 项目的自动化测试
  • 腾讯新闻: 用于新闻看比赛频道的自动化测试需求覆盖,方便项目重构。

#API 页面

#介绍PPT

#如何使用

Windows

  • 直接执行源码包下 build\release\berserkJS.exe

Mac

  1. 下载并安装 Qt libraries 4.8.5 for Mac
  2. 执行源码包下 build\mac_64\berserkJS

【官网地址】 http://qt-project.org/downloads

【立即下载】 http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-mac-4.8.6-1.dmg

  • 如果需要自己编译则步骤如下:
  1. 下载如上Qt 4.8 依赖库并安装
  2. 在 src 目录下执行 qmake berserkjs.pro -spce macx-xcode 命令生成 xcode 工程文件
  3. 使用 xcode 开启工程文件执行编译

Linux

  1. 下载 Qt libraries 4.8.5 for Linux/X11
  2. 确定系统内存在 X11 lib,否则请使用 yum 等工具安装依赖
  3. 如果需要在纯命令行下使用,请使用yum 等工具安装 Xvfb 来模拟 X11 环境。
  4. 解压 Qt libraries 4.8.5 for Linux/X11,并进入目录
  5. 执行 ./configure
  6. 执行 make
  7. 执行 install
  8. 进入 berserkjs 源码包的 src 目录
  9. 执行 qmark berserkjs.pro
  10. 执行 mark 后可编译出 berserkJS 的可执行文件
  11. 执行 berserkJS

【官网地址】 http://qt-project.org/downloads

【立即下载】 http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.tar.gz

#LICENCE

  • 采用 BSD 开源协议,细节请阅读项目中的 LICENSE.BSD 文件内容。

berserkjs's People

Contributors

tapir-dream avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

berserkjs's Issues

QFont::setPixelSize: Pixel size <= 0 (0)

针对有些网页样式出现的 font-size:0; berserkJS 无论是界面运行还是 command 模式运行,都会直接抛出这个 QT 的 bug,并且直接崩溃。

如何生成har格式的文件

如题,根据说明"网络监控:自动化的网络性能监控,跟踪页面所有资源加载情况并可简便的将输出结果格式化为标准HAR格式。"
翻遍了api文档都没找到.相关的只有networkData 和networkResources 这两个方法,但是他们输出的内容格式并不是har.

在ubuntu下运行berserkJS问题

进行首屏时延测试时,出现的问题
./berserkJS --script=demo10.js --command=true
[main,18]
[main,24]
[main,34]
[main,40]
[main,59]
[main,65]
** (process:6994): DEBUG: NP_Initialize
** (process:6994): DEBUG: NP_Initialize succeeded
Segmentation fault

关于linux版安装的问题

1、qmark是笔误么?应该是qmake吧?
2、我进入src之后,qmake berserkjs.pro && qmake 但是没反应呢?而且也没生成可执行的berserkJS

访问网站经常死掉和window如何编译

你好,我在使用berserkJS访问网站的时候经常会死掉,不知道有什么办法解决呢?
经常死掉的是网站是www.163.com, 其中我还设置了HttpProxy。
另外我想在Windows下进行编译源码,但总是不成功,报了很多错误,我用的VS2010.
错误内容有:
e:\testproject\berserkjs\berserkjs-master\src\mainwindow.h:-1: 警告:C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
e:\testproject\berserkjs\berserkjs-master\src\selector.h:32: 错误:C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

无法截取页面swf播放器的画面

试过截图优酷的播放页面,但是无法截取到播放器里的画面
// 开启监听
App.netListener(true);
// 访问页面
App.webview.open('http://v.youku.com/v_show/id_XODAzMzUyMDAw.html?ev=1&from=y1.1-2.10001-0.1-1');
setTimeout(function() {
// 获取数据并序列化
var data = JSON.stringify(App.networkData());
// 写入文件
App.writeFile(App.path + 'demo1.txt', data);
// 关闭监听
App.netListener(false);
// 退出应用
//App.close();

// 截取全页保存为图片
App.webview.saveImage(App.path + 'demo1.png', 'png', 100);

}, 10000);

能否增加TCP连接时延的指标

在网页测试的时候,对每一个URL的监测指标中缺少TCP连接时延,现在的性能指标中有一个ResponseWatingDuration(等待响应的时延),我觉得这个指标 = TCP连接时延 + TCP发送时延+ 首包到达时延。 在传统的网页访问过程中, TCP发送时延可以忽略不计,不知道berserkJS能否增加TCP连接时延的指标呢,这样更易于分析网络的健康状况。

API代码补全,以及代码提示

敲击键盘到”App.“的时候,给出下拉框,可选择各种可用方法,选中、高亮其中某一条时,显示用法提示,帮助这样。

windows环境下,必须在程序目录下,script选项才有效

问题描述:
比如,我写了个a.js
App.webview.open("http://10.10.100.31")

berserkJS则放在d:\tools\目录下
开始-》运行-》cmd起来的默认位置在%userprofile%
于是在命令行下调用:
d:\tools\berserkJS\berserkJS.exe --script="d:\tools\berserkJS\a.js"
启动后无反应
尝试将a.js复制到当前路径(就是%userprofile%),命令执行:
d:\tools\berserkJS\berserkJS.exe --script=a.js
也无效
最后,先换目录到d:\tools\berserkJS目录后,再调用:
berserkJS.exe --script=a.js
才调用成功

期待行为:
任意目录调用,都能接受命令行的选项参数

linux运行问题

我已经成功在linux下用xvfb运行了berserkJS,但是他返回数据必须App.writeFile来写数据到一个文件里(console.log只能写出到图形终端),如果我想把它当为一个终端命令直接返回数据显示在终端上是否有办法可以实现?

如何远程调用berserkJS

大师您好 ! 我刚最近几天接触到berserkJS,请问一下如何实现远程调用berserkJS并返回数据?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.