jmeter、jenkins 實現效能測試自動化
一、安裝JDK
1.1 安裝目的
jenkins需要執行在jdk上,所以安裝jenkins前需要先安裝jdk。
1.2 檢查環境是否已安裝JDK
Shell執行命令java –version 檢視是否已安裝JDK,如下圖所示,當前環境安裝的版本為1.8.0_242
1.3 安裝前的清理工作
注意:該步驟不是必須執行的,當JDK版本不適用,需安裝新的JDK時才執行
shell執行如下命令:
rpm -qa | grepjdk
rpm -qa | grepgcj
yum -y remove java-xxx-xxx
1.4 安裝步驟
1)通過XFTP在/usr/local 目錄下新建java資料夾,將安裝包上傳到伺服器的/usr/local/java目錄下,並解壓即可
2)配置JDK環境變數
vim命令修改etc目錄下的環境變數檔案:profile,填寫如下內容:
JAVA_HOME=/usr/local/java/jdk1.8.0_242
JRE_HOME=/usr/local/java/jdk1.8.0_242/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
3)shell執行source /etc/profile 命令,使環境變數生效
4)shell執行命令:java -version檢視JDK是否安裝成功,結果如下圖所示,表示安裝成功。
二、部署jmeter
1、 在/opt目錄下建立jmeter資料夾
2、上傳jmeter檔案到jmeter資料夾
3、Vim命令修改etc目錄下的環境變數檔案:profile,新增如下內容:
export JMETER_HOME=/opt/jmeter/apache-jmeter-3.1
export PATH=$JMETER_HOME/bin:$PATH
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
1、 Shell執行source /etc/profile 命令,使環境變數生效
2、 輸入jmeter -v,打印出如下結果表示安裝成功:
三、安裝jenkins
(請自行百度,此處不贅述)
四、jmeter壓測指令碼編寫
(請自行百度,此處不贅述)
五、jenkins配置自動化執行jmeter指令碼生成測試報告(重點!!!)
1)外掛下載
必備外掛:HTML Publisher、ant 、DingTalk(釘釘)、email(郵箱)、Startup Trigger、Groovy、SSH、performance、Role-based Authorization Strategy。
外掛作用說明:
a、 HTML Publisher和performance報告展示
b、 Startup Trigger、Groovy 解決HTML報告內容為空的問題
c、 SSH 連線遠端linux伺服器,並執行指令碼
d、 Role-based Authorization Strategy 使用者、角色許可權設定
下載外掛的地方:【系統管理】-【外掛管理】
2)配置jdk路徑資訊
路徑:【系統管理】-【全域性工具配置】
3)配置SSH連線jenkins所在linux伺服器
路徑:【系統管理】-【系統配置】
4) 建立job
路徑:【Dashboard】-【新建任務】
輸入工程名稱,例如:job name,選擇“構建一個自由風格的軟體專案”,點選確定按鈕,即新建成功。
注意:job的構建步驟裡各外掛的先後順序決定了執行順序,這個很重要!!!
5)設定釘釘通知
系統管理-系統配置頁面填寫釘釘配置資訊,具體如下圖所示,其中webhook為從釘釘軟體上設定的釘釘機器人的webhook。
然後到job頁面勾選配置的機器人即可。
6)SVN管理jmx指令碼
首先,新增文字引數,建立變數TestScript來存放jmx指令碼名,指令碼名不需要帶.jmx字尾
然然後配置連線SVN
最後寫shell命令執行從SVN上取下來的所有jmx指令碼
命令如下:
for i in $interface
do
jmeter -n -t $WORKSPACE/$i.jmx -l $filepath/TestReport/$i.jtl
done
7)郵件通知
先到系統管理-系統配置頁面填寫管理員郵箱地址資訊
再填寫郵件通知資訊
最後進入job,構建後操作步驟處新增操作步驟Extended Email Publisher
,並進行配置:
8)構建觸發器
進入job,在構建觸發器步驟勾選“定時構建”,輸入日程表資訊,例如輸入:H/5 * * * * 表示每五分鐘執行一次。
9)構建job前清理或備份舊報告
進入job,在“構建”處的SSH site選擇linux地址,在command處填寫刪除報告檔案的命令,如果不想刪除,也可以重新命名為其他名,具體看需要寫命令,這裡是進行刪除。
注意:filepath是引數化的檔案路徑
10)重啟ServerAgent
首先在 系統管理-系統配置頁面找到Publish over ssh外掛,並按下圖所示,填寫相關資訊。
注意:密碼只能填寫一個,如果需要監控多臺伺服器,繼續新增同樣的IP地址配置即可,但是使用者的密碼只能填寫一個,所以這些伺服器的密碼需一致。
然後進入job,構建環境處勾選“Send files or execute commands over SSH before the build starts”,然後在Exec command處填寫重啟ServerAgent.sh的指令碼。
指令碼內容:
#!/bin/bash
echo "Stopping ServerAgent.sh"
pid=`ps -ef | grep " startAgent.sh" | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo $pid
kill -9 $pid
fi
echo "starting ServerAgent.sh"
sleep 1
echo "starting ServerAgent.sh"
nohup sh startAgent.sh & > .out
echo "started ServerAgent.sh"
11)jenkins所在伺服器shell指令碼執行
首先,進入job後新增兩個文字引數,
通過變數filepath儲存jmeter的部署路徑
通過變數interface儲存報告儲存路徑,引數值處一行代表一個變數值。
然後在“構建”處新增構建步驟Execute shell script on remote host using ssh,然後SSH site選擇linux伺服器連線地址,在Command處填寫shell指令碼用於解析jmeter的測試報告;其中
#!/bin/bash -ilex
source /etc/profile;
是必填的,用於使linux的環境變數生效。
12)JMX報告解析
#!/bin/bash -ilex
source /etc/profile;
cd $filepath/lib/ext;
for i in $interface
do
jmeter -g $filepath/TestReport/$i/juhe.jtl -o $filepath/TestReport/$i/Aggregate-Report;
java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/CPU.png --input-jtl $filepath/TestReport/$i/CPU.jtl --plugin-type PerfMon;
java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/TPS.png --input-jtl $filepath/TestReport/$i/TPS.jtl --plugin-type TransactionsPerSecond;
java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/time.png --input-jtl $filepath/TestReport/$i/time.jtl --plugin-type ResponseTimesOverTime;
done
Jmx報告解析命令說明:
命令a: jmeter -g $filepath/TestReport/$i/juhe.jtl -o $filepath/TestReport/$i/Aggregate-Report;
用於將jmeter的聚合報告轉換為html報告,這裡需要提前下載jmeter的報告解析外掛jmeter-results-detail-report_30.xsl,並放到jemter的/opt/jmeter/apache-jmeter-3.1/extras目錄下。
命令b: java -jar CMDRunner.jar --tool Reporter --generate-png $filepath/TestReport/$i/CPU.png --input-jtl $filepath/TestReport/$i/CPU.jtl --plugin-type PerfMon;
用於將jmeter的資源監控報告轉換為圖片。
執行此命令前需要先通過命令:cd /opt/jmeter/apache-jmeter-3.1/lib/ext; 進入CMDRunner.jar所在目錄
命令最後有個命令型別 PerfMon,除了這個還支援如下型別:
ResponseTimesOverTime、ResponseTimesPercentiles、ThroughputVsThreads、TimesVsThreads、PageDataExtractorOverTime、TransactionsPerSecond
如上圖所示,轉換TPS報告檔案就用TransactionsPerSecond;轉換響應時間報告就用ResponseTimesOverTime。
13)HTML報告展示
進入job後先在“構建觸發器”處勾選“Build when job nodes start”
再增加構建步驟“Execute system Groovy script”
再編輯該構建步驟,編寫命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
用步驟用於解決jenkins的HTML Report外掛無法正常顯示報告資料。
再增加“構建後操作步驟” “Public HTML reports”,並進行配置
變數Filepath在General處進行配置
都配置好後,構建job,生成的報告可在左側點選“HTML Report”進行檢視
14)展示與上次構建的比對結果
進入job,在構建後操作步驟處新增步驟Publish Performance test result report,並按下圖進行配置,以讀取指定目錄下的jtl報告,job構建後可點選左側的Performance Thead檢視報告結果