一、安裝及啟動Jmeter
本文原創,歡迎轉發,但轉發請務必寫出處!
0、下載及安裝
下載地址及Linux命令
wget http://mirrors.cnnic.cn/apache//jmeter/binaries/apache-jmeter-3.0.tgz


官網下載好tgz的Jmeter壓縮包之后,直接解壓,解壓后的目錄結構和windows版本的一致。
1、運行Jmeter報錯NonGUIDriver
[
root@BJ-TEST-11-kvm-221 bin]# ./jmeter.sh -n -t ../project/realnameauthINFTest/RNA_INFtest.jmx -l log.jtl
Writing log file to: /home/bjqa/apache-jmeter-3.0/bin/jmeter.log
Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/home/bjqa/apache-jmeter-3.0/bin/../project/realnameauthINFTest/RNA_INFtest.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: kg.apc.jmeter.vizualizers.CorrectedResultCollector : kg.apc.jmeter.vizualizers.CorrectedResultCollector
---- Debugging information ----
解決:
產生該錯誤的原因,目前有兩種情況:
情況1,低版本的JMeter運行高版本的測試計划(測試計划是在高版本的JMeter上編制的)。解決方法:使用相同或更高版本JMeter運行該計划。
情況2,使用第三方插件生成的測試計划,運行在沒有該第三方插件的JMeter上。解決方法:在JMeter上安裝插件或重新生成不包含插件的測試計划。
2、運行日志中出現java.net.UnknownHostException錯誤
2016/08/15 16:02:34 ERROR - jmeter.util.JMeterUtils: Unable to get local host IP address. java.net.UnknownHostException: BJ-TEST-11-kvm-221: BJ-TEST-11-kvm-221: Name or service not known
[root@BJ-TEST-11-kvm-221 apache-jmeter-3.0]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost MDRADEL0
BJ-TEST-11-kvm-221 <----新增內容
~
[root@BJ-TEST-11-kvm-221 etc]# vim /etc/sysconfig/network
NETWORKING=yes
<--檢查確認這種寫法
HOSTNAME=BJ-TEST-11-kvm-221
<--檢查確認這種寫法
1、Linux下Jmeter概述
難點1、Linux如果是無操作系統UI,則修改jmx腳本比較費勁,全部都是XML形式;
技巧1、Jmeter測試計划xx.jmx小范圍小數據修改還可以對照windows下notepad++打開的jmx進行修改,大范圍修改最好是直接拷貝windows下的jmx內容到Linux下jmx文件中,再進行少量windowsy與Linux有
難點2、Linux下Jmeter測試結果是無界面化的,在Linux下基本上無法查看
技巧2、必須將Jmeter生成的測試結果xx.jtl文件拷貝到windows下,專門在windows下的Jmeter創建一個測試計划,添加想要查看測試結果的組件,如【查看結果樹】,【聚合報告】等,並在文件名欄位右側使用瀏覽選擇Linux下生成的jtl文件,即可看到Linux上的測試結果。每個組件需要導入一次。


技巧3、如何生成有時間作為名稱的測試結果jtl文件?
答:直接在【聚合報告】的日志寫入文件欄位按照Linux下路徑習慣寫好,如:/home/bjqa/apache-jmeter-3.0/logs/morePresult${__time(YMD)}${__time(HMS)}.jtl ,則測試結果會在/home/bjqa/apache-jmeter-3.0/logs/目錄下生成類似 morePresult201608151722.jtl
特別的,這里不要寫相對路徑,相對路徑不是很靠譜,絕對路徑可以絕對的找到日志文件。此時Jmeter運行命令如下:jmeter -n -t /home/bjqa/apache-jmeter-3.0/testplans/realnameauthINFTest/RNA_INFtest.jmx
看到沒有,根本不需要增加 參數 【-l xx.jtl】來生成日志文件,因為測試計划的jmx 【聚合報告】里面已經指定過了,去/home/bjqa/apache-jmeter-3.0/logs這里就能查到日志。
但在查看圖形化測試結果中有個坑:
從Linux上拿回來的測試結果jtl文件在windows打開報錯?
多在幾個腳本上面,用聚合報告打開試試,這里可能涉及到聚合報告中configure里面勾選的內容,但目前沒有定論。
技巧4、想看個接口請求結果,還得把jtl文件導回到windows環境,太費勁了,如何破?
答:臨時使用jmeter的log功能,在http請求中增加BeanShell PostProcessor組件,寫入腳本:
prev.setDataEncoding("UTF-8");
String response_data = prev.getResponseDataAsString();
log.error("response_data----------------:"+response_data); <==高亮部分可自由發揮
|
則在jmeter.log文件中可以看到如下日志:
2016/08/17 17:09:06 ERROR - jmeter.util.BeanShellTestElement: bodydata0----------------:{"mid":"123456","data":"{\"reqId\":\"201608171709060200\",\"idNo\":\"13*********11\",\"name\":\"**文\"}","sign":"70cf51c2e6f1a9a6b7b827a3f5939e21"}
2016/08/17 17:09:06 ERROR - jmeter.util.BeanShellTestElement: response_data----------------:{"code":0,"data":{"result":1},"sign":"40af6eb30c698edd9c541bbfaa4a9aa3"}
2016/08/17 17:09:06 INFO - jmeter.threads.JMeterThread: Thread is done: setUp Thread Group 1-20
2016/08/17 17:09:06 INFO - jmeter.threads.JMeterThread: Thread finished: setUp Thread Group 1-20
2016/08/17 17:09:06 INFO - jmeter.engine.StandardJMeterEngine: All Setup Threads have ended
2016/08/17 17:09:06 INFO - jmeter.engine.StandardJMeterEngine: No enabled thread groups found
2016/08/17 17:09:06 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2016/08/17 17:09:06 INFO - jmeter.reporters.Summariser: summary + 173 in 00:00:07 = 25.7/s Avg: 705 Min: 403 Max: 888 Err: 0 (0.00%) Active: 0 Started: 0 Finished: 0
2016/08/17 17:09:06 INFO - jmeter.reporters.Summariser: summary = 600 in 00:00:25 = 23.8/s Avg: 767 Min: 108 Max: 1537 Err: 0 (0.00%)
<==零錯誤,則可以進行下一步壓測
|
坑1、測試計划中引入jar包,直接手寫輸入不會被真正保存。
答:因為windows下Jmeter的測試計划Add directort or jar to classpath只能瀏覽選擇文件或目錄,無法直接新增手寫文件目錄或文件夾目錄,即使在Jmeter客戶端里手工書寫並保存,也是無效的。
因此在復制到Linux下之前可以使用notepad++修改,然后再交由Linux下Jmeter使用即可。
坑2、VPN下SSH如何scp命令?
[testing@boce66]:/home/testing/apache-jmeter-3.0/testplan/RNAuth]#
scp -P 322 root@200.100.10.158:/home/root/tmp/realname_infTest_Linux.jmx ./aa.jmx
reverse mapping checking getaddrinfo for 178.16.143.219.broad.bj.bj.dynamic.163data.com.cn [219.143.16.178] failed - POSSIBLE BREAK-IN ATTEMPT!
root@200.100.10.158's password:
<===這里輸入密碼
realname_infTest_Linux.jmx 100% 140KB 140.3KB/s 00:00
[testing@boce66]:/home/testing/apache-jmeter-3.0/testplan/RNAuth]#ls
aa.jmx
坑3、Linux下Jmeter3.0遇到java.net.SocketException: Connection reset
可參考http://stackoverflow.com/questions/20802694/connection-reset-meesage-from-jmeter
坑4、腳本的內容文字和UI上面你的說明文字未必能對的上

本文原創,歡迎轉發,但轉發請務必寫出處!
總結雖然結束,但坑永遠不會消失~~~20160824