JMeter效能測試入門

來源:互聯網
上載者:User

JMeter是一款效能測試工具。個人認為與其說他是一個工具,不如說他是一個架構。因為JMeter的支援範圍非常廣,目前常見的需要進行效能測試的應用幾乎都能應用(如:files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers)。JMeter的一大好處就是它內部已經有實現好的線程機制,使用者不用寫任何關於並發的東西,只需做簡單配置即可。同時他頁提供了一些類似外掛程式的東西,用於線程運行時的控制;其次,JMeter對測試結果能都產生相應的統計報表,簡單、直觀,對一般效能測試應該足夠。

  1. QuickStart
    下載下來的JMeter有以下幾個目錄 bin  docs  extras  lib  printable_docs。bin 自不用說了,運行下面的jmeter.bat就可以看見JMeter的GUI用戶端了,可以對測試進行所有的配置。docs下面的是JMeter的所有使用者手冊,還算詳細,一般需要的都能查到。可惜沒有中文的,英文需要多花點時間。extras下為JMeter對Ant的一些支援。太具體的不是很清楚,不過生產報表這部分必不可少。運行測試時,可以把測試的所有資料記錄下來,JMeter自動產生一個.jtl的檔案。把此檔案放到extras下,運行 ant -Dtest=檔案名稱 report,即可產生測試統計報表。lib目錄下還有兩個目錄,一個是ext,此目錄存放使用者對JMeter進行擴充的測試應用,一個是junit目錄,此目錄沒用到,不是很清楚。安裝文檔中的說法,ext目錄存放對JMeter的擴充,使用者的擴充所依賴的包則要直接放在lib下(不是lib/ext 下)。
  2. 主要外掛程式
    線程組為JMeter的主要外掛程式,其內部實現好了多現在,使用者只要添加、配置即可。

    以下為線程組的配置介面:
     
    如同所示,可以配置線程數,前一個線程與後一個線程啟動間隔,以及線程的迴圈次數。

    配置元件
    為所有JMeter可以使用的應用,JMeter提供了一些基礎配置。
                      

     

    監聽器為測試過程中收集資料的。而且可以根據資料產生相應的報表(文字、圖形等)
     

    邏輯控制器用於對線程的運行邏輯進行控制.
     

  3. Sample

    這裡我用到主要JMeter的線程和報表,擴充了他的“Java請求”這個應用類別。要擴充此應用,要用到lib/ext/ApacheJMeter_java.jar,他封裝此應用。

    首先,需要繼承ApacheJMeter_java.jar中的抽象類別AbstractJavaSamplerClient,它提供了四個抽象方法: void setupTest(JavaSamplerContext arg0),SampleResult runTest(JavaSamplerContext arg0), void teardownTest(JavaSamplerContext arg0), Arguments getDefaultParameters()。setupTest和teardownTest與JUnit中的類似,分別在測試的開始和結束時執行。 runTest為主要測試方法,所有測試程式都在這裡完成,JavaSamplerContext參數封裝測試中需要的所有外界資料(如配置資訊等)。其 SampleResult封裝了所有測試結果(如:測試是否成功?程式執行時間等),getDefaultParameters用於把測試的一些預設資料在程式運行前顯示到JMeter用戶端,這個可以和runTest配合使用,實現資料的呈現和配置。

    下面為程式:

    import org.apache.jmeter.config.Arguments;
    import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
    import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
    import org.apache.jmeter.samplers.SampleResult;

    import com.ebupt.wv.client.WVClient;

    public class Login2 extends AbstractJavaSamplerClient {

    private static String label = "userLogin"
    private String name;
    private String address;

    public void setupTest(JavaSamplerContext arg0) {
         System.out.println("setupTest");
    }

    public SampleResult runTest(JavaSamplerContext arg0) {
         name = arg0.getParameter("name");
         address = arg0.getParameter("address");
         SampleResult sr;
         sr = new SampleResult();
         sr.setSampleLabel(label);
         try{
               sr.sampleStart();  //記錄程式執行時間,以及執行結果
               sr.setSuccessful(true);
               System.out.println("send over!");
         }catch(Throwable e){
              sr.setSuccessful(false);
         }finally{
              sr.sampleEnd();
         }
         return sr;
    }

    public void teardownTest(JavaSamplerContext arg0) {
    }

    public Arguments getDefaultParameters() {
         Arguments params = new Arguments();
         params.addArgument("name", "JMeter");
         params.addArgument("address", "localhost");
         return params;
    }

    }

    其次,把寫好的應用打包,放到lib/ext下,JMeter運行時即可找到。同時還要把使用者自己編寫的應用所依賴的包放在lib下。運行JMeter。介面開啟後,右鍵“測試計劃”,添加線程組;右鍵“線程組”-添加-Sampler-Java請求,在類名稱處選擇剛才寫好的類。

    這裡,可以同時添加多個線程組、多個java請求、同時可以添加監聽器用於輸出不同的的測試結果圖形、報表,各個請求之間可以用邏輯控制器進行執行流程的控制。
     

    最後,點擊運行-啟動,儲存相應的項目,即可開始運行。運行時的資料,可以通過監聽器寫入檔案以便需要時產生報表。

  4. ant使用
    在運行JMeter項目前,會讓使用者儲存項目,儲存為.jmx檔案,把此檔案放到extras目錄下,即可使用ant實現測試的自動化。ant有以下幾個命令:
    ant -Dtest=項目名稱    運行項目並產生報表。
    ant -Dtest=項目名稱 run    只運行項目。
    ant -Dtest=項目名稱 report  只產生報表(這個需要把測試時記錄下來的.jtl檔案放到ant目錄下)

    報表如下:
     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.