日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JMeter進階—詳解Java請求關(guān)于事務(wù)的操作

這篇文章中有一個問題,在方法public SampleResult runTest(JavaSamplerContext arg0) 中只對一個類的一個api 進行調(diào)用,如果需求是在jmeter中對多個類的多個api進行調(diào)用該如何實現(xiàn)呢?同學(xué)們會說,簡單呀,我們創(chuàng)建多個類然后分別繼承AbstractJavaSamplerClient就可以了呀!這樣做當(dāng)然可以,但是這要創(chuàng)建太多的類啦,Jmeter提供了方法可以實現(xiàn)事務(wù)操作,即 在一個runTest 方法中創(chuàng)建一個事務(wù),然后一個事務(wù)中包括多個請求,話不多說直接上代碼

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、雙峰網(wǎng)絡(luò)推廣、微信小程序、雙峰網(wǎng)絡(luò)營銷、雙峰企業(yè)策劃、雙峰品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供雙峰建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

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;
public class DemoTransaction extends AbstractJavaSamplerClient {
private SampleResult sr;

public static final String PARAM_PARA1 = "para1";
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("para1", "");
return params;
}
public SampleResult runTest(JavaSamplerContext arg0) {
/**創(chuàng)建事務(wù)demo**/
this.sr = new SampleResult();
this.sr.setSampleLabel("demo ");
this.sr.sampleStart();

/**創(chuàng)建事務(wù)demo中的第一個子請求**/
SampleResult result1= new SampleResult();
result1.setSampleLabel("demo1");
result1.sampleStart();

/**寫子請求的具體邏輯,這里用等待時間代替**/
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**寫子請求的具體邏輯,這里用等待時間代替**/

this.sr.addSubResult(result1,false); //重點把子請求的測試結(jié)果放到事務(wù)中
result1.sampleEnd(); //子請求1結(jié)束
/**創(chuàng)建事務(wù)demo中的第二個子請求**/
SampleResult result2= new SampleResult();
result2.setSampleLabel("demo2");
result2.sampleStart();
/**寫子請求的具體邏輯,這里用等待時間代替**/
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**寫子請求的具體邏輯,這里用等待時間代替**/

result2.setSuccessful(true);
this.sr.addSubResult(result2,false); //重點把子請求的測試結(jié)果放到事務(wù)中
result2.sampleEnd(); //子請求2結(jié)束

/**判斷子請求是否都成功執(zhí)行,如果其中一個失敗,則認定事務(wù)執(zhí)行失敗**/

if( result1.isSuccessful() & result2.isSuccessful())
{
this.sr.setSuccessful(true);

}else {
this.sr.setSuccessful(false);

}
/**判斷子請求是否都成功執(zhí)行,如果其中一個失敗,則認定事務(wù)執(zhí)行失敗**/

this.sr.sampleEnd(); //事務(wù)結(jié)束

return this.sr;
}

public void setupTest(JavaSamplerContext context) {
super.setupTest(context);

}

public void teardownTest(JavaSamplerContext context) {
super.teardownTest(context);
}
}

使用JMeter 5.x API

這里需要強調(diào)的是方法 addSubResult(result2,false) 這個方法是在jmeter 5.x 才提供的(4.x中是addSubResult(result2)), 第一個參數(shù)是傳入的result值,第二個參數(shù)是是否把子線程改名字,jmeter 5.x的maven配置如下,


org.apache.jmeter
ApacheJMeter_core
5.5


org.apache.jmeter
ApacheJMeter_java
5.5

使用這個方法才能實現(xiàn)——在聚合報告中顯示事務(wù)中子請求的響應(yīng)時間和處理能力

把java文件打包放到\lib\ext 目錄下,然后添加java sampler ,選擇類DemoTransaction,運行測試,結(jié)果如下:

在查看結(jié)果樹中可以看到事務(wù)demo包括了兩個子請求demo1和demo2

在聚合報告中只有demo的整體信息,我們看到實例中demo1 和demo2 分別等待1s和0.5s,而下圖中Average是1500毫秒,這點證明事務(wù)的響應(yīng)時間等于兩個請求之和

測試報告優(yōu)化方案

上面的聚合報告是有缺陷的,沒有列出每一個子請求的響應(yīng)時間和處理能力!目前我還沒有通過編碼來搞定這個問題,但是我們可以通過其他方式實現(xiàn),即在測試過程中,把測試結(jié)果寫到一個文件中,然后測試結(jié)束后打開這個文件就可以了!

再次強調(diào)!想要實現(xiàn)該功能一定要使用jmeter 5.x的ApacheJMeter_java和ApacheJMeter_core,本人親測在jmeter 4.x中無法實現(xiàn)該功能!


網(wǎng)站標題:JMeter進階—詳解Java請求關(guān)于事務(wù)的操作
本文鏈接:http://www.dlmjj.cn/article/dhcieoi.html