1. 程式人生 > >JMeter學習(十七)JMeter測試Java 目的:對Java程式進行測試

JMeter學習(十七)JMeter測試Java 目的:對Java程式進行測試

目的:對Java程式進行測試

 

目錄

一、核心步驟

二、例項

三、JMeter Java Sampler介紹

四、自帶Java Request Sampler

 


一、核心步驟

1.建立一個Java工程;

2.將JMeter的lib目錄下的jar檔案新增進此工程的Build Path;

3.建立一個類並實現JavaSamplerClient介面或繼承AbstractJavaSamplerClient,並重寫;

public Arguments getDefaultParameters();設定可用引數及的預設值;
public void setupTest(JavaSamplerContext arg0):每個執行緒測試前執行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0):開始測試,從arg0引數可以獲得引數值;
public void teardownTest(JavaSamplerContext arg0):測試結束時呼叫;

4.Export為Runnable Jar File;

5.將此jar包放入JMETER_HOME\lib\ext目錄;

6.以管理員身份開啟JMeter;

7.建立執行緒組、Java Request、檢視結果樹,進行測試;

 

二、例項

1.在eclipse裡面新建一個工程:JavaForJMeter

2.把{Jmeter_home}\lib目錄下的所有jar新增進此工程的Build Path;

3.新增類Hello,程式碼如下:

複製程式碼

複製程式碼

package com.test.webservice;

public class Hello {
    public String sayHello()
    {
        return "Hello";
    }
    public String sayHelloToPerson(String s)
    {
        if(s == null || s.equals(""))
            s = "nobody";
        return (new StringBuilder()).append("Hello ").append(s).toString();
    }
    public int sum(int a,int b)
    {
        return a+b;
    }
}

複製程式碼

複製程式碼

4.新增類perftest,並繼承AbstractJavaSamplerClient,並新增程式碼如下:

注意:System.out等的輸出會顯示在啟動JMeter時的命令視窗內,但過多的輸出會影響效能的準確性。

複製程式碼

複製程式碼

package com.test.webservice;

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.test.webservice.Hello;

public class perftest extends AbstractJavaSamplerClient {
    private String a;
    private String b;
    /** Holds the result data (shown as Response Data in the Tree display). */
    private String resultData;

    // 這個方法是用來自定義java方法入參的。
    // params.addArgument("num1","");表示入參名字叫num1,預設值為空。
    //設定可用引數及的預設值;
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("num1", "");
        params.addArgument("num2", "");
        return params;
    }

    //每個執行緒測試前執行一次,做一些初始化工作;
    public void setupTest(JavaSamplerContext arg0) {
    }

    //開始測試,從arg0引數可以獲得引數值;
    public SampleResult runTest(JavaSamplerContext arg0) {
        a = arg0.getParameter("num1");
        b = arg0.getParameter("num2");
        SampleResult sr = new SampleResult();
     sr.setSampleLabel( "Java請求哦");
        try {
            sr.sampleStart();// jmeter 開始統計響應時間標記
            Hello test = new Hello();
            // 通過下面的操作就可以將被測方法的響應輸出到Jmeter的察看結果樹中的響應資料裡面了。
            resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer
                    .parseInt(b)));
            if (resultData != null && resultData.length() > 0) {
                sr.setResponseData("結果是:"+resultData, null);
                sr.setDataType(SampleResult.TEXT);
            }
            // System.out.println(resultData);
            sr.setSuccessful(true);
        } catch (Throwable e) {
            sr.setSuccessful(false);
            e.printStackTrace();
        } finally {
            sr.sampleEnd();// jmeter 結束統計響應時間標記
        }
        return sr;
    }

    //測試結束時呼叫;
    public void teardownTest(JavaSamplerContext arg0) {
        // System.out.println(end);
        // System.out.println("The cost is"+(end-start)/1000);
    }
    
    // main只是為了除錯用,最後打jar包的時候註釋掉。
    /*
      public static void main(String[] args) 
      { // TODO Auto-generated method stub
          Arguments params = new Arguments(); 
          params.addArgument("num1", "1");//設定引數,並賦予預設值1 
          params.addArgument("num2", "2");//設定引數,並賦予預設值2
          JavaSamplerContext arg0 = new JavaSamplerContext(params); 
          perftestbbb test = new perftestbbb(); 
          test.setupTest(arg0); 
          test.runTest(arg0);
          test.teardownTest(arg0); 
      }
     */
}

複製程式碼

複製程式碼

 

5.Export為Runnable Jar File:hello.jar

6.將此hello.jar包放入JMETER_HOME\lib\ext目錄;

7.開啟JMeter,新增執行緒組,新增Java請求,檢視結果樹。

 

三、JMeter Java Sampler介紹

Arguments

getDefaultParameters() 用於獲取介面的引數

SampleResult

runTest(JavaSamplerContext context) 類似於LR的Action,result.sampleStart()一個事務開始,result.sampleEnd()一個事務 結束

void

setupTest(JavaSamplerContext context) 初始化方法,類似於LR的init和Junit中的setUp()

void

teardownTest(JavaSamplerContext context) 類似於LR的end和Junit中的tearDown()

執行的先後順序為:

getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)

 

常用的方法:

①、addArgument("name", "value")    定義引數

②、sampleStart()    定義事務的開始,類似於LR的lr_start_transaction,和LR一樣事務間不要放無關程式碼

③、sampleEnd()    定義事務的結束,類似於LR的lr_end_transaction

④、setSuccessful(true、false)    設定執行結果的成功或失敗,Jmeter統計成功失敗的次數,在聚合報告中能夠體現。

 

 

四、自帶Java Request Sampler

JMeter預設實現了兩個Java Request Sampler:SleepTest Sampler和JavaTest Sampler。

JavaTest Sampler不向伺服器傳送資料請求,一般被用作除錯目的使用。

 

 

至此,這已講解完了。