Yslow效能測試框架部署
框架簡述
用於前端的效能評測,基於雅虎的評分規則對頁面進行評分的Firefox外掛,從中可以看出我們頁面上的很多不足,並且可以知道我們如何改進和優化,配合將測試報告傳送到本地的ShowSlow平臺以提供給開發人員隨時檢視。在Xvfb的輔助下,此框架最大的優點就是可以在無顯示裝置的環境下穩定執行。
使用環境:
ubuntu-10.10-desktop-i386
工具介紹
Xvfb: 主要就是通過記憶體計算模擬出圖形介面,沒有平常所見的操作介面,分為客戶端和伺服器
YSlow: 當Firefox瀏覽網頁時,可以分析網站的頁面(基於Yahoo 14條評分原則),並指出如何進行優化提高網站效能
ShowSlow:收集YSlow的測試結果並顯示出來
Ubuntu:開源的Linux桌面作業系統。
LAMP環境安裝配置
PHP 安裝需要載入mcrypt mysqli 模組
Apache
sudo apt-get install apache2 -y
PHP5
sudo apt-get install php5 -y
sudo apt-get install libapache2-mod-php5 -y
sudo apt-get install php5-mcrypt
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart
Mysql
sudo apt-get install mysql-server -y
安裝完成按提示設定root密碼
配置Apache、PHP支援Mysql
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo /etc/init.d/apache2 restart
SVN (可選)
sudo apt-get install subversion -y
安裝Xvfb
sudo apt-get install xvfb
cd /var/www/
sudo wget http://showslow.googlecode.com/files/showslow_0.13.zip
unzip showslow_0.13.zip
mv showslow_0.13 showslow
cd showslow
cp config.sample.php config.php
vi config.php
根據實際情況修改$db,$user,$pass 根據實際情況修改
# Database connection information
$db = `showslow`;
$user = `root`;
$pass = `dingtm`;
$host = `localhost`;
登入MYSQL 匯入資料
mysql -uroot -p
create database showslow;
use showslow;
source /var/www//showslow/tables.sql;
show tables;
建立測試頁面列表,新增網址
vi /var/www/showslow/urls.txt
新增網址
http://www.elain.com/
http://wap.elain.com/
http://buy.elain.com/
修改Firefox的application.ini檔案最後一段,避免Firefox崩潰後傳送報告
[Crash Reporter]
Enabled=0
建立一份Firefox測試專用的Profiles (可選)
firefox -profilemanager
修改測試專用的Profiles的prefs.js.
vi /home/elain/.mozilla/firefox/vmdbz1tv.elain/prefs.js
注:不同的伺服器vmdbz1tv.elain 這裡生成的會不同(隨機生成),此處我選預設目錄,也可自建目錄,建立prefs.js
# Mozilla User Preferences
# name firefox-prefs.js
# by dingtm
# date 2010-12-05
user_pref(“app.update.lastUpdateTime.addon-background-update-timer”, 1291608940);
user_pref(“app.update.lastUpdateTime.blocklist-background-update-timer”, 1291608793);
user_pref(“app.update.lastUpdateTime.microsummary-generator-update-timer”, 1291608894);
user_pref(“app.update.lastUpdateTime.places-maintenance-timer”, 1291607239);
user_pref(“app.update.lastUpdateTime.search-engine-update-timer”, 1291607685);
user_pref(“browser.migration.version”, 1);
user_pref(“browser.places.importBookmarksHTML”, false);
user_pref(“browser.places.smartBookmarksVersion”, 2);
user_pref(“browser.startup.homepage_override.mstone”, “rv:1.9.2.10”);
user_pref(“browser.tabs.warnOnClose”, false);
user_pref(“browser.warnOnRestart”, false);
user_pref(“distribution.canonical.bookmarksProcessed”, true);
user_pref(“extensions.PageSpeed.autorun”, true);
user_pref(“extensions.PageSpeed.beacon.minimal.url”, “http://192.168.9.110/showslow/beacon/pagespeed/”);
user_pref(“extensions.PageSpeed.optimized_file_base_dir”, “/tmp”);
user_pref(“extensions.enabledItems”, “langpack-zh-CN@firefox-3.6.ubuntu.com:3.6,ubufox@ubuntu.com:0.9rc2,firebug@software.joehewitt.com:1.6.0,yslow@yahoo-inc.com:2.1.0,{e3f6c2cc-d8db-498c-af6c-499fb211db97}:1.9.2,{972ce4c6-7e08-4474-a285-3208198ce6fd}:3.6.10”);
user_pref(“extensions.firebug.console.enableSites”, true);
user_pref(“extensions.firebug.currentVersion”, “1.6.0”);
user_pref(“extensions.firebug.defaultPanelName”, “YSlow”);
user_pref(“extensions.firebug.net.enableSites”, true);
user_pref(“extensions.firebug.previousPlacement”, 1);
user_pref(“extensions.firebug.script.enableSites”, true);
user_pref(“extensions.lastAppVersion”, “3.6.10”);
user_pref(“extensions.update.notifyUser”, false);
user_pref(“extensions.yslow.autorun”, true);
user_pref(“extensions.yslow.beaconInfo”, “grade”);
user_pref(“extensions.yslow.beaconUrl”, “http://192.168.9.110/showslow/beacon/yslow/”);
user_pref(“extensions.yslow.cdnHostnames”, “www.elain.com,data.elain.com,cdn.elain.com,s.elain.com,wap.elain.com,api.elain.com”);
user_pref(“extensions.yslow.optinBeacon”, true);
user_pref(“idle.lastDailyNotification”, 1291608859);
user_pref(“intl.charsetmenu.browser.cache”, “ISO-8859-1, GB2312, UTF-8”);
user_pref(“network.cookie.prefsMigrated”, true);
user_pref(“places.last_vacuum”, 1291608859);
user_pref(“privacy.sanitize.migrateFx3Prefs”, true);
user_pref(“urlclassifier.keyupdatetime.https://sb-ssl.google.com/safebrowsing/newkey”, 1294199157);
user_pref(“xpinstall.whitelist.add”, “”);
user_pref(“xpinstall.whitelist.add.36”, “”);
登陸到伺服器的圖形介面開啟firefox 安裝 firebug yslow pagespeed 設定為自動執行。
1、先安裝firebug yslow pagespeed火狐外掛
2、開啟Firefox輸入:about:config(我保證會很小心的)
3、filter中輸入:yslow
修改以下三條資料
extensions.yslow.beaconUrl = http://192.168.9.110/showslow/beacon/yslow/
extensions.yslow.beaconInfo = grade
extensions.yslow.optinBeacon = true
filter中輸入:speed
修改這下兩條資料:
extensions.PageSpeed.beacon.minimal.url = http://192.168.9.110/showslow/beacon/pagespeed/
extensions.PageSpeed.beacon.minimal.enabled = true
新建一個字串
extensions.yslow.cdnHostnames
新增值:www.elain.com,data.elain.com,cdn.elain.com,s.elain.com,wap.elain.com,api.elain.com
4. 重啟Firefox,
注:這裡可這用localhost來代替IP,因為服務和測試的同個臺伺服器上,不同伺服器這裡一定上設定成為IP地址。
test_harness.pl
這個指令碼是用Perl語言寫的,我們主要需要用到的是display,profile,source這三個屬性(具體作用ReadMe有解釋),可以參考下我執行這個指令碼的方式:
./test_harness.pl -display=:1 -source http://192.168.9.110/urls.txt -profile /home/elain/.mozilla/firefox/vmdbz1tv.elain/
執行上面的命令,我們通過外部機器訪問http://192.168.9.110/showslow/ 即可檢視測試結果
monitor.sh
自動呼叫之前編寫test_harness.pl指令碼,當我們將呼叫test_harness的一些引數新增進monitor後使用Linux的Cron就可以實現自動化測試了:)
注意將指令碼資料夾的絕對路徑賦值給Xvfb_PIDFILE,因為每次執行的時候系統會自動生成一個__xvfb.pid
–source http://192.168.9.110/urls.txt
–profile /root/.mozilla/firefox/vmdbz1tv.elain
建立定時任務
crontab -e
50 04 * * * /bin/sh /home/elain/showslow/monitor2.sh >> /home/elain/showslow/monitor.log 2>&1
服務端配置完成
客戶端配置方法:
注:如果客戶端不配置也可這正常檢視測試結果,但不可以手動推送資料到服務端上。
配置本地YSlow PageSpeed
1、先安裝firebug yslow pagespeed火狐外掛
2、開啟Firefox輸入:about:config(我保證會很小心的)
3、filter中輸入:yslow
修改以下三條資料
extensions.yslow.beaconUrl = http://192.168.9.110/showslow/beacon/yslow/
extensions.yslow.beaconInfo = grade
extensions.yslow.optinBeacon = true
filter中輸入:speed
修改這下兩條資料:
extensions.PageSpeed.beacon.minimal.url = http://192.168.9.110/showslow/beacon/pagespeed/
extensions.PageSpeed.beacon.minimal.enabled = true
新建一個字串(cdn資料,前端不使用CDN的跳過此步)
extensions.yslow.cdnHostnames
新增值:
www.elain.com,data.elain.com,cdn.elain.com,s.elain.com,wap.elain.com,api.elain.com
4. 重啟Firefox,
檢視測試報告的URL是:http://192.168.9.110/
排錯指南:
1、在執行test_harness.pl指令碼時出現的錯誤
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.
若使用時出現以上錯誤,解決辦法參考如下:
sudo perl -MCPAN -e shell
cpan> install POE
Can`t locate LWP/UserAgent.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.
若使用時出現以上錯誤,解決辦法參考如下:
sudo perl -MCPAN -e shell
cpan>install Bundle::LWP
如果提示YAML沒有安裝 (類似於XML的資料描述語言)
cpan>install YAML
cpan> exit
2、註冊使用者時出現以下錯誤(此處我懷疑官方的資料庫檔案中缺失)
Fatal error: Uncaught exception `Exception` with message `Can`t prepare statement: Unknown column `points` in `field list“ in /usr/local/httpd/htdocs/showslow/users/User.php:655 Stack trace: #0 /usr/local/httpd/htdocs/showslow/users/modules/usernamepass/index.php(329): User::getUsersByEmailOrUsername(`elain`) #1 /usr/local/httpd/htdocs/showslow/users/register.php(47): UsernamePasswordAuthenticationModule->processRegistration(Array, true) #2 {main} thrown in /usr/local/httpd/htdocs/showslow/users/User.php on line 655
說明資料不完整,
用於前端的效能評測,基於雅虎的評分規則對頁面進行評分的Firefox外掛,從中可以看出我們頁面上的很多不足,並且可以知道我們如何改進和優化,配合將測試報告傳送到本地的ShowSlow平臺以提供給開發人員隨時檢視。在Xvfb的輔助下,此框架最大的優點就是可以在無顯示裝置的環境下穩定執行。
使用環境:
ubuntu-10.10-desktop-i386
工具介紹
Xvfb: 主要就是通過記憶體計算模擬出圖形介面,沒有平常所見的操作介面,分為客戶端和伺服器
YSlow: 當Firefox瀏覽網頁時,可以分析網站的頁面(基於Yahoo 14條評分原則),並指出如何進行優化提高網站效能
ShowSlow:收集YSlow的測試結果並顯示出來
Ubuntu:開源的Linux桌面作業系統。
LAMP環境安裝配置
PHP 安裝需要載入mcrypt mysqli 模組
Apache
sudo apt-get install apache2 -y
PHP5
sudo apt-get install php5 -y
sudo apt-get install libapache2-mod-php5 -y
sudo apt-get install php5-mcrypt
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart
Mysql
sudo apt-get install mysql-server -y
安裝完成按提示設定root密碼
配置Apache、PHP支援Mysql
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo /etc/init.d/apache2 restart
SVN (可選)
sudo apt-get install subversion -y
安裝Xvfb
sudo apt-get install xvfb
cd /var/www/
sudo wget http://showslow.googlecode.com/files/showslow_0.13.zip
unzip showslow_0.13.zip
mv showslow_0.13 showslow
cd showslow
cp config.sample.php config.php
vi config.php
根據實際情況修改$db,$user,$pass 根據實際情況修改
# Database connection information
$db = `showslow`;
$user = `root`;
$pass = `dingtm`;
$host = `localhost`;
登入MYSQL 匯入資料
mysql -uroot -p
create database showslow;
use showslow;
source /var/www//showslow/tables.sql;
show tables;
建立測試頁面列表,新增網址
vi /var/www/showslow/urls.txt
新增網址
http://www.elain.com/
http://wap.elain.com/
http://buy.elain.com/
修改Firefox的application.ini檔案最後一段,避免Firefox崩潰後傳送報告
[Crash Reporter]
Enabled=0
建立一份Firefox測試專用的Profiles (可選)
firefox -profilemanager
修改測試專用的Profiles的prefs.js.
vi /home/elain/.mozilla/firefox/vmdbz1tv.elain/prefs.js
注:不同的伺服器vmdbz1tv.elain 這裡生成的會不同(隨機生成),此處我選預設目錄,也可自建目錄,建立prefs.js
# Mozilla User Preferences
# name firefox-prefs.js
# by dingtm
# date 2010-12-05
user_pref(“app.update.lastUpdateTime.addon-background-update-timer”, 1291608940);
user_pref(“app.update.lastUpdateTime.blocklist-background-update-timer”, 1291608793);
user_pref(“app.update.lastUpdateTime.microsummary-generator-update-timer”, 1291608894);
user_pref(“app.update.lastUpdateTime.places-maintenance-timer”, 1291607239);
user_pref(“app.update.lastUpdateTime.search-engine-update-timer”, 1291607685);
user_pref(“browser.migration.version”, 1);
user_pref(“browser.places.importBookmarksHTML”, false);
user_pref(“browser.places.smartBookmarksVersion”, 2);
user_pref(“browser.startup.homepage_override.mstone”, “rv:1.9.2.10”);
user_pref(“browser.tabs.warnOnClose”, false);
user_pref(“browser.warnOnRestart”, false);
user_pref(“distribution.canonical.bookmarksProcessed”, true);
user_pref(“extensions.PageSpeed.autorun”, true);
user_pref(“extensions.PageSpeed.beacon.minimal.url”, “http://192.168.9.110/showslow/beacon/pagespeed/”);
user_pref(“extensions.PageSpeed.optimized_file_base_dir”, “/tmp”);
user_pref(“extensions.enabledItems”, “langpack-zh-CN@firefox-3.6.ubuntu.com:3.6,ubufox@ubuntu.com:0.9rc2,firebug@software.joehewitt.com:1.6.0,yslow@yahoo-inc.com:2.1.0,{e3f6c2cc-d8db-498c-af6c-499fb211db97}:1.9.2,{972ce4c6-7e08-4474-a285-3208198ce6fd}:3.6.10”);
user_pref(“extensions.firebug.console.enableSites”, true);
user_pref(“extensions.firebug.currentVersion”, “1.6.0”);
user_pref(“extensions.firebug.defaultPanelName”, “YSlow”);
user_pref(“extensions.firebug.net.enableSites”, true);
user_pref(“extensions.firebug.previousPlacement”, 1);
user_pref(“extensions.firebug.script.enableSites”, true);
user_pref(“extensions.lastAppVersion”, “3.6.10”);
user_pref(“extensions.update.notifyUser”, false);
user_pref(“extensions.yslow.autorun”, true);
user_pref(“extensions.yslow.beaconInfo”, “grade”);
user_pref(“extensions.yslow.beaconUrl”, “http://192.168.9.110/showslow/beacon/yslow/”);
user_pref(“extensions.yslow.cdnHostnames”, “www.elain.com,data.elain.com,cdn.elain.com,s.elain.com,wap.elain.com,api.elain.com”);
user_pref(“extensions.yslow.optinBeacon”, true);
user_pref(“idle.lastDailyNotification”, 1291608859);
user_pref(“intl.charsetmenu.browser.cache”, “ISO-8859-1, GB2312, UTF-8”);
user_pref(“network.cookie.prefsMigrated”, true);
user_pref(“places.last_vacuum”, 1291608859);
user_pref(“privacy.sanitize.migrateFx3Prefs”, true);
user_pref(“urlclassifier.keyupdatetime.https://sb-ssl.google.com/safebrowsing/newkey”, 1294199157);
user_pref(“xpinstall.whitelist.add”, “”);
user_pref(“xpinstall.whitelist.add.36”, “”);
登陸到伺服器的圖形介面開啟firefox 安裝 firebug yslow pagespeed 設定為自動執行。
1、先安裝firebug yslow pagespeed火狐外掛
2、開啟Firefox輸入:about:config(我保證會很小心的)
3、filter中輸入:yslow
修改以下三條資料
extensions.yslow.beaconUrl = http://192.168.9.110/showslow/beacon/yslow/
extensions.yslow.beaconInfo = grade
extensions.yslow.optinBeacon = true
filter中輸入:speed
修改這下兩條資料:
extensions.PageSpeed.beacon.minimal.url = http://192.168.9.110/showslow/beacon/pagespeed/
extensions.PageSpeed.beacon.minimal.enabled = true
新建一個字串
extensions.yslow.cdnHostnames
新增值:www.elain.com,data.elain.com,cdn.elain.com,s.elain.com,wap.elain.com,api.elain.com
4. 重啟Firefox,
注:這裡可這用localhost來代替IP,因為服務和測試的同個臺伺服器上,不同伺服器這裡一定上設定成為IP地址。
test_harness.pl
這個指令碼是用Perl語言寫的,我們主要需要用到的是display,profile,source這三個屬性(具體作用ReadMe有解釋),可以參考下我執行這個指令碼的方式:
./test_harness.pl -display=:1 -source http://192.168.9.110/urls.txt -profile /home/elain/.mozilla/firefox/vmdbz1tv.elain/
執行上面的命令,我們通過外部機器訪問http://192.168.9.110/showslow/ 即可檢視測試結果
monitor.sh
自動呼叫之前編寫test_harness.pl指令碼,當我們將呼叫test_harness的一些引數新增進monitor後使用Linux的Cron就可以實現自動化測試了:)
注意將指令碼資料夾的絕對路徑賦值給Xvfb_PIDFILE,因為每次執行的時候系統會自動生成一個__xvfb.pid
–source http://192.168.9.110/urls.txt
–profile /root/.mozilla/firefox/vmdbz1tv.elain
建立定時任務
crontab -e
50 04 * * * /bin/sh /home/elain/showslow/monitor2.sh >> /home/elain/showslow/monitor.log 2>&1
服務端配置完成
客戶端配置方法:
注:如果客戶端不配置也可這正常檢視測試結果,但不可以手動推送資料到服務端上。
配置本地YSlow PageSpeed
1、先安裝firebug yslow pagespeed火狐外掛
2、開啟Firefox輸入:about:config(我保證會很小心的)
3、filter中輸入:yslow
修改以下三條資料
extensions.yslow.beaconUrl = http://192.168.9.110/showslow/beacon/yslow/
extensions.yslow.beaconInfo = grade
extensions.yslow.optinBeacon = true
filter中輸入:speed
修改這下兩條資料:
extensions.PageSpeed.beacon.minimal.url = http://192.168.9.110/showslow/beacon/pagespeed/
extensions.PageSpeed.beacon.minimal.enabled = true
新建一個字串(cdn資料,前端不使用CDN的跳過此步)
extensions.yslow.cdnHostnames
新增值:
www.elain.com,data.elain.com,cdn.elain.com,s.elain.com,wap.elain.com,api.elain.com
4. 重啟Firefox,
檢視測試報告的URL是:http://192.168.9.110/
排錯指南:
1、在執行test_harness.pl指令碼時出現的錯誤
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.
若使用時出現以上錯誤,解決辦法參考如下:
sudo perl -MCPAN -e shell
cpan> install POE
Can`t locate LWP/UserAgent.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.
若使用時出現以上錯誤,解決辦法參考如下:
sudo perl -MCPAN -e shell
cpan>install Bundle::LWP
如果提示YAML沒有安裝 (類似於XML的資料描述語言)
cpan>install YAML
cpan> exit
2、註冊使用者時出現以下錯誤(此處我懷疑官方的資料庫檔案中缺失)
Fatal error: Uncaught exception `Exception` with message `Can`t prepare statement: Unknown column `points` in `field list“ in /usr/local/httpd/htdocs/showslow/users/User.php:655 Stack trace: #0 /usr/local/httpd/htdocs/showslow/users/modules/usernamepass/index.php(329): User::getUsersByEmailOrUsername(`elain`) #1 /usr/local/httpd/htdocs/showslow/users/register.php(47): UsernamePasswordAuthenticationModule->processRegistration(Array, true) #2 {main} thrown in /usr/local/httpd/htdocs/showslow/users/User.php on line 655
說明資料不完整,
用phpmyadmin 建立一個points的表,型別 varchar 欄位200
本文轉自 elain2012 51CTO部落格,原文連結:http://blog.51cto.com/elain/613753
相關文章
- java 效能測試框架工具-junitperfJava框架
- 介面測試框架接入效能測試實踐分享框架
- c# sqlsugar,hisql,freesql orm框架全方位效能測試對比 sqlserver 效能測試C#SqlSugarORM框架Server
- jmeter介面效能測試-高併發分散式部署JMeter分散式
- HTTP框架Hertz實踐入門:效能測試指南HTTP框架
- 主流 go-web 服務端框架效能測試GoWeb服務端框架
- 效能測試
- sqlsugar freesql hisql 三個ORM框架效能測試對比SqlSugarORM框架
- Jmeter介面測試+效能測試JMeter
- 為 java 開發者設計的效能測試框架,用於壓測+測試報告生成Java框架測試報告
- Jmeter效能測試:高併發分散式效能測試JMeter分散式
- 測試開發之效能篇-效能測試設計
- 【PG效能測試】pgbench效能測試工具簡單使用
- 效能測試——效能測試-常見效能指標-總體概況指標
- 效能測試之測試指標指標
- 微服務測試之效能測試微服務
- 【效能測試】效能測試各知識第1篇:效能測試大綱【附程式碼文件】
- Kafka效能測試Kafka
- Redis 效能測試Redis
- 效能測試-概述
- JMeter效能測試JMeter
- 效能測試流程
- 前端測試框架前端框架
- 效能測試面試題面試題
- (一)效能測試(壓力測試、負載測試)負載
- 新潮測試平臺之效能測試
- 簡單介紹.Net效能測試框架Crank的使用方法框架
- 【PG流複製】Postgresql流複製部署過程及效能測試SQL
- Windows10 & Python3 部署Robot FrameWork自動化測試框架WindowsPythonFramework框架
- jmeter之效能測試JMeter
- 效能測試工具 - Siege
- jmeter做效能測試JMeter
- 面經-效能測試
- 效能測試的流程
- Prepared SQL 效能測試SQL
- 效能測試解讀
- 效能測試指標指標
- WebGPU效能測試分析WebGPU
- Kafka效能測試分析Kafka