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
jmeter之java請求二次開發
說明與步驟 原則上jmeter的java請求,可以壓測一切可使用java訪問的東西,包括Redis,MQ等等。 需要lib/ext中的ApacheJMeter_core.jar,如擴充套件java請求則還需要ApacheJMeter_java.jar,擴充套
jmeter 的java請求代碼在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
Jmeter中java接口測試
轉換 blog 類型 方法 技術分享 idt 9.png 創建 .com 1、java中存在一個接口和實現接口方法的類,導出為一個jar包 -接口 -實現接口方法 2、在Jmeter中測試計劃中導入jar包 3、創建Banshell取樣器 beanshell