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 ...
随机推荐
- ubuntu14.04下手动安装JDK + eclipse + Pydev
说明:本文在root用户下进行,如不是root用户命令前加sodu 一.手动安装JDK 1.下载JDK 从官网http://www.oracle.com/technetwork/java/javase ...
- 关于 WP上应用调试时报错“指定的通信资源(端口)”已由另一个应用程序使用 问题
问题来源 碰到这个问题是调试wp7项目的时候,之前因为安装的是wp8.0的sdk 包括wp7.5所以wp7的也能用,后来不知道怎么回事wp7项目就不能调试了总是显示启动而不是 device或者是虚拟机 ...
- 数据库MySQL多个数据库服务冲突
一.目标名称 MySQL 二.目标版本 mysql-5.6.24-win32.1432006610.zip 三.环境信息 系统:windows 7 旗舰版 防火墙:关闭 —— 注意:如果防火墙不关闭 ...
- PHP图片裁剪函数(图像不变形)
PHP图片裁剪函数(图像不变形) <? *exif_imagetype -- 判断一个图像的类型 *说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 ...
- linux杂记(四)热键[Tab],[ctrl]-c,[ctrl]-d,在线求助man page/info page
[Tab]按键 他具有[命令补全](接在一串指令的第一个字后面)与[档案补齐](接在第一串指令的第二字以后时)的功能.如 [KANO@kelvin ~]$ ca[tab][tab] cabextrac ...
- Let's Format Css Documents
每次想参考一些好看网站的时候,打开css文档都是一行的,琢磨了下就自己写了块短短的代码,各路Java大神别笑我呀.^_^ 复制粘贴控制台的输出就好了.(瞬间觉得跟上大神的脚步了←_←) package ...
- PHP中include和require的区别
include和require的区别,其实两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出. 根据测试,win32 ...
- Python的maketrans() 方法
描述 Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标. 注:两个字符 ...
- Decorators and Wrappers in Python
python代码一贯以优雅,简洁著称,而有时侯反而会让人难以理解,比如说wrapper(或者说decorator),这种方式提高了代码的可重用性,使用起来更简洁方便. 举个例子,比如WebApp常用的 ...
- nyist 220 推桌子
题目链接:推桌子 题目意思:给你一些操作,将S出的桌子推到L出,但是这个过道有时会被占用,推一次是10min,不影响的操作可以同时开始,并且只记一次. 思路:贪心,首先按照S从小到大排序,决策:从第一 ...