前置步驟:如今小程序尚未上線,直接在線上進行的壓測。咱們公司有個壓測的服務器,使用跳板機登陸後選擇該服務器,上傳腳本至/home/dev_root/qa/jmeter_load_test目錄下(專門存放腳本的目錄),上傳命令爲rz,下載命令爲sz。注:macOS上使用rz或者sz指令會卡死,具體解決等下一篇總結下html
登陸web端Jenkins,默認端口8080,點擊新建,填寫Item名稱,選擇構建一個自由風格的軟件項目,點擊ok即建立成功 python
點擊項目名進入該項目,點擊配置按鈕進入配置頁:web
勾選參數化構建過程,點擊添加參數,選擇所需參數的填寫方式,如選擇String Parameter對應字符串輸入,choice對應下拉框選項,填寫 1)自行定義的字段名; 2)若有默認值可填寫; 3)添加對字段含義的描述 shell
點擊增長構建步驟,選擇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
配置完成後,點擊Build with Parameters,可配置相應參數,如filename選擇本身想要跑的腳本名稱,一開始可配置duration爲10秒,測試腳本是否能夠正常跑起來。 服務器
配置完成後點擊開始構建。構建過程當中可點擊當前構建的console output查看實時控制檯輸出,若有明顯問題可隨時中止壓測。 併發
構建完成後,會自動發送一個測試結果到配置的郵件裏(收不到的時候記得去垃圾箱裏查看下)
點擊「詳細日誌點擊此處」可跳轉:http://localhost:8080/JmeterTestResult/result_330/index.html。 330是build號,可手動修改build號查看每次build的結果。