Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED
Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED
Xvfb+YSlow+ShowSlow搭建前端性能测试框架
作者:黑三 | 时间:2010-07-07 11:34
工具介绍
Xvfb: 主要就是通过内存计算模拟出图形界面,没有平常所见的操作界面,分为客户端和服务器
其次就是修改测试专用的Profiles的prefs.js,这个很关键,要设置一些Firefox属性才能让测试更好的进行下去,ShowSlow的论坛有推荐配置,(猛击这里)
gedit /home/eric/FFProfiles/prefs.js
## PREFS.JS RECOMMENDATIONS (AUTOMATION)
#do not let automated firefox manipulate the profile extensions (auto
update)
user_pref(“extensions.update.enabled”, false);
user_pref(“extensions.update.notifyUser”, false);
#disable session restore on crash (do not want stale/old tabs)
user_pref(“browser.sessionstore.resume_from_crash”, false);
#do not let javascript resize the window
user_pref(“dom.disable_window_move_resize”, true);
#do not let javascript manipulate context menus (automation)
user_pref(“pref.advanced.javascript.disable_button.advanced”, false);
#do not show me pop-up block messages (screenshot related)
user_pref(“privacy.popups.showBrowserMessage”, false);
#do not warn for weak SSL or mixed SSL/HTTP content:
user_pref(“security.warn_entering_weak”, false);
user_pref(“security.warn_viewing_mixed”, false);
#firebug prefs
user_pref(“extensions.firebug.allPagesActivation”, “on”);
user_pref(“extensions.firebug.net.enableSites”, true);
user_pref(“extensions.firebug.defaultPanelName”, “YSlow”);
user_pref(“extensions.firebug.previousPlacement”, 1);
#yslow prefs
user_pref(“extensions.yslow.autorun”, true);
user_pref(“extensions.yslow.beaconInfo”, “grade”);
user_pref(“extensions.yslow.beaconUrl”, “http://localhost/showslow/beacon/yslow/“);
user_pref(“extensions.yslow.optinBeacon”, true);
配置本地YSlow
- 打开Firefox输入:about:config(我保证会很小心的)
- filter中输入:yslow
- 修改以下三条数据
extensions.yslow.beaconUrl = http://localhost/showslow/beacon/yslow/
如果测试和服务器不在同一机器上,请将localhost改成实际地址
extensions.yslow.beaconInfo = grade
extensions.yslow.optinBeacon = true
- 重启Firefox,have fun :)
还等什么?开始你的测试之旅吧,查看测试报告的URL是:http://localhost/showslow/
在这个地方遇到了一个问题就是所有配置都是正确的情况下,ShowSlow依然接收不到YSlow发送的测试数据,后来在RedHat的服务器上搭建环境同样遇到了这个问题,经过SA白非童鞋的帮助查看Apache的报错日志(/var/log/apache2/error.log)发现罪魁祸首是脚本中需要的几个模块必须是PHP5.2以上的版本,遂升级PHP至最新版本可解决问题。
test_harness.pl
这个脚本是用Perl语言写的,我也是刚接触这个语言,但是我还是推荐各位童鞋看看他的文件结构,老外写的代码阅读起来还是比较舒服,附带着大量注释方便我这样的小白也能轻松理解每个函数的意义。我们主要需要用到的是display,profile,source这三个属性(具体作用ReadMe有解释),可以参考下我运行这个脚本的方式:
perl test_harness.pl -display=:1 -source http://localhost/URLs -profile /home/eric/FFProfiles
Can’t locate POE.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at test_harness.pl line 100.
BEGIN failed–compilation aborted at test_harness.pl line 100.这个问题纠结了我好几天,百思不得其解,关键还是我第一次使用Linux和Perl,对于很多报错信息都可以熟视无睹(请鄙视我),最后请教了Sergey童鞋,才恍然大悟原来是没有安装POE(请再次鄙视我),解决办法参考如下:
sudo perl -MCPAN -e shell (sudo很关键啊,内牛满面)
cpan> install POE
如果提示YAML没有安装 (类似于XML的数据描述语言)
cpan>install YAML
cpan> exit
这个时候自动化脚本已经开始运行了,我们可以通过外部机器访问虚拟机搭建的ShowSlow查看测试结果 (Ubuntu使用ifconfig查看本机IP地址,注意虚拟机网卡要设置成Bridged方式)
monitor.sh
自动调用之前编写test_harness.pl脚本,当我们将调用test_harness的一些参数添加进monitor后使用Linux的Cron就可以实现自动化测试了:)
注意将脚本文件夹的绝对路径赋值给Xvfb_PIDFILE,因为每次执行的时候系统会自动生成一个__xvfb.pid
2010-7-1日更新
在Ubuntu和RedHat环境搭建下的Showslow平台点击测试URL进入Detail Page发现“Measurements over time”和“YSlow measurements history”两个区域的图形绘制不出,自己找了很久一直没有头绪,只好求助于ShowSlow的作者Sergey…
1 确保config.php文件中的$showslow_base=http://localhost/showslow/
2 查看phpinfo()确保Apache的模块mod_rewrite加载并启用了
1 Enable mod_rewrite
sudo a2enmod rewrite ;
2 change all of ”AllowOverride none” to “AllowOverride All”
sudo vim /etc/apache2/sites-enabled/000-default ;
3 Restart apache2
sudo /etc/init.d/apache2 restart;
刷新一下页面图形是不是回来了:)
在实际工作中我们还遇到了一个不大不小的问题就是有些页面需要登录才能访问,而我们的测试环境又是全自动化的,所以在这里需要用到Firefox的一个插件叫做Greasemonkey,可以执行JS脚本,这样只需要我们编写一个自动登录的小JS脚本,然后在Greasemonkey中设置那几个URL需要使用这个脚本,这样每次访问需要登录的界面就会自动登录了。
参考文档(部分需要FQ):
http://developer.yahoo.com/performance/rules.html
http://en.wikipedia.org/wiki/Xvfb
http://developer.yahoo.com/yslow/
http://www.sergeychernyshev.com/blog/automating-yslow-and-pagespeed-using-xvfb/
http://www.linkedin.com/in/xiphoidindustries
http://groups.google.com/group/showslow/browse_thread/thread/5a2b19db7dfbefb7
–EOF–
Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED的更多相关文章
- 基于Jmeter和Jenkins搭建性能测试框架
搭建这个性能测试框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的时间. 1.性能测试流程 该性能测试框架工 ...
- 「转」基于Jmeter和Jenkins搭建性能测试框架
搭建这个性能测试框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的时间. 1.性能测试流程 该性能测试框架工 ...
- 基于jmeter,jenkins,ANT接口,性能测试框架
背景 公司计划推接口和性能测试,搭建这个性能测试框架框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能,接口测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的 ...
- Github+yeoman+gulp-angular初始化搭建angularjs前端项目框架
在上篇文章里面我们说到了Github账号的申请与配置 那么当你有了Github账号并创建了一个自己的Github项目之后,首要的当然是搭建自己的项目框架啦! 本人对自己的定位是web前端狗,常用开发框 ...
- 使用vue2.x+webpack+vuex+sass+axios+elementUI等快速搭建前端项目框架
一.本文将分享如何快速搭起基于webpack+vue的前端项目框架,利用vue的自己的脚手架工具vue-cli搭建起基本的环境配置,再通过npm包管理工具引入相应的依赖来完善项目的各种依赖框架.下面是 ...
- [Vue 牛刀小试]:第十六章 - 针对传统后端开发人员的前端项目框架搭建
一.前言 在之前学习 Vue 基础知识点的文章中,我们还是采用传统的方式,通过在 html 页面上引用 vue.js 这个文件,从而将 Vue 引入到我们的项目开发中.伴随着 Node.js 的出现, ...
- 前端Js框架汇总
概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...
- Web前端性能测试-性能测试知多少---深入分析前端站点的性能
针对目前接手的web前端的性能,一时间不知道从什么地方入手,然后经过查找资料,发现其实还是蛮简单的. 前端性能测试对象: HTML.CSS.JS.AJAX等前端技术开发的Web页面 影响用户浏览网页速 ...
- 前端UI框架和JS类库
一.前端框架库: 1.Zepto.js 地址:http://www.css88.com/doc/zeptojs/ 描述:Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jqu ...
随机推荐
- mysql之数据库特性认识
最近面试经常被面试官问道关于数据库方面的知识,于是总结一下面试官问的题以及自己对数据库的认识 1.之前百度面试官问了我一个特别基础的sql问题:如何清除表的所有记录,以前在学校做项目开发的时候有使用过 ...
- poj2311
博弈论——sg,mex sg性质:1.在末态的状态点为N态. 2.P态的下一步有一个是N态 3.N态的下一步全部是P态. 当然这是对于单点一个游戏的情形,也相当于NIM只有一堆石子. mex(mini ...
- 并发编程:c++11 多线程中随机数重复问题
srand(time(NULL)); 是我们熟悉的c++随机函数,用时间做种子.但由于在多线程环境下若想在子线程中随机出不同的随机数则需随机种子的不同.但time以秒计算,略显不足,故参考这篇文章解决 ...
- BZOJ 3514: Codechef MARCH14 GERALD07加强版( LCT + 主席树 )
从左到右加边, 假如+的边e形成环, 那么记下这个环上最早加入的边_e, 当且仅当询问区间的左端点> _e加入的时间, e对答案有贡献(脑补一下). 然后一开始是N个连通块, 假如有x条边有贡献 ...
- 容易被误解的overflow:hidden
http://www.ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html(转) 容易被误解的overflow:hidden 15条评论 ...
- ;(function( $, window, undefined ){ }(jQuery,window))为何需要往里面传$,window,undefined这些参数
(function( $, jQuery , undefined ) {})(jQuery); 为什么要将window和undefined作为参数传给它? 因为 ecmascript 执行JS代码是从 ...
- [转贴]JavaScript中Array(数组)的属性和方法
数组有四种定义的方式 使用构造函数:var a = new Array();var b = new Array(8); var c = new Array("first", &qu ...
- 在美国,一名 Uber 司机能赚多少?
在美国,Uber 司机是最热门的职业.有了 uberX,任何有车一族都能成为司机.Uber 让我们很容易成为司机. 虽然 Uber 做不到赚得盆满钵满,但对于水深火热的司机这一行来说,多了许多盈利机会 ...
- 《Linux命令行与shell脚本编程大全》 第十五章 学习笔记
第十五章:控制脚本 处理信号 重温Linux信号 信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能 ...
- MongoDB(三)mongoDB下载和安装
软件下载 下载mongodb最新的包:http://www.mongodb.org/downloads 下载mongodb可视化界面,mongoVUE:http://download.csdn.net ...