JMeter學習(十七)JMeter測試Java 目的:對Java程式進行測試
目的:對Java程式進行測試
目錄
一、核心步驟
二、例項
三、JMeter Java Sampler介紹
四、自帶Java Request Sampler
一、核心步驟
1.建立一個Java工程;
2.將JMeter的lib目錄下的jar檔案新增進此工程的Build Path;
3.建立一個類並實現JavaSamplerClient介面或繼承AbstractJavaSamplerClient,並重寫;
public Arguments getDefaultParameters();設定可用引數及的預設值; public void setupTest(JavaSamplerContext arg0):每個執行緒測試前執行一次,做一些初始化工作; public SampleResult runTest(JavaSamplerContext arg0):開始測試,從arg0引數可以獲得引數值; public void teardownTest(JavaSamplerContext arg0):測試結束時呼叫;
4.Export為Runnable Jar File;
5.將此jar包放入JMETER_HOME\lib\ext目錄;
6.以管理員身份開啟JMeter;
7.建立執行緒組、Java Request、檢視結果樹,進行測試;
二、例項
1.在eclipse裡面新建一個工程:JavaForJMeter
2.把{Jmeter_home}\lib目錄下的所有jar新增進此工程的Build Path;
3.新增類Hello,程式碼如下:
package com.test.webservice; public class Hello { public String sayHello() { return "Hello"; } public String sayHelloToPerson(String s) { if(s == null || s.equals("")) s = "nobody"; return (new StringBuilder()).append("Hello ").append(s).toString(); } public int sum(int a,int b) { return a+b; } }
4.新增類perftest,並繼承AbstractJavaSamplerClient,並新增程式碼如下:
注意:System.out等的輸出會顯示在啟動JMeter時的命令視窗內,但過多的輸出會影響效能的準確性。
package com.test.webservice; 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.test.webservice.Hello; public class perftest extends AbstractJavaSamplerClient { private String a; private String b; /** Holds the result data (shown as Response Data in the Tree display). */ private String resultData; // 這個方法是用來自定義java方法入參的。 // params.addArgument("num1","");表示入參名字叫num1,預設值為空。 //設定可用引數及的預設值; public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("num1", ""); params.addArgument("num2", ""); return params; } //每個執行緒測試前執行一次,做一些初始化工作; public void setupTest(JavaSamplerContext arg0) { } //開始測試,從arg0引數可以獲得引數值; public SampleResult runTest(JavaSamplerContext arg0) { a = arg0.getParameter("num1"); b = arg0.getParameter("num2"); SampleResult sr = new SampleResult(); sr.setSampleLabel( "Java請求哦"); try { sr.sampleStart();// jmeter 開始統計響應時間標記 Hello test = new Hello(); // 通過下面的操作就可以將被測方法的響應輸出到Jmeter的察看結果樹中的響應資料裡面了。 resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer .parseInt(b))); if (resultData != null && resultData.length() > 0) { sr.setResponseData("結果是:"+resultData, null); sr.setDataType(SampleResult.TEXT); } // System.out.println(resultData); sr.setSuccessful(true); } catch (Throwable e) { sr.setSuccessful(false); e.printStackTrace(); } finally { sr.sampleEnd();// jmeter 結束統計響應時間標記 } return sr; } //測試結束時呼叫; public void teardownTest(JavaSamplerContext arg0) { // System.out.println(end); // System.out.println("The cost is"+(end-start)/1000); } // main只是為了除錯用,最後打jar包的時候註釋掉。 /* public static void main(String[] args) { // TODO Auto-generated method stub Arguments params = new Arguments(); params.addArgument("num1", "1");//設定引數,並賦予預設值1 params.addArgument("num2", "2");//設定引數,並賦予預設值2 JavaSamplerContext arg0 = new JavaSamplerContext(params); perftestbbb test = new perftestbbb(); test.setupTest(arg0); test.runTest(arg0); test.teardownTest(arg0); } */ }
5.Export為Runnable Jar File:hello.jar
6.將此hello.jar包放入JMETER_HOME\lib\ext目錄;
7.開啟JMeter,新增執行緒組,新增Java請求,檢視結果樹。
三、JMeter Java Sampler介紹
Arguments |
getDefaultParameters() 用於獲取介面的引數 |
SampleResult |
runTest(JavaSamplerContext context) 類似於LR的Action,result.sampleStart()一個事務開始,result.sampleEnd()一個事務 結束 |
void |
setupTest(JavaSamplerContext context) 初始化方法,類似於LR的init和Junit中的setUp() |
void |
teardownTest(JavaSamplerContext context) 類似於LR的end和Junit中的tearDown() |
執行的先後順序為:
getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
常用的方法:
①、addArgument("name", "value") 定義引數
②、sampleStart() 定義事務的開始,類似於LR的lr_start_transaction,和LR一樣事務間不要放無關程式碼
③、sampleEnd() 定義事務的結束,類似於LR的lr_end_transaction
④、setSuccessful(true、false) 設定執行結果的成功或失敗,Jmeter統計成功失敗的次數,在聚合報告中能夠體現。
四、自帶Java Request Sampler
JMeter預設實現了兩個Java Request Sampler:SleepTest Sampler和JavaTest Sampler。
JavaTest Sampler不向伺服器傳送資料請求,一般被用作除錯目的使用。
至此,這已講解完了。