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 ...
随机推荐
- 如何在一个工作站里创建多个工程(同一个xcode下面创建多个工程)
第一步,理解: 怎么会有一个xcode下面创建两个工程这一说呢,一个工程代表一个项目,意思就是有两个项目了.错.其实在一个窗口下面并不是两个工程,而是一个workspace 即一个工作站.在工作站里面 ...
- 微型 ORM 的第二篇 DapperLambda性能测试[Dapper比较篇]
由于这周比较忙,所以本来想做的性能测试,一直没时间,想想还是今天给补上吧 由于很多人都担心性能问题,封装之后跟Dapper的性能差距是多少,今天我给出我的测试方法,仅供参考. 创建IDbConnect ...
- Javascript闭包概念剖析
某种情况下,函数调用依然持有对其原始定义的作用域的引用,这个引用就叫做闭包. function foo(){ var a = 2; function bar(){ console.log(a); } ...
- C++ Member Functions的各种调用方式
[1]Nonstatic Member Functions(非静态成员函数) C++的设计准则之一就是:nonstatic member function至少必须和一般的nonmember funct ...
- 一年开发ASP.NET MVC4项目经验总结
一年开发ASP.NET MVC4项目所用所学技术经验总结 阅读目录 文章背景 前端所用技术摘要 后端所用技术摘要 1. 文章背景 本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是A ...
- SMTP邮件传输协议发送邮件和附件
在以前接触的项目中,一直都是在做网站时用到了发送mail 的功能,在asp 和.net 中都有相关的发送mail 的类, 实现起来非常简单.最近这段时间因工作需要在C++ 中使用发送mail 的功能, ...
- SQL 设计心得、逗号分隔列表
第一: 在开始编码前.主要关注数据库里要保存什么样的数据,以级最佳的数据组织方式和内在关联方式. 第二: 使用你所知的数据库特性尽可能高效的实现数据管理.如正确的索引.数据库类型.高效的select! ...
- Java和Android开发IDE---IntelliJ IDEA使用技巧(转)
以前一直使用的是Eclipse,听别人介绍说IDEA非常不错,也为了以后转Android studio铺垫下.就开始尝试用idea来开发. 这篇文章主要学习了idea的使用技巧. IDEA 全称 In ...
- smarty如何处理状态值的显示
比如状态,有效或者无效.这个数据库中保存的是1或者2这样的字段. 显示在列表的时候不能是1或者2吧. 以前,我都是在后台foreach,处理的.感觉处理之后,前台就不灵活了.这个值就被替换成了文字. ...
- VS2010 win32项目windows窗体程序 向导生成代码解析
目录: 1.Win32项目的windows窗体程序的向导生成了如下代码 2.手工生成代码如下 3.当消息队列中没有消息需要处理,我们可以利用这段时间处理我们自己的任务 1.Win32项目的window ...