apachejmeter_java源碼_自定義編寫jmeter的Java測試代碼

我們在做性能測試時,有時需要自己編寫測試腳本,很多測試工具都支持自定義編寫測試腳本,比如LoadRunner就有很多自定義腳本的協議,比如"C Vuser","JavaVuser"等協議.同樣,Jmeter也支持自定義編寫的測試代碼,不過與LoadRunner不同的是,Jmeter沒有自帶編譯器,需要借助第三方編譯器才能實現.下面舉一個簡單的Java自定義測試代碼例子,使用Java編譯器編寫測試代碼(Java編譯器可以用Eclipse,JBulider等),實現功能為:在測試前輸入任意一個字符串,然后判斷該字符串的長度是否大于5,如果大于則測試結果成功,否則測試結果位失敗,然后在放到Jmeter中模擬10個用戶測試,同時運行這段代碼,具體實現如下:

1.打開Java編譯器,新建一個項目"TestLength",然后新建一個包"app".

2.從Jmeter的安裝目錄lib/ext中拷貝兩個文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的項目中,然后引入這兩個JAR文件.(具體的引入方法參考各個Java編譯器的使用方法)

3.在"app"包中新建一個類,名字叫"TestLength",不過這個類要繼承"AbstractJavaSamplerClient"類,如果項目引入步驟二中的兩個文件,就可以找到"AbstractJavaSamplerClient"類了.

4."TestLength"類在繼承"AbstractJavaSamplerClient"類的同時也會繼承四個方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于設置傳入的參數;"setupTest"方法為初始化方法,用于初始化性能測試時的每個線程."runTest"方法為性能測試時的線程運行體;"teardownTest"方法為測試結束方法,用于結束性能測試中的每個線程.

5.具體實現代碼如下:

package app;

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 com.passpod.core.t8.*;

/**

* @author樂以忘憂

*

* TODO To change the template for this generated type comment?Go?to

* Window - Preferences - Java - Code Style - Code Templates

*/

public class TestLength extends AbstractJavaSamplerClient{

private SampleResult results;

private String testStr;

//初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行,類似于LoadRunner中的init方法

public void setupTest(JavaSamplerContext arg0) {

results = new SampleResult();

testStr = arg0.getParameter("testString", "");

if (testStr != null && testStr.length() > 0) {

results.setSamplerData(testStr);

}

}

//設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中

public Arguments getDefaultParameters() {

Arguments params = new Arguments();

params.addArgument("testStr", "");???//定義一個參數,顯示到Jmeter的參數列表中,第一個參數為參數默認的顯示名稱,第二個參數為默認值

return params;

}

//測試執行的循環體,根據線程數和循環次數的不同可執行多次,類似于LoadRunner中的Action方法

public SampleResult runTest(JavaSamplerContext arg0) {

int len = 0;

results.sampleStart();?????//定義一個事務,表示這是事務的起始點,類似于LoadRunner的lr.start_transaction

len = testStr.length();

results.sampleEnd();?????//定義一個事務,表示這是事務的結束點,類似于LoadRunner的lr.end_transaction

if(len < 5){

System.out.println(testStr);

results.setSuccessful(false);???//用于設置運行結果的成功或失敗,如果是"false"則表示結果失敗,否則則表示成功

}else

results.setSuccessful(true);

return results;

}

//結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束后執行,類似于LoadRunner中的end方法

public void teardownTest(JavaSamplerContext arg0) {

}

}

6.把上面的例子打包,然后把生成的"TestLength.jar"文件拷貝到Jmeter的安裝目錄lib/ext下.

7.運行Jmeter,添加一個線程組,然后在該線程組下面添加一個Java請求(在Sampler中),在Java請求的類名稱中選擇咱們剛創建的類"app.TestLength",在下面參數列表的"testStr"后面輸入要測試的字符串,然后添加一個監聽器(聚合報告),設置一下模擬的用戶數就可以測試了.如果測試不成功,Jmeter會在它自己個輸出框中拋出這個字符串.

通過上面的例子我們可以發現,使用Jmeter自定義Java測試代碼,配合Jmeter自帶的函數,就可以實現出LoadRunner中"Java Vuser"協議的絕大多數功能,而且是沒有用戶數限制和完全免費的(嘿嘿).上面的例子非常簡單,而且沒有任何實際意義,只是一個簡單的Jmeter測試代碼示例,用于拋磚引玉,希望大家一起交流,共同?進步.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541024.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

julia fit 函數_帶有Julia中示例的flipsign()函數

julia fit 函數Julia| flipsign()函數 (Julia | flipsign() function) flipsign() function is a library function in Julia programming language, it accepts two values as parameters and returns a value with the magnitude of first value and sign of the first value…

優化Android應用內存的若干方法

https://my.oschina.net/chaselinfo/blog/198172摘要: 在app開發的各個階段中要考慮RAM的限制問題, 包括在設計階段(正式開發之前). 使用下面的不同的方法可以達到很好的效果. 當您在設計和開發Android應用時用下面的方法可以使內存運用最高效.使用保守的Service 如果你的應用需…

一? ilkkn.n_IL&FS的完整形式是什么?

一? il&kkn.nIL&#xff06;FS&#xff1a;基礎設施租賃和金融服務 (IL& FS: Infrastructure Leasing & Financial Services) IL&FS is an abbreviation of Infrastructure Leasing & Financial Services. It is the largest infrastructure development …

java notify喚醒原理_Java wait和notify虛假喚醒原理

自己在此記錄一下&#xff0c;方便日后復習。虛假喚醒的概念jdk官方文檔解釋&#xff1a;所以說在wait和notify一塊使用時&#xff0c;如果使用if作為條件時&#xff0c;會有虛假喚醒的情況發生&#xff0c;所以必須使用while作為循環條件。下面來舉例實驗&#xff1a;首先&…

C#里面的三種定時計時器:Timer

在.NET中有三種計時器&#xff1a;1、System.Windows.Forms命名空間下的Timer控件&#xff0c;它直接繼承自Componet。Timer控件只有綁定了Tick事件和設置EnabledTrue后才會自動計時&#xff0c;停止計時可以用Stop()方法控制&#xff0c;通過Stop()停止之后&#xff0c;如果想…

wireshark rto_RTO的完整形式是什么?

wireshark rtoRTO&#xff1a;地區運輸辦公室/公路運輸辦公室 (RTO: Regional Transport Office/ Road Transport Office) RTO is an abbreviation of the Regional Transport Office. It is an Indian Government departmental organization that is responsible for upholdin…

java8 json轉xml_2019-08-17java對象與json,xml互轉

依賴的jar包&#xff0c;jackson-all-1.7.6.jar,xstream-1.4.4.jar下載地址:鏈接&#xff1a;https://pan.baidu.com/s/1LflD135qlQiIPGXw5XwDmw提取碼&#xff1a;6v29復制這段內容后打開百度網盤手機App&#xff0c;操作更方便哦package json_xml;import com.thoughtworks.xs…

10.8-全棧Java筆記:序列化/反序列化的步驟和實例

本節我們詳細講解10.3節中提到的序列化和反序列化操作。序列化和反序列化是什么當兩個進程遠程通信時&#xff0c;彼此可以發送各種類型的數據。 無論是何種類型的數據&#xff0c;都會以二進制序列的形式在網絡上傳送。比如&#xff0c;我們可以通過http協議發送字符串信息&am…

有效的網絡推廣超級實用方法

我叫龍雨&#xff0c;先后在百度搜狗工作過3年&#xff0c;后來一直負責一家公司的的網絡營銷!不知道大家有沒有聽過111>3這樣一個概念&#xff0c;簡單來說一下這概念!第一呢就是自己的資源&#xff0c;把自己的資源維護好開發好;第二就是網絡營銷&#xff0c;網絡營銷利用…

什么為java運行時的環境_什么是JRE?Java運行時環境簡介(一)

Java開發工具包(JDK),Java虛擬機(JVM)和Java運行時環境(JRE)共同構成了用于開發和運行Java應用程序的Java平臺組件的強大功能.實際上,運行時環境是一種旨在運行其他軟件的軟件.作為Java的運行時環境,JRE包含Java類庫,Java類加載器和Java虛擬機.在這個系統中:的類加載器是負責正…

c語言atoll函數怎么用_C ++中帶有示例的atoll()函數

c語言atoll函數怎么用C Atoll()函數 (C atoll() function) atoll() function is a library function of cstdlib header. It is used to convert the given string value to the integer value. It accepts a string containing an integer (integral) number and returns its…

看清美國“黑客帝國”的真面目

“維基揭秘”網站近日發布了近9000份據稱屬于美國中央情報局的機密文件&#xff0c;顯示中情局擁有強大的黑客攻擊能力&#xff0c;秘密侵入了手機、電腦、智能電視等眾多智能設備。繼美國國家安全局承包商前雇員斯諾登曝光國安局“棱鏡”等監控計劃之后&#xff0c;此次曝光再…

python 示例_帶有示例的Python File close()方法

python 示例文件close()方法 (File close() Method) close() method is an inbuilt method in Python, it is used to flush and close the IO object (file). If we close a closed file it has no effect. close()方法是Python中的內置方法&#xff0c;用于刷新和關閉IO對象(…

linux上mysql分區磁盤位置_Linux下Oracle軟件、數據文件等所在的磁盤分區空間不足的解決思路...

虛擬機中的ORACLE運行的久了&#xff0c;歸檔、數據文件不斷增長&#xff0c;原來安裝ORACLE的分區空間不足。此時可以重新向虛擬機增加一塊硬盤&#xff0c;將OR虛擬機中的Oracle運行的久了&#xff0c;歸檔、數據文件不斷增長&#xff0c;原來安裝ORACLE的分區空間不足。此時…

FloatingActionMenu 向上彈出菜單

本人在github上找到了一個FloatingActionsMenu,精簡了其效果&#xff08;原效果有上下左右四個方向&#xff09;僅僅保留向上的效果&#xff0c;并做了一定的優化。github上的源代碼&#xff1a;地址 &#xff0c;精簡后的源代碼地址:源代碼地址。 轉載于:https://www.cnblogs.…

java uuid靜態方法_Java UUID的variant()方法和示例

java uuid靜態方法UUID類variant()方法 (UUID Class variant() method) variant() method is available in java.util package. variant()方法在java.util包中可用。 variant() method is used to get the variant number linked with this UUID. variant()方法用于獲取與此UUI…

java程序服務不能啟動不了_JavaService.exe注冊的windows服務無法啟動問題

最近開發了個java程序&#xff0c;打成 jar 包想要在windows后臺運行&#xff0c;于是使用JavaService.exe進行windows服務注冊&#xff0c;服務注冊很成功&#xff0c;但是在啟動時顯示“服務無法啟動”&#xff0c;為此耗費了大量的時間與精力&#xff0c;終于發現問題所在&a…

給孩子一束安全的光 明基WiT MindDuo親子共讀燈首發評測

論一束光的重要性你該聽聽一個高度近視孩子的自述&#xff0c;論童年陪伴的重要性你該聽聽一個留守兒童的自述&#xff0c;改善孩子童年的全球第一盞親子共讀臺燈&#xff0c;貼合孩子與家長的心靈&#xff0c;量身打造每一種情境的光線去感受孩子成長學習過程 一個高度近視眼孩…

Java Scanner next()方法與示例

掃描儀類的next()方法 (Scanner Class next() method) Syntax: 句法&#xff1a; public String next();public String next(Pattern patt);public String next(String patt);next() method is available in java.util package. next()方法在java.util包中可用。 next() metho…

mysql怎樣查表的模式_mysql常用基礎操作語法(四)--對數據的簡單無條件查詢及庫和表查詢【命令行模式】...

1、mysql簡單的查詢&#xff1a;select 字段1&#xff0c;字段2... from tablename;如果字段那里寫一個*&#xff0c;代表查詢所有的字段&#xff0c;等同于指定出所有的字段名&#xff0c;因此如果要查詢所有字段的數據&#xff0c;一般都是用*。2、去重查詢&#xff1a;selec…