1. 程式人生 > >Jmeter測試java請求

Jmeter測試java請求

原始碼下載地址:點此下載

之前壓力測試的是註冊功能的介面,寫了一個jdbc request上來就根據手機號 將資料庫的記錄清除,但是現在的資料庫手機號是加密之後的手機號,直接傳一個明文的手機號是不行的,所以在呼叫之前要對手機號進行加密,查閱資料發現有Bean shell 和java request的兩種方式,先打算使用java request方式進行壓力測試。

先寫一個簡單的小demo,測試兩個數相加

1.建立一個Java工程

2.導包

將JMeter的lib目錄下 包括ext 和 junit 中的jar檔案新增到工程中 尤其是ext中的ApacheJMeter_core.jar,ApacheJMeter_java.jar都是必須的,有的不是
myeclipse建立工程,匯入jar包就不再說了,這裡提供 idea中建立java普通工程,新增jar包,並將程式碼打成jar包
的參考:點此檢視

3.重寫jmeter方法JavaTest.java

建立一個類並實現JavaSamplerClient介面或繼承AbstractJavaSamplerClient,並重寫方法。
package com.test;


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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @author: wangsaichao
 * @date: 2017/12/13
 * @description:
 */
public class JavaTest extends AbstractJavaSamplerClient {


    private static final Logger logger = LoggerFactory.getLogger(JavaTest.class);


    private String num1;
    private String num2;


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


    /**
     * 每個執行緒測試前執行一次,做一些初始化工作
     * 獲取輸入的引數,賦值給變數,引數也可以在下面的runTest方法中獲取,這裡是為了展示該方法的作用
     * @param arg0
     */
    @Override
    public void setupTest(JavaSamplerContext arg0) {
        num1 = arg0.getParameter("num1");
        num2 = arg0.getParameter("num2");
    }


    /**
     * 真正執行邏輯的方法
     * @param arg0
     * @return
     */
    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
        SampleResult sr = new SampleResult();
        sr.setSamplerData("請求引數num1:"+num1+"\n請求引數num2:"+num2);


        logger.info("請求引數num1:{} 請求引數num2:{}",num1,num2);


        try {
            // jmeter 開始統計響應時間標記
            sr.sampleStart();


            int sum = Integer.parseInt(num1)+Integer.parseInt(num2);


            // 通過下面的操作就可以將被測方法的響應輸出到Jmeter的察看結果樹中的響應資料裡面了。
            sr.setResponseData("結果是:"+sum, "utf-8");
            logger.info("結果是:{}",sum);
            sr.setDataType(SampleResult.TEXT);


            //設定響應執行成功
            sr.setSuccessful(true);
        } catch (Throwable e) {
            //有異常,執行失敗
            sr.setSuccessful(false);
            e.printStackTrace();
        } finally {
            // jmeter 結束統計響應時間標記
            sr.sampleEnd();
        }
        return sr;
    }




    /**
     * 測試結束後呼叫
     * @param arg0
     */
    @Override
    public void teardownTest(JavaSamplerContext arg0) {


    }


    /**
     * main方法測試程式是否可用,打包時 註釋掉
     * @param args
     */
//    public static void main(String[] args) {
//        Arguments params = new Arguments();
//        //設定引數,並賦予預設值1
//        params.addArgument("num1", "1");
//        //設定引數,並賦予預設值2
//        params.addArgument("num2", "2");
//        JavaSamplerContext arg0 = new JavaSamplerContext(params);
//        JavaTest test = new JavaTest();
//        test.setupTest(arg0);
//        test.runTest(arg0);
//        test.teardownTest(arg0);
//    }


}
引數介紹:
          public Arguments getDefaultParameters();可選,定義可用引數及預設值;  
          public void setupTest(JavaSamplerContext arg0):可選,測試前執行,做一些初始化工作;  
          public SampleResult runTest(JavaSamplerContext arg0);必選,實現自定義請求;  
          public void teardownTest(JavaSamplerContext arg0):可選,測試結束時呼叫;

4.先使用main方法測試

使用main方法測試,報以下異常

1.Intellij idea 出現錯誤 error:java: 無效的源發行版: 9
解決方法:idea預設給使用了jdk9的編譯
①.點選File ->Project Structure...->Project 將9改成8

②.點選File ->Project Structure...->Modules 將9改成8


2.然後再次執行main報以下異常

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'org.apache.logging.log4j.simplelog.StatusLogger.level' to TRACE to show Log4j2 internal initialization logging.

解決方法:在classpath下新增log4j2.xml,內容如下
<?xml version="1.0" encoding="UTF-8"?>


<configuration status="error">
    <!--先定義所有的appender-->
    <appenders>
        <!--這個輸出控制檯的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制檯只輸出level及以上級別的資訊(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--這個都知道是輸出日誌的格式-->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>
        <!--檔案會打印出所有資訊,這個log每次執行程式會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用-->
        <File name="log" fileName="log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>


        <!--這個會打印出所有的資訊,每次大小超過size,則這size大小的日誌會自動存入按年份-月份建立的資料夾下面並進行壓縮,作為存檔-->
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
        </RollingFile>
    </appenders>
    <!--然後定義logger,只有定義了logger並引入的appender,appender才會生效-->
    <loggers>
        <!--建立一個預設的root的logger-->
        <root level="trace">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
        </root>


    </loggers>
</configuration>

3.再次執行main方法,成功

5.將寫好的程式碼,打成jar包並放到jmeter 的 lib/ext目錄下

記得把所有額外的(自定義協議依賴的,非jmeter的)依賴包放到jmeter環境變數中

6.重啟jmeter測試

建立java Sampler選擇剛定義好的測試類,如下圖:

建立執行緒組:右擊測試計劃 -> 新增 ->Threads(User) -> 執行緒組
建立java request:右擊執行緒組 -> 新增 -> Sampler -> java請求
新增檢視結果數:右擊執行緒組 -> 新增 -> 監聽器 -> 檢視結果數

7.測試,結果如下圖


最後,就可以根據正則表示式,提取值給其他方法使用了。

相關推薦

第二篇--Jmeter測試Java請求

代碼 數量 介紹 第二篇 -1 art .cn eclipse cor   前提:需要準備eclipse作為開發工具,安裝jdk,準備完畢,接下來開工嘍!      1、新建Java工程BMIrisJNIJarTest,新建lib目錄,將Jmeter安裝目錄下lib/ext

Jmeter測試java請求

原始碼下載地址:點此下載之前壓力測試的是註冊功能的介面,寫了一個jdbc request上來就根據手機號 將資料庫的記錄清除,但是現在的資料庫手機號是加密之後的手機號,直接傳一個明文的手機號是不行的,所以在呼叫之前要對手機號進行加密,查閱資料發現有Bean shell 和ja

使用Jmeter測試java請求

1、效能測試過程中,有時候開發想對JAVA程式碼進行效能測試,Jmeter是支援對Java請求進行效能測試,但是需要自己開發、打包好要測試的程式碼,就能在Java請求中對該java方法進行效能測試2、本文舉的例子是Java實現通過傳入兩個引數,將值寫入到檔案中 開發思路1、使用Eclips

[搬運工系列]-JMeter(二十一)壓力測試-測試Java請求

目錄 一、核心步驟 二、例項 三、JMeter Java Sampler介紹 四、自帶Java Request Sampler   一、核心步驟 1.建立一個Java工程; 2.將JMeter的lib目錄下的jar檔案新增進此工程的Build Path; 3.建立一個類並實現Jav

使用JMeter進行效能測試(Java請求)

看了兩篇如何使用JMeter在HTTP請求及資料庫方面做效能測試的文章(如下兩個連結),感受到這款工具的強大及易用。我在這裡延續下,對JMeter裡另外一種常用的測試型別:"Java請求",做個入門級的介紹。 "Java請求"是指JMeter對Java C

【轉】JMeter學習(十八)JMeter測試Java(二)

sets interval permsize int 文件 不同 時間 結果 argument 實例: 服務為:將輸入的兩個參數通過IO存入文件; 1、打開MyEclipse,編寫Java代碼 服務: package test; import java.io.F

jmeter測試HTTP請求

互聯網 log content 上傳 技術分享 nbsp pos 1-1 請求參數 HTTP超文本傳輸協議(HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。(詳情參考看一下百科) HTTP發送

JMeter學習(十八)JMeter測試Java(二)

例項: 服務為:將輸入的兩個引數通過IO存入檔案;   1、開啟MyEclipse,編寫Java程式碼 服務: package test; import java.io.File; import java.io.PrintWriter; public c

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

目的:對Java程式進行測試   目錄 一、核心步驟 二、例項 三、JMeter Java Sampler介紹 四、自帶Java Request Sampler   一、核心步驟 1.建立一個Java工程; 2.將JMeter的lib目錄下

JMeter測試WebSocket請求

Postman不支援WebSokcet請求,JMeter本身也不支援WebSocket請求。但可以安裝plugin實現,下載plugin放到JMeter安裝路徑的lib/ext資料夾下,下載地址: https://bitbucket.org/pjtr/jmeter-webs

jmeterjava請求二次開發

說明與步驟 原則上jmeter的java請求,可以壓測一切可使用java訪問的東西,包括Redis,MQ等等。 需要lib/ext中的ApacheJMeter_core.jar,如擴充套件java請求則還需要ApacheJMeter_java.jar,擴充套

jmeterjava請求代碼在main方法裏面執行

新建 代碼 esp nds close lap .config ring asa 1、新建一個java請求執行加法類 public class TestDemo { public int Tdemo(int a,int b){ int sum =

JMeter擴充套件Java請求實現WebRTC本地音視訊推流壓測指令碼

WebRTC是Web Real-Time Communication縮寫,指網頁即時通訊,是一個支援Web瀏覽器進行實時語音或視訊對話的API,實現了基於網頁的視訊會議,比如聲網的Agora Web SDK就是基於WebRTC實現音視訊通訊的。與HTTP不同,WebRTC應用的主要壓力是碼流,JMeter沒有

效能測試十一:jmeter進階之java請求

  使用Java編寫JDBC指令碼對Mysql進行增刪改查等操作的效能測試 使用Jmeter提供的指令碼框架依賴的jar包(分別在jmeter目錄下的lib和ext目錄下) ApacheJMeter_core.jar ApacheJMeter_java.jar avalon-framewo

性能測試十一:jmeter進階之java請求

.sql string cat cal start ini pro 選擇 export 使用Java編寫JDBC腳本對Mysql進行增刪改查等操作的性能測試 使用Jmeter提供的腳本框架依賴的jar包(分別在jmeter目錄下的lib和ext目錄下) ApacheJM

效能測試十二:jmeter進階之java請求引數化

  如專案中的ip、埠號之類的,都可以在此程式碼中定義   public Arguments getDefaultParameters() { // TODO Auto-generated method stub return null; } 此處註冊兩個引數到jmeter的變

性能測試十二:jmeter進階之java請求參數化

connect apache img success 什麽 個數 rgs java pac 如項目中的ip、端口號之類的,都可以在此代碼中定義 public Arguments getDefaultParameters() { // TODO Auto-gene

效能測試Jmeter壓測ZooKeeper-自定義java請求

   要想通過自定義java請求來壓測ZooKeeper,那麼我們就需要做兩件事情,第一我們需要知道java如何操作ZooKeeper,第二就是怎麼能將我們寫的jar包讓jmeter識別,首先我們先來幹第一件事。 一、java操作ZooKeeper 以下的程式碼是網上百度找到的,經過了一點點修改

Jmeter測試】使用Java請求進行Dubbo介面的測試

使用json檔案來構造測試資料 java程式只對json檔案進行解析 介面呼叫成功後,用json檔案中的期望資料來對介面返回資料進行比對,判斷呼叫是否成功 json檔案的定義 { "Connection": { "URL": "101.219.255.7

Jmeterjava接口測試

轉換 blog 類型 方法 技術分享 idt 9.png 創建 .com 1、java中存在一個接口和實現接口方法的類,導出為一個jar包 -接口 -實現接口方法 2、在Jmeter中測試計劃中導入jar包 3、創建Banshell取樣器 beanshell