1. 程式人生 > >jmeter java sampler測試java介面(二)測試自己的程式碼

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引言 在 上一篇 文章中,我們實現了區塊鏈最基本的數據結構模型,添加區塊以及和前一個區塊連接在一起。但是,我們的實現方式非常簡單,而真實的比特幣區塊鏈中,每一個區塊的添加都是需要經過大量的計算才可以完成,這個過程就是我們熟知的挖礦。 工作量證明機制區塊鏈最關鍵的一個思想就是,必須進行大量且困難