當前位置:首頁 » 數據倉庫 » 配置完jmeter成功如何驗證
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

配置完jmeter成功如何驗證

發布時間: 2022-11-05 00:56:45

⑴ 怎麼用myeclipse來形成jmeter中的測試報告

1. 下載jmeter源碼,可以從下面SVN路徑上下載:
這里需要說明一下,如果你的jdk版本等於或者高於1.6,最好下載主幹的代碼(TRUNK),否則在後面編譯的時候會遇到各種由於JAVA版本不匹配導致的問題。

2. 代碼下載完成之後,我們需要配置ant,即使你用的是myeclipse,它裡面已經繼承好了ant,但是我還是建議你自己在配置一版。 ANT的配置很簡單。
下載,之後配置ANT_HOME ,path和classpath即可。
比如我的為:
ANT_HOME=C:\apache-ant-1.9.4
Path 後面添加%ANT_HOME%\bin
Classpath 添加%ANT_HOME%\lib
配置完成後可以在cmd中輸入命令ant進行驗證

3. Ant安裝完成後,我們可以從cmd中進入我們剛剛下載的jmeter源碼目錄下,首先用
ant –p 可以看到build.xml中的編譯項,其中all為默認編譯項。
最關鍵的一步,輸入ant download_jars,它會自動下載需要的jar包,最後結果為Build success,則表示成功。

4. 包下載完成之後,我們現在在命令行直接輸入ant即可進行編譯。但是要想在myeclipse中進行編譯還需要把我們下載到lib目錄下的所有jar包倒入才行。
倒入方法: 右鍵項目名稱->build path->configure build path

5. 所有的jar導入完成後,右鍵build.xml文件->run as->ant build可以進行編譯,但是還是不能夠像其它java項目一樣直接run as運行以及debug。此時還需要後續關鍵的配置。
6. 右鍵項目名稱->properties->builders里新建編譯項。
1. 右鍵項目名稱->run as-> java application
之後會搜索jmeter的主函數,jmeter的主函數在package org.apache.jmeter中,類名為NewDriver。
8. 設置完成後嘗試運行,後可能會遇到讀取properties的文件的路徑錯誤的問題,該問題的原因是因為在NewDrivers類中的下面代碼:
tmpDir = System.getProperty("jmeter.home","");// Allow override $NON-NLS-1$ $NON-NLS-2$
我們可以將其屏蔽之後用下面的代碼替換即可。
tmpDir = System.getProperty("user.dir","");

⑵ Jmeter 問題錦集

java.io.FileNotFoundException:rmi_keystore.jks

文件校驗問題

1、不進行文件校驗,打開 [ jmeter 安裝目錄 ]\bin\jmeter-server.bat 文件

2、運行 create-rmi-keystore.bat (Windows)/ create-rmi-keystore.sh (Linux) 文件並自行填寫相關信息,運行後,bin 目錄下會多出一個 rmi_keystore.jks 文件,然後將這個文件拷貝到想要運行的 slave 機上,就可以不使用方法1

Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: 192.168.xxx.xxx; nested exception is:
java.net.ConnectException: Connection timed out: connect

1、192.168.xxx.xxx 這個IP 可能是虛擬網卡的 IP,關閉所有的虛擬網卡,只保留本地網路
2、檢查slave伺服器的防火牆是否打開,需要關閉
3、通信雙方的機器沒有識別到有效的遠程IP,考慮將遠程方法調用伺服器的主機IP進行固定設置,再作效果檢查
4、開始測試,但是測試速度非常慢,測試結果也是非常大的值,檢查slave伺服器和被測試伺服器之間是否可以 ping 通地址

第3點分析相應解決方法:
Master機修改 jmeter.bat (windows)/ jmeter.sh (Liunx)

Error in rconfigure() method java.rmi.ConnectException:Connection refused to host

1、查看埠是否被佔用

1、更換埠

java.net.ConnectException:Connection timed out:connect

由於連接被拒絕,這意味著防火牆可能已切斷連接

需要在JMeter和目標伺服器之間打開埠

Response too large to be displayed. Size: 412152 > 204800

未設置察看結果樹的大小

1、打開 [ jmeter 安裝目錄 ]\bin\user.property 文件

2、右擊測試用例——添加——監聽器——保存響應到文件, 填寫要保存的文件名
3、將文件中的返回結果粘貼到此用例的響應斷言中

Not able to find Java executable or version. Please check your Java installation. errorlevel=2

1、errorlevel=1,當前系統安裝的 jdk 版本過低
2、errorlevel=2,沒有配置 jdk 環境變數所致
3、errorlevel=3,當前系統安裝的 jdk 版本過低,不符合 jmeter 要求所致

通用方法:
配置對應這個 jmeter 版本的 jdk 版本的環境變數

第1點分析,其他解決方法:
打開 jmeter.bat 文 件,注釋 set DUMP=-XX:+HeapDumpOnOutOfMemoryError

Bad call to remote host

1、檢查 salve 機器上的 jmeter-server 是否啟動
2、檢查 JMeter.properties 中 remote_hosts 的配置是否錯誤

1、啟動 salve 機器上的 jmeter-server
2、正確配置 JMeter.properties 中 remote_hosts

1、Non HTTP response message: The target server failed to respond
2、Non HTTP response code: java.net.SocketException

調整超時時間,jmeter 的 http 請求中,工具會默認勾選 Use KeepAlive ,在運行時,jmeter.properties 中的 httpclient.timeout 設置默認是注銷的,也就是連接空閑,立馬斷開

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件
根據情況設置10-60毫秒,能解決報錯問題,問題還是沒有真正解決

Server failed to start: java.rmi.RemoteException: Cannot start. *** is a loopback address.
An error occurred: Cannot start. *** is a loopback address.

沒有指定主機導致這個錯誤

1、修改 hosts 文件

2、打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Waiting for possible shutdown message on port 4445

在 master 跑測試腳本時,會一直提示如下信息,導致測試一直跑不起來
這個是用於監聽shutdown message的,如果不需要,可以直接設置為0即可

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Could not reserve enough space for 2097152KB object heap
errorlevel=1

Jmeter 內存不足

打開 [ jmeter 安裝目錄 ]\bin\jmeter.bat 文件

could not find ApacheJmeter_core.jar

找不到 jdk 環境

1、正確安裝對應版本的 jdk
2、正確設置環境變數

jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:

配置了 127.0.0.1,但是未開啟本機的 jmeter-sever.bat/jmeter-sever

開啟本機的 jmeter-sever.bat/jmeter-sever

運行成功,響應斷言也正確通過,但是察看結果樹里為空

模式(Mode)(采樣結果發送模式)默認是Standard,在采樣結果產生後立即發送

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Response code: Non HTTP response code: java.net.SocketTimeoutException
Response message: Non HTTP response message: connect timed out

發生該錯誤時,jmeter已經連接上伺服器,查看load time沒有超過設定的request timeout時間,錯誤可能的原因是,伺服器那邊未處理該線程的請求,或者為保證服務能力,斷掉了連接。
為了驗證該猜想,持續大於半小時向伺服器發送該並發數量的請求,一段時間後,request收到503的response,證明猜想



Java.NET.BindException: Address already in use: connect

短時間內new socket操作很多,而socket.close()操作並不能立即釋放綁定的埠,而是把埠設置為TIMEWAIT 狀態,過段時間(默認240s)才釋放,(用netstat -na可以看到),最後系統資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區間在1024-5000之間)

在運行 JMeter agent 的機器上,添加註冊表條目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

jmeter腳本運行的過程中,伺服器性能參數沒有明顯變化 (CPU,內存,I/O),但request的響應時間很長。

觀察jmeter agent機器網路使用情況,網路使用持續達到帶寬的限制峰值。request 發送的過程中pending在網路中,實際並發的request並沒有同一時間到達伺服器,所以伺服器沒有明顯變化。

提高jmeter agent機器網路帶寬。

java.io.IOException: Error writing to server
java.net.SocketException: Connection reset

可能是本機的 JVM 太小了

打開 [ jmeter 安裝目錄 ]\bin\jmeter.bat 文件

java.net.SocketException: Unrecognized Windows Sockets error: 0: recv failed



打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

java.net.SocketTimeoutException: Read timed out



打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

For performance it is advised to check "Interpret Condition as Variable Expression"
and use __jexl3 or __groovy evaluating to true or false or a variable that contains true or false.
${JMeterThread.last_sample_ok) can be used to test if last sampler was successful

對於4.x之後的版本 JMeter 中的 If Controller,在Expression輸入框中直接輸入判斷的表達式,如1 == 1、${threadNum} > 2,而不做求值計算(true/false)就執行JMeter是沒有效的,達不到預期的效果。採用JMeter比較早期的版本(如:2.x版本),直接就寫判斷的表達式,並沒有作真假求值運算也能被識別

1、在Expression輸入框中,建議將判斷條件解釋為變數表達式,並使用__jexl3函數或__groovy函數對該變數表達式求值為true/false
2、可輸入值為true/false的變數
3、${JMeterThread.last_sample_ok}可用於檢測最後一個取樣器是否成功執行

java.lang.IllegalStateException: Engine is busy - please try later

1、可能是防火牆規則被阻止
2、控制機、執行機未設置需要連接的IP

1、關閉控制機、執行機的防火牆
2、打開 [ jmeter 安裝目錄 ]\bin\jmeter-server 文件

3、打開 [ jmeter 安裝目錄 ]\bin\system.properties 文件

Response code: Non HTTP response code:org.apache.http.conn.ConnectTimeoutException
Response message: Non HTTP responsemessage: Connect to 10.15.107.112:9089 timed out

Non HTTPresponse code 說明沒有收到來自伺服器的 response。
導致 ConnectTimeoutException 錯誤的可能有 JMeter 本身問題,也可能是伺服器問題。

通過分布式運行 JMeter 的方式來消除 JMeter 本身的影響

⑶ (二)jmeter完成一個簡單介面測試和斷言

day3

系統提供的web計劃里包含哪些組件?

線程組

--HTTP請求默認值

--HTTP cookies管理器

--HTTP 信息頭管理器

--HTTP請求

----響應斷言

--測試活動

----統一隨機定時器

--HTTP 請求

----響應斷言

--查看結果樹

day4,day5

使用jmeter完成一個簡單的介面測試,並且進行斷言(熟悉操作),即訪問www..com,並測試返回結果中包含文字「」網路一下「」

1.單擊 文件--新建,創建了一個測試計劃

2.在測試計劃上右擊--添加-線程(用戶)-線程組

3.在線程組上右擊-添加--取樣器--HTTP請求

4.在線程組上右擊-添加-監聽器-查看結果樹,斷言結果(分別點擊這兩項)

5.在HTTP請求上右擊-添加-斷言-響應斷言

6.在HTTP請求頁面中的協議:http,伺服器名稱或IP:www..com

7.在響應斷言 頁面中,選擇 測試欄位 為響應文本,模式匹配規則 為 字元串 ,測試模式 添加文字:網路一下

8.點擊綠色的三角形 運行,這時如果沒有保存 會彈出 一個提示框問你是否要保存,這時點擊YES

點擊運行成功後,點擊 查看結果樹,是紅色的叉叉,請求成功,但是斷言失敗了

分析原因:

既然是斷言失敗了,問題就出在請求的響應信息,我們先去檢查響應信息,發現裡面有亂碼

現在的問題是如何解決亂碼,解決方案有兩個:

一 添加BeanShell PostProcessor

1. 在 線程組  右擊--添加-後置處理器-BeanShell PostProcessor

2.在該頁面中的script中增加 prev.setDataEncoding("utf-8"); 

3.保存後,點擊綠色三角運行

4.查看結果樹,這時是綠色通過的,介面測試完成

二 修改jmeter配置文件

1進入Jmeter的bin目錄下,找到jmeter.properties文件,以文本形式打開

2 ctrl+F 輸入sampleresult.default.encoding,找到這一行

3默認這行是注釋的,將ISO-8859-1修改成utf-8,去掉注釋符號,重啟Jmeter

4.再次請求時會發現響應中不會有亂碼了。

⑷ 今天安裝了Jmeter,如何測試Jmeter是否安裝成功呢

linux環境還是windows環境?
如果是linux環境,到bin目錄下:./jmeter.sh XX.jmx(所要運行的測試腳本,沒有的話,examples目錄下有個)
如果有進程啟動,且jmeter.log中沒有錯誤信息就安裝成功了;
如果是windows環境,雙擊「jmeter.bat」文件,如果彈出對話框,就成功了

⑸ 系統許可權是後台驗證的 jmeter怎麼使用

一、配置java環境1:先查看系統32/64:uname-a根據系統的版本去Oracle官網下載jdk,下載後安裝jdk即可。2:配置JAVA環境變數:vi/etc/profile追加如下內容:JAVA_HOME=/opt/jdk1.6.0_20PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/tools.jarexportJAVA_HOMEexportPATHexportCLASSPATH其中的JAVA_HOME為jdk的安裝路徑3:驗證echo$PATH或者java-version二、安裝resin下載resin後,解壓運行安裝腳本:./resin.shconsole。然後在自己pc上訪問serverip:port看到resin默認歡迎頁面即說明安裝成功。之後把在web項目的war包拷進ren目錄下的webapps文件夾內,即可在外網訪問伺服器上的web項目了。三、安裝jmeter下載:同樣在jemeter官網下載對應的安裝包,解壓後執行:./jmeter-n-t../ssdb_test.jmx-l../log.jtl命令說明:a.-n參數說明不用驗證是否安裝了圖形庫b..jmx文件可以在windows環境下的用jmeter圖形化生成,涉及參數以及測試結果的.csv文件路徑可以直接用notepad++vi等修改.jmx文件,確保其相對於.jmx文件路徑正確。c.log.jtl保存測試結果既然沒裝圖形界面庫,那麼測試結果.jtl文件就只能在windows下用jmeter來查看了。執行效果如下:[@zjm_44_250bin]#./jmeter-n-t../ssdb_test.jmx-l../log.../ssdb_test.jmxStartingthetest@MonDec2918:43:20CST2014(1419849800772)=100in0.3s=289.9/sAvg:105Min:3Max:285Err:0(0.00%)Tidyingup@MonDec2918:43:21CST2014(1419849801734)endofrun最後,執行命令:/home/apache-jmeter-2.8/bin/jmeter-n-tdownload.jmx-llog.jtllinux下最好輸全路徑,不然可能報bash:jeter:commandnotfound,找不到執行文件錯誤,參數介紹如下:--guimode-t[].-l[].-.properties()/proxyserverinformation:-H[]-P[proxyserverport]

⑹ JMeter 介面/並發/性能測試(詳盡版)

        Jmter工具設計之初是用於做性能測試的,它在實現對各種介面的調用方面已經做的比較成熟,因此,本次直接使用Jmeter工具來完成對Http介面的測試。因為再做介面測試時可以設置線程組,所以也可做介面性能測試。

        本篇使用JMeter完成了一個完整的Http介面性能測試流程,從腳本編寫(工具化生成),執行到最終結果分析。

> 介面地址 :我們選取最常見的網路搜索介面:https://www..com/s?ie=utf-8&&wd=新聞

            ie:編碼方式,默認為utf-8

            wd: 搜索詞

> 返回結果判斷 (斷言):

            搜索結果,我們可以通過校驗結果中是否含有搜索詞wd來判斷本次請求成功或失敗。

> 依次進行如下操作:1) 添加線程組           2)添加請求&http消息頭管理器          3)添加結果監聽器(察看結果樹 )   

                                    4)添加用戶自定義變數        *)添加定時器(集合點)

                                    5)添加請求的斷言    6)添加斷言結果    7)添加聚合報告    8)執行  

                                    9)結果分析(分析測試報告)

1) 添加線程組

        添加虛擬用戶組(Thread Group),這些虛擬用戶用來模擬訪問被測系統

        一個 線程組(Thread Group) 等於 一組虛擬用戶(virtual users group) ,

         一個Java線程  等於   一個用戶

2)添加請求、添加 http消息頭管理器

2.1)添加請求

        接下來的一步就是要加入實際被測頁面,右擊「線程組」 > 「添加」 > 「Sampler」 > 「HTTP請求」。

        ps: 參數,用於get 或put請求;消息體數據用於post    請求; -----很重要,很容易出錯!

2.2)http消息頭管理器

3)添加察看結果樹

        添加結果監聽器(察看結果樹 ),  「監聽器」讓用戶來觀察測試結果

        運行後點擊左側觀察結果數,查看請求執行結果,紅色為失敗,綠色為成功,如下圖:

4)添加用戶自定義變數  &集合點

用戶自定義變數 -,需要再HTTP請求處,手動修改請求中為變數形式 ${wd}

*)添加集合點

 5)添加請求的斷言    6)添加斷言結果    

7)添加聚合報告    

8)執行  

至此,就完成了一個完整Http介面的JMeter性能測試腳本編寫,點擊運行即可

>查看運行日誌,   「選項」 > 「Log Viewer」看看運行的日誌。如果你還是看不到日誌,你可以點擊下面所示的三角箭頭展開或者收起日誌視圖

9)結果分析(分析測試報告)

待性能測試執行完成後,打開聚合報告可以看到: 

10) 腳本查看

        可以使用編輯器查看.jmx文件,如下圖所示:

⑺ 使用jmeter做介面測試,怎麼驗證,核對響應結果中json的內容

每一個http請求下面加入jp@gc - JSON Path Assertion
a.在jp@gc - JSON Path Assertion中的
1.JSON Path中填入你所需要驗證的json中某一個參數(例子:$.ErrorMessage )
2.Expected Value中填入你需要這個json中某一個參數的值是多少(例子:null)
b.這樣再在下面加一個查看結果樹 就可以看到這個介面請求是否請求成功

⑻ 如何用jmeter測試本機上的軟體

1.打開Java編譯器,新建一個項目"TestLength",然後新建一個包"app".2.從Jmeter的安裝目錄lib/ext中拷貝兩個文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的項目中,然後引入這兩個JAR文件.(具體的引入方法參考各個Java編譯器的使用方法)3.在"app"包中新建一個類,名字叫"TestLength",不過這個類要繼承"AbstractJavaSamplerClient"類,如果項目引入步驟二中的兩個文件,就可以找到"AbstractJavaSamplerClient"類了.4."TestLength"類在繼承"AbstractJavaSamplerClient"類的同時也會繼承四個方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用於設置傳入的參數;"setupTest"方法為初始化方法,用於初始化性能測試時的每個線程."runTest"方法為性能測試時的線程運行體;"teardownTest"方法為測試結束方法,用於結束性能測試中的每個線程.5.具體實現代碼如下:packageapp;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;importcom.passpod.core.t8.*;/***@author樂以忘憂***Window-Preferences-Java-CodeStyle-CodeTemplates*/{privateSampleResultresults;privateStringtestStr;//初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行,類似於LoadRunner中的init方法publicvoidsetupTest(JavaSamplerContextarg0){results=newSampleResult();testStr=arg0.getParameter("testString","");if(testStr!=null&&testStr.length()>0){results.setSamplerData(testStr);}}//設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中(){Argumentsparams=newArguments();params.addArgument("testStr","");//定義一個參數,顯示到Jmeter的參數列表中,第一個參數為參數默認的顯示名稱,第二個參數為默認值returnparams;}//測試執行的循環體,根據線程數和循環次數的不同可執行多次,類似於LoadRunner中的Action方法publicSampleResultrunTest(JavaSamplerContextarg0){intlen=0;results.sampleStart();//定義一個事務,表示這是事務的起始點,類似於LoadRunner的lr.start_transactionlen=testStr.length();results.sampleEnd();//定義一個事務,表示這是事務的結束點,類似於LoadRunner的lr.end_transactionif(len<5){System.out.println(testStr);results.setSuccessful(false);//用於設置運行結果的成功或失敗,如果是"false"則表示結果失敗,否則則表示成功}elseresults.setSuccessful(true);returnresults;}//結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束後執行,類似於LoadRunner中的end方法publicvoidteardownTest(JavaSamplerContextarg0){}}6.把上面的例子打包,然後把生成的"TestLength.jar"文件拷貝到Jmeter的安裝目錄lib/ext下.7.運行Jmeter,添加一個線程組,然後在該線程組下面添加一個Java請求(在Sampler中),在Java請求的類名稱中選擇咱們剛創建的類"app.TestLength",在下面參數列表的"testStr"後面輸入要測試的字元串,然後添加一個監聽器(聚合報告),設置一下模擬的用戶數就可以測試了.如果測試不成功,Jmeter會在它自己個輸出框中拋出這個字元串.通過上面的例子我們可以發現,使用Jmeter自定義Java測試代碼,配合Jmeter自帶的函數,就可以實現出LoadRunner中"JavaVuser"協議的絕大多數功能,而且是沒有用戶數限制和完全免費的(嘿嘿).上面的例子非常簡單,而且沒有任何實際意義,只是一個簡單的Jmeter測試代碼示例,用於拋磚引玉,希望大家一起交流,共同進步.