1. 程式人生 > >[搬運工系列]-JMeter(二十一)壓力測試-測試Java請求

[搬運工系列]-JMeter(二十一)壓力測試-測試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不向伺服器傳送資料請求,一般被用作除錯目的使用。