JMeter學習(十七)JMeter測試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不向服務器發送數據請求,一般被用作調試目的使用。

 
 

至此,這已講解完了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM