jmeter java sampler測試java介面(二)測試自己的程式碼
前面一節是解析javatest程式碼,這一節進行簡單的方法測試
- 測試程式碼 : 傳入一個Str值,放到集合裡面遍歷集合在日誌中打印出來。
說明:
1 執行時間:在 results.sampleStart()和 results.sampleEnd();之間的時間為聚合報告裡面測試用例的執行時間,results.sampleStart()之前的操作不記錄到測試用例裡面的時間,所以與測試介面無關的一些操作都應該放到results.sampleStart()之前或者 results.sampleEnd()之後OR放到setupTest()和teardownTest()裡面
2 方法介紹:
context.getParameter():從Arguments獲取值
getDefaultParameters() :從jmeter的圖形視窗獲取使用者設定的值供context使用
3 SampleResult返回測試結果:體現在返回code,message,請求報文和相應報文。對應在檢視結果數裡面的一些資料
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
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.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
public class TestOne extends AbstractJavaSamplerClient implements Serializable {
private static final Logger LOG = LoggingManager.getLoggerForClass();
private static final long serialVersionUID = 240L;
//定義常量getDefaultParameters()使用
private static final String Str1 = "Str1_Value";
//自定義的引數
private String str1;
/**
* Default constructor for <code>JavaTest</code>.
*
* The Java Sampler uses the default constructor to instantiate an instance
* of the client class.
*/
public TestOne() {
LOG.debug(whoAmI() + "\tConstruct");
}
@Override
public void setupTest(JavaSamplerContext context) {
if (LOG.isDebugEnabled()) {
LOG.debug(whoAmI() + "\tsetupTest()");
}
}
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
//通過jmter的圖形框進行傳參,無預設值
params.addArgument(Str1,"");
return params;
}
@Override
public SampleResult runTest(JavaSamplerContext context) {
//通過傳參給變數賦值
str1 = context.getParameter(Str1);
LOG.info(str1+"");
SampleResult results = new SampleResult();
//返回請求值,體現在jmeter檢視結果數請求裡面
results.setSamplerData("請求引數"+str1);
// Record sample start time.
results.sampleStart();
try {
// Execute the sample. In this case sleep for the
// specified time, if any
//測試程式碼
List<String> arrList=new ArrayList<String>();
arrList.add(str1);
arrList.add("c");
arrList.add("d");
Iterator<String> iter=arrList.iterator();
while(iter.hasNext())
{
// System.out.print(iter.next()+" ");
LOG.info(iter.next()+"");
}
results.setSuccessful(true);//這裡決定測試用例成功還是失敗
//返回結果
results.setResponseData("響應結果", null);
} catch (Exception e) {
LOG.warn("JavaTest: interrupted.");
results.setSuccessful(true);
} finally {
// Record end time and populate the results.
results.sampleEnd();
//設定返回資訊
results.setResponseCode("200");
results.setResponseMessage("成功測試");
results.setSampleLabel("樣式1");
}
if (LOG.isDebugEnabled()) {
LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime());
}
return results;
}
private String whoAmI() {
StringBuilder sb = new StringBuilder();
sb.append(Thread.currentThread().toString());
sb.append("@");
sb.append(Integer.toHexString(hashCode()));
return sb.toString();
}
}
- 匯出jar包到/lib/ext下面
- 結果展示,
一:日誌,程式碼中的log.info
二:檢視結果樹
results.setResponseCode(“200”);
results.setResponseMessage(“成功測試”);
results.setSampleLabel(“樣式1”);
三:請求
results.setSamplerData(“請求引數”+str1);
四:響應
results.setResponseData(“響應結果”, null);
至此javasampler進行java方法測試已經弄完了。如果要測試java介面只需要在runTest()裡面呼叫介面就可以了。前面雖然有使用beanshell進行java方法測試的介紹,不過建議測試java介面還是採用這種方法。beanshell作為輔導。
jmeter有了java sampler就可以為所欲為了,幾乎可以測試任何請求。前面測試ftp請求也可以用java sampler,包括測試資料庫操作等等
相關推薦
jmeter java sampler測試java介面(二)測試自己的程式碼
前面一節是解析javatest程式碼,這一節進行簡單的方法測試 測試程式碼 : 傳入一個Str值,放到集合裡面遍歷集合在日誌中打印出來。 說明: 1 執行時間:在 results.sampleStart()和 results.sampleEnd();
Java抽象類和介面(二)
***************************介面********************************* 一.why 需求一直不變的時候可以不使用介面, 需求經常發生改變推薦使用介面... 軟體產品中需求會經常改變,所以一般都要使用介面... 體現了可維護、可擴充套件的優點 二.
Android自動化測試框架Espresso(二)——測試Toast彈出內容
Android中的Toast是我們經常會使用的,能夠方便的在介面上彈出一個提示語句,還可以控制顯示的時長,十分方便。使用Espresso測試Toast的彈出內容不是很好操作,主要由於Toast的佈局並不是屬於我們當前應用的,而是通過另一個Sevice控制的,這個原理可以看看
jmeter使用BeanShell Sampler測試自己寫的java介面(二)
上一篇藉助java程式測試SFTP還沒有完成這節繼續 使用BeamShell sampler的步驟和前面一節一樣,java程式碼如下,這裡只測試下載。有些多餘的程式碼沒有清理掉。懶人不想清理先留著了。 package test; import java
java開發微信公眾號(二)--測試號申請、微信與java程式碼初步互動
一、申請測試號 個人不能夠免費申請服務號,訂閱號有很多限制,介面許可權出來基本的幾乎沒有,如圖, 在微信公眾平臺,檢視介面許可權 那麼怎麼使用服務號的介面許可權呢?微信推出了測試號,交給大家使用,開通的步驟是: 1.在微信平臺頁面,在服務號中,點選開發者文件 2
Java——Set集合(介面)(二)___TreeSet用法
Set(介面)集合: TreeSet類(底層是二叉樹),能保證有序,用來對元素進行排序,能保證元素的唯一 使用方式: 1.自然順序:TreeSet類的add()方法中會把存入的物件提升為Comparable型別
Java Web 學習與總結(二)Servlet核心介面+Servlet3.0配置
Servlet3.0版本對Servlet配置進行了重大變革,Servlet類不需要再麻煩的去編輯web.xml檔案了,只需要在類上面進行註釋就可以了,獲得了 Java 社群的一片讚譽之聲,以下是新增的註解支援。 @WebServlet @WebServlet 用於將一個類宣告為 Servlet,該註解
java集合學習之List(二)隨機訪問RandomAccess介面和ArrayList和LinkedList遍歷效能問題
ArrayList這個類是實現了RandomAccess介面的,RandomAccess介面和Serializable介面一樣都是沒有方法或者欄位的,像是一個標誌,RandomAccess介面文件說明的是:Marker interface used by <tt>
java學習筆記之webservice(二)--WSDL文件及用myeclipse測試webservice
>>接上篇 一、WSDL 定義:web services description language,用來描述web服務的xml格式的資訊。 標籤的解釋 1. <types>:定義了服務的namespace和關鍵資訊的型別(方法的引數型別和返回值的
SVN+Jmeter+Jenkins構建介面自動化測試框架方案(二)
上一個沒寫完,本次繼續:解決問題的方法有3種;①暫時的:使用有許可權的使用者登入Jenkins,在“系統管理→指令碼命令列”中執行如下內容:(Jenkins重啟後需要重新執行該條命令)------System.setProperty("hudson.model.Directo
JAVA學習第十九課(java程序的異常處理 (二))
num 函數 錯誤 style col 編譯失敗 return [] java 異常處理的捕捉形式: 這是能夠對異常進行針對性處理的方式 六、try、catch的理解 詳細格式: try { //須要被檢測異常的代碼 } catch(異常類 變量)//改變量用
java.util包詳解(二)——Connection接口
操作 相同 元素 叠代 cat roo soft true nbsp Connection接口介紹 Connection接口是java集合的root接口,沒有實現類,只有子接口和實現子接口的各種容器。主要用來表示java集合這一大的抽象概念。 Connection接
java-類生命周期(二)
.net ava 初始化 啟動 pri pos 入口 原理 tails 上文介紹了java-類生命周期(一),理論性比較強。認為太復雜的同學,瞟一下本文的樣例加深理解。 先給道題目,看看答對沒。 /** * 類載入試驗基類 * * @author peter
Java多線程基礎(二)
常用 進程上下文 技術 進入 返回 ren 說明 多線程基礎 常用api 基本概念 進程:程序的執行過程。持有資源(共享內存、共享文件)和線程。 線程: - 是一個程序內部的順序控制流。 - 它包含在進程之中,是系統中最小執行單元,同一個進程可以有多個線程。 - 線程共享進
java nio之 channel通道(二)
java niojava nio 通道上一篇文章裏就講述過,channel總是寫數據的時候,要先把數據寫入到bytebuffer,讀數據的時候總是要先從channel中讀入到bytebuffer。如下圖,這個圖是好多知名博客常用的圖,很好理解這個channel。channel分為一下幾種:FileChanne
Java 並發編程(二)對象的不變性和安全的公布對象
不一致 字段 更新 要求 nts ava 然而 caching mut 一、不變性 滿足同步需求的還有一種方法是使用不可變對象(Immutable Object)。到眼下為止,我們介紹了很多與原子性和可見性相關的問題,比如得到失效數據。丟失更新操作
[轉載] java多線程總結(二)
判斷 home run 選擇 作者 得到 生命周期 on() .com 轉載自:http://www.cnblogs.com/lwbqqyumidi/p/3817517.html 作者:Windstep 四.Java多線程的阻塞狀態與線程控制 上文已經提到Java阻塞的
【Java入門提高篇】Day5 Java中的回調(二)
彈出對話框 java入門 也會 color 編程 args performed show clas Java中有很多個Timer,常用的有兩個Timer類,一個java.util包下的Timer,一個是javax.swing包下的Timer,兩個Timer類都有用到回調
java常用接口範例(二)
應用場景 數據源 XML ora 返回 分享 dao 分享圖片 連接 java接口 下發接口 服務接口-對賬中心調用計算中心的服務,來獲取數據 服務接口-對賬中心調用主數據中心數據庫,直接查詢數據 java工具庫使用 1. 連接數據源:@DataSourc
基於Java語言構建區塊鏈(二)—— 工作量證明
分布式 java引言 在 上一篇 文章中,我們實現了區塊鏈最基本的數據結構模型,添加區塊以及和前一個區塊連接在一起。但是,我們的實現方式非常簡單,而真實的比特幣區塊鏈中,每一個區塊的添加都是需要經過大量的計算才可以完成,這個過程就是我們熟知的挖礦。 工作量證明機制區塊鏈最關鍵的一個思想就是,必須進行大量且困難