1. 程式人生 > >jMeter3.3 --概述 學習1

jMeter3.3 --概述 學習1

    apache jMeter 是一個開源的工具,用於量度應用程式的效能。它本來是用於測試web 應用程式的,但是由於jMeter的擴充套件的功能,於是就能夠支援其他測試功能啦。

    Apache jMeter 可以測試靜態資源,動態資源,動態web應用的效能。

    它可以模擬高負載的一個伺服器,伺服器叢集,大量的使用者,網路等等,用於測試應用的強度;通過不同載入型別,全面分析軟體效能。

    特點如下

 

    原文連結:http://jmeter.apache.org/index.html

1.0 Overview

    當你使用jMeter時,通常都會遵循如下處理過程。

1.0.1 構建測試計劃

   你可以在GUI Mode下執行jMeter。然後從瀏覽器或原生應用中錄製應用,步驟:file -> Template... ->record

   當然你也可以手動的建立,但是需要確保你知道測試計劃要素的每一個概念

1.0.2 測試執行

   準備好你的測試計劃後,你就可以開始負載測試了。第一步就需要配置jmeter執行的injectors(在其他的負載測試工具裡面也是需要配置這些的):

   如果你準備好了這些就可以在命令列模式(Non-GUI Mode)裡開始負載測試啦

    注意:負載測試是不能執行在GUI Mode下的

    使用Non GUI Mode你可以生成一個CVS或XML檔案,讓jMeter在負載測試的最後生成一個HTML報告。jMeter預設情況下會提供一個負載測試的總結。當然你可以使用Backend Listener來獲取一個實時動態的結果。

1.0.3 測試分析

    負載測試完成後,你可以使用一個html報告來分析你的負載測試。

1.0.4 開始使用

    安裝

    如果你想要做資料庫測試(JDBC testing),那麼你需要配置JDBC驅動。jMeter並不自帶JDBC驅動。

    jMeter包含了JMS API的jar包,但是並不包含JMS客戶端的執行,如果你想要做JMS測試,你需要從JMS供應商那裡下載相應的jar包。

    建立測試計劃

    jmeter版本需要與對應的java版本一致,具體可參考原文。

    原文連結:http://jmeter.apache.org/usermanual/get-started.html

    1.2 可選項

    用於擴充套件jMeter。

    1.2.1 java編譯器

    如果你是想要擴充套件jMeter或者是開發jMeter外掛,那麼你需要完整的JDK 8 或者更高。

    1.2.2 SAX XML解析器

    jMeter自帶Apache的Xerces XML解析器。你可以通過這個可選項自行配置不同的XML解析器,但是這就需要你在jMeter的classpath路徑裡面加入第三方的解析器,並更新jMeter.properties檔案。

    1.2.3 支援郵箱

    jMeter可以擴充套件郵箱,用來發送測試結果。它具有POP3(S)/IMAP(S)例項和SMTP(S)例項。

    1.2.4 SSL加密

    使用SSL加密(https)來測試web伺服器,需要給jMeter提供SSL,所需要的java版本也需要在1.4以上。如果你的java版本不支援SSL,那麼你可以加入外部工具來執行,包括引入加密包,該加package需要jMeter的classpath路徑上。當然你還需要更新system.properties,用於註冊SSL供應商。

    jMeter HTTP 預設是在協議層TLS。這個是可以在jMeter的屬性(jmeter.properties或者user.properties裡面的https.default.protocol)裡面配置的。

    jMeter的http例項接受所有的證書,不管證書是否受信任,是否過期等。

    如果伺服器需要一個客戶端的證書,......

    你也可以使用SSL Manager來更好的控制認證。

    這部分詳見原文吧。

    1.2.5 JDBC driver

    如果你想要做JDBC測試的話,你需要增加你的資料庫驅動到jMeter的classpath裡面。需要確保檔案是jar包而不是zip包。

    1.2.6 JMS driver

    jMeter目前包含了Apache Gernoimo的JMS API,所以你需要從JMS供應商那裡增加相應的JMS客戶端執行jar包

    1.2.7 ActiveMQ JMS庫

    你需要增加activemq-all -X.X.X.jar 到你的classpath裡面。詳情參考原文。

    1.3 安裝

    1.4 執行

    windows系統,點選bin目錄下的jMeter.bat,Unix系統點選jMeter檔案,jMeter的GUI模式就會出現。

    GUI模式只能被用在建立測試指令碼,負載測試必須使用非GUI模式。

    bin目錄下的一些額外指令碼(windows指令碼檔案需要執行在win2000以上):

    LAST關鍵字是用在jmeter-n.cmd,jmeter-t.cmd和jmeter-n-r.cmd中,意思是已經執行的上一個測試計劃。 

    環境變數JVM_ARG可以用來重寫jmeter.bat的JVM設定的。例如:

   工作在Linux和Unix系統上的檔案參考原文。                                                             1.4.1 jMeter的classpath

    jMeter會自動的從以下工作路徑的jar包中找到一些類:

    如果你想開發新的jMeter元件,那麼你應該將他們打包成jar包並且複製到lib/ext目錄下。jMeter會自動找到該目錄下的原件。不要將公共jar包和與外掛有關的依賴jar包放到該目錄下,它只能用來放jMeter的元件和外掛。

    如果你不想要放置jMeter外掛包到lib/ext目錄下那麼你可以在jmeter.properties中定義search_paths.

    工具和依賴包等等這些檔案可以放在lib目錄下。並且在user.classpath或者jmeter.properties中的plugin_dependency_paths中定義一下。

    其它的jar包(像JDBC,JMS implementation和其他的支援庫)應該放置在lib目錄下而不是lib/ext目錄下,或者增加一個user.classpath.

    注意,jmeter只能找得到.jar檔案,而不是.zip檔案。

    你可以在$JAVA_HOME/jre/lib/ext下安裝utility工具,或者你可以在jmeter.properties中設定user.classpath。

    注意,設定的classpath環境變數可能會沒有用,因為jMeter是由java-jar啟動的,java命令預設是忽略classpath變數的,這個時候你需要在-jar後面加上 -classpath或者-cp。這個是所有的java程式都會發生的,而不僅僅是JMeter。

    1.4.2 從模板中建立測試計劃

    你可以從已有的模板去建立一個新的測試計劃。

    …………

    1.4.3 開啟了代理後,如何使用jMeter

    如果你正在測試具有防火牆或者代理伺服器的專案,你可能需要提供防火牆/代理的主機名埠號給jMeter。具體的做法是執行jmeter.bat用命令列來設定一些引數,如下

    注意,你的設定可能對系統中的其他人可見。

 

    proxy host 和 port提供後,jmeter將會把值設定在下面的系統屬性中:

     如果一個非代理主機被提供的話,那麼jMeter將值設定到以下系統屬性中:

    如果你不希望同時設定http和https代理的話,你可以再system.properties中定義相關屬性,而不是使用命令列模式。

    代理是指可以定義在一個測試計劃中,使用http request default配置,或者http request例項元素中。

    注意:JMeter也有它自己的內建的代理伺服器(HTTP(S) Test Script Recorder)。這個只用在HTTP或者HTTPS瀏覽器對話中。

    1.4.4 命令列模式

    

    1.4.5 伺服器模式

    對於分散式的測試,伺服器模式下,可以遠端節點上執行jMeter,並從GUI圖形介面控制jMeter。你也可以使用非GUI模式去執行遠端測試。在每一個伺服器主機上執行jmeter-sever.bat,就可以開啟伺服器端。

    執行指令碼時也可以自行定義防火牆/伺服器代理埠的資訊,如下:

    如果你想在某個的測試結束後就退出伺服器,那麼你可以定義jMeter的屬性server.exitaftertest = true.

    在非GUI模式下從客戶端執行測試,使用如下命令:

    如果屬性 jmeterengine.remote.system.exit被設定為true(預設是false),那麼jMeter將會在測試執行到最後停止RMI時執行System.exit(0)。

    1.4.6 通過命令列重寫屬性

    java系統屬性和jMeter屬性可以通過命令列直接重寫(不是通過修改jmeter.properties). 參考如下可選項:

    命令列屬性會在啟動之前,列印系統開始之後生效。 

    1.4.7 列印日誌和報錯資訊

    3.2版本後,jMeter的列印並不是通過屬性(例如:jmeter.properties)配置。它並是通過Apache Log4j 2配置檔案來設定的(log4j2.xml) jMeter和一些外掛都必須使用SLF4J庫。

    一個log4j2.xml的例子,見原文……

    1.4.8 命令列的可選項

    見原文……

    1.4.9 關閉非GUI模式

    2.5.1版本之前,jMeter使用System.exit()來退出命令列模式的測試。但是這個會導致一些問題,jMeter正常完成測試時,就不再觸發System.exit()。並且一些嚴重錯誤也會觸發System.exit()。