壓測篇04:使用Jenkins執行JMeter腳本

前置步驟:如今小程序尚未上線,直接在線上進行的壓測。咱們公司有個壓測的服務器,使用跳板機登陸後選擇該服務器,上傳腳本至/home/dev_root/qa/jmeter_load_test目錄下(專門存放腳本的目錄),上傳命令爲rz,下載命令爲sz。注:macOS上使用rz或者sz指令會卡死,具體解決等下一篇總結下html

1、Jenkins構建項目

登陸web端Jenkins,默認端口8080,點擊新建,填寫Item名稱,選擇構建一個自由風格的軟件項目,點擊ok即建立成功 python

2、配置項目參數

點擊項目名進入該項目,點擊配置按鈕進入配置頁:web

  1. 勾選參數化構建過程,點擊添加參數,選擇所需參數的填寫方式,如選擇String Parameter對應字符串輸入,choice對應下拉框選項,填寫 1)自行定義的字段名; 2)若有默認值可填寫; 3)添加對字段含義的描述 shell

  2. 點擊增長構建步驟,選擇Execute shell,添加執行shell腳本apache

cd /home/dev_root/qa/test_software/apache-jmeter-4.0/bin
if [ -e /home/dev_root/qa/jmeter_load_test/result.jtl ]
then
	rm /home/dev_root/qa/jmeter_load_test/result.jtl
fi

if [ -e /home/dev_root/qa/jmeter_load_test/result ]
then
	rm -r /home/dev_root/qa/jmeter_load_test/result
	mkdir /home/dev_root/qa/jmeter_load_test/result
fi

source /etc/profile

if [[ ${evn_name} == 'Online' ]]
then
	if [[ ${file_name} == 'separate_step' ]]
    then  
	  file='separate_step.jmx'
     elif [[ ${file_name} == 'bigeye' ]]
    then
  	  file='bigeye.jmx'   
    else
	  file='testAi.jmx'	 
    fi
fi
exefile='test_script.jmx'
cp /home/dev_root/qa/jmeter_load_test/${file} /home/dev_root/qa/jmeter_load_test/test_script.jmx
cp /home/dev_root/qa/jmeter_load_test/${exefile} /home/dev_root/qa/jmeter_load_test/${exefile}.tmp

sed -i 's/<stringProp name=\"'ThreadGroup.num_threads\"'>5</<stringProp name=\"'ThreadGroup.num_threads\"'>'${thread_num}'</g' /home/dev_root/qa/jmeter_load_test/${exefile} sed -i 's/<stringProp name=\"'ThreadGroup.duration\"'>120</<stringProp name=\"'ThreadGroup.duration\"'>'${duration}'</g' /home/dev_root/qa/jmeter_load_test/${exefile} ./jmeter -n -t /home/dev_root/qa/jmeter_load_test/${exefile} -l /home/dev_root/qa/jmeter_load_test/result.jtl -e -o /home/dev_root/qa/jmeter_load_test/result_${BUILD_NUMBER} cp -r /home/dev_root/qa/jmeter_load_test/result_${BUILD_NUMBER} /home/dev_root/qa/test_software/apache-tomcat-8.5.31/webapps/JmeterTestResult sleep 3 sed -i 's/<stringProp name=\"'ThreadGroup.num_threads\"'>'${thread_num}'</<stringProp name=\"'ThreadGroup.num_threads\"'>5</g' /home/dev_root/qa/jmeter_load_test/${exefile} sed -i 's/<stringProp name=\"'ThreadGroup.duration\"'>'${duration}'</<stringProp name=\"'ThreadGroup.duration\"'>120</g' /home/dev_root/qa/jmeter_load_test/${exefile} cd /home/dev_root/qa/jmeter_load_test sed "s/JmeterTestResult\/result\/index.html/JmeterTestResult\/result_${BUILD_NUMBER}\/index.html/g" content_bak.html >content.html python jmeter_mail.py ${to_mails} ${evn_name} cp /home/dev_root/qa/jmeter_load_test/${exefile}.tmp /home/dev_root/qa/jmeter_load_test/${exefile} 複製代碼

其中最關鍵的是: ./jmeter -n -t jmeter文件名 -l 結果文件 -e -o 結果存放目錄小程序

-t : 執行測試文件所在的位置及文件名

-n : 非GUI 模式執行JMeter

-r : 遠程將全部agent啓動用在分佈式測試場景下,不是分佈式測試只是單點就不須要-r

-l : 指定生成測試結果的保存文件, jtl 文件格式

-e : 測試結束後,生成測試報告

-o : 指定測試報告的存放位置

-o 指定的文件及文件夾,必須不存在 ,不然執行會失敗
複製代碼

以上腳本的功能就是選擇所需執行的JMeter腳本,可選擇執行環境(evn_name),執行腳本名(file_name),配置最大併發數(thread_num),執行時長(duration)和發送結果的郵件地址(to_mails),這些參數都是在參數化構建中自行定義的。tomcat

注:BUILD_NUMBER是Jenkins自帶的參數名,Jenkins有哪些參數能夠在Execute shell的command框下方點擊See the list of available environment variables查看bash

三、使用Jenkins執行壓測腳本

配置完成後,點擊Build with Parameters,可配置相應參數,如filename選擇本身想要跑的腳本名稱,一開始可配置duration爲10秒,測試腳本是否能夠正常跑起來。 服務器

配置完成後點擊開始構建。構建過程當中可點擊當前構建的console output查看實時控制檯輸出,若有明顯問題可隨時中止壓測。 併發

四、查看結果報告

構建完成後,會自動發送一個測試結果到配置的郵件裏(收不到的時候記得去垃圾箱裏查看下)

點擊「詳細日誌點擊此處」可跳轉:http://localhost:8080/JmeterTestResult/result_330/index.html。 330是build號,可手動修改build號查看每次build的結果。

比較重要的指標就是Average:平均耗時和Throughout:吞吐量
相關文章
相關標籤/搜索