Jmeter擴(kuò)展組件開發(fā)-自定義java請求

使用JMeter做性能測試時(shí),有時(shí)Jmeter本身的功能并不能很好的滿足實(shí)際的需求,這時(shí)可能就需要自己來擴(kuò)展開發(fā)了,Jmeter是支持我們自定義編寫測試腳本的,本文簡單記錄下使用Jmeter擴(kuò)展組件開發(fā)-自定義java請求的流程。
項(xiàng)目工程github:https://github.com/testerwan/JmeterExtended

1、使用IDEA創(chuàng)建一個(gè)Maven工程,pom.xml中添加依賴的jar包(ApacheJMeter_core、ApacheJMeter_java)

       <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>3.2</version>
        </dependency>

2、idea中創(chuàng)建一個(gè)Class com.wan.Second 該類實(shí)現(xiàn)了JavaSamplerClient接口 實(shí)現(xiàn)接口的方法

package com.wan;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

/**
 * Created by wan on 19/5/21.
 */
public class Second implements JavaSamplerClient{

    //URLNAME 就是在圖形化界面當(dāng)中顯示的變量名稱
    private static final String URLNAME = "URL";
    //設(shè)置界面當(dāng)中默認(rèn)顯示的變量的值
    private static final String DEFAULTURL = "http://www.baidu.com";
    /**
     * 這個(gè)方法決定了在jmeter當(dāng)中要顯示哪些屬性
     * @return arguments
     */

    //用來存儲響應(yīng)的數(shù)據(jù),目的是將響應(yīng)結(jié)果放到察看結(jié)果樹當(dāng)中
    private String resultData;
    public Arguments getDefaultParameters() {
        System.out.println("getDefaultParameters run");
        Arguments arguments = new Arguments();
        arguments.addArgument(URLNAME,DEFAULTURL);
        return arguments;
    }

    private String inputUrl;
    /**
     * 這個(gè)方法就是一個(gè)初始化方法,我們所有的初始化的動作都可以在這里寫
     * @param javaSamplerContext
     */
    public void setupTest(JavaSamplerContext javaSamplerContext) {
        inputUrl = javaSamplerContext.getParameter(URLNAME,DEFAULTURL);
        System.out.println("setupTest run");
        System.out.println("用戶輸入的url地址是:"+inputUrl);
    }

    /**
     * 這個(gè)方法就是實(shí)現(xiàn)你具體功能邏輯的方法
     * @param javaSamplerContext
     * @return
     */
    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        SampleResult result = new SampleResult();
        System.out.println("runTest run");
        StringBuffer sb = new StringBuffer();

        try {
            URL url = new URL(inputUrl);
            URLConnection conn = url.openConnection();
            byte[] buffer = new byte[1024];
            int len;
            result.sampleStart();//標(biāo)記事務(wù)的開始
            InputStream in = conn.getInputStream();
            while ((len=in.read(buffer))!=-1){
                resultData = new String(buffer,"UTF-8");
                sb.append(resultData);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


//        resultData = "這就是響應(yīng)結(jié)果";
        resultData = sb.toString();
        result.setSampleLabel("自定義java請求訪問");
        result.setSuccessful(true);//告訴查看結(jié)果樹訪問是否成功
        result.setResponseData(resultData,null);
        result.setDataType(SampleResult.TEXT);
        return result;
    }

    /**
     * 這個(gè)方法就是來做一些收尾的工作的。
     * @param javaSamplerContext
     */
    public void teardownTest(JavaSamplerContext javaSamplerContext) {
        System.out.println("teardownTest run");
    }
}

3、對工程進(jìn)行打包:mvn clean package


image.png

4、把打包后的jar包 拷貝到j(luò)meter安裝目錄下的bin/lib/ext文件夾下


image.png

5、啟動Jmeter,創(chuàng)建一個(gè)線程組,添加一個(gè)java請求 選擇類名為com.wan.Second 執(zhí)行線程組后 查看結(jié)果樹中 能看到請求相應(yīng)能正??吹?,說明自定java請求腳本執(zhí)行成功


image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容