国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析

這篇具有很好參考價(jià)值的文章主要介紹了【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

概述

  • 在一些企業(yè)中,各類業(yè)務(wù)系統(tǒng)非常豐富,相互之間或?qū)ν馓峁┖芏嗟姆?wù)或接口
  • 這些服務(wù)或接口中,有很多是需要強(qiáng)契約約束的,服務(wù)的提供方、服務(wù)的使用方必須遵守相同契約
  • 這類服務(wù)最典型的就是RPC,其中應(yīng)用廣泛的有Dubbo、gRPC等
  • 使用JMeter對(duì)這些RPC接口的測(cè)試,可以自定義插件來(lái)實(shí)現(xiàn)
  • 由于Dubbo應(yīng)用相對(duì)廣泛,本文主要針對(duì)Dubbo的接口測(cè)試插件開(kāi)發(fā)與實(shí)現(xiàn)進(jìn)行介紹

需要掌握的基礎(chǔ)知識(shí)

  • Java基礎(chǔ)技術(shù),像Java基礎(chǔ)知識(shí)、面向?qū)ο?、Maven等
  • Swing,Java基礎(chǔ)的圖形化技術(shù),就要用于JMeter組件的界面元件繪制
  • JMeter常用組件,包括使用和對(duì)應(yīng)的類、方法,比較典型的配置元件、取樣器
  • Dubbo,要掌握Dubbo的原理、開(kāi)發(fā)、部署及調(diào)用規(guī)則,才能較好的進(jìn)行JMeter插件的開(kāi)發(fā);尤其是要了解****Dubbo泛化調(diào)用的編程。

開(kāi)發(fā)步驟

1、開(kāi)發(fā)配置元件(Config Element)

主要配置Dubbo注冊(cè)服務(wù)地址(一般是Zookepper、Nacos等),超時(shí)時(shí)間等一些通用配置

繼承AbstractConfigGui類,在此類中實(shí)現(xiàn)一系列方法,使用Swing繪制界面、并將界面輸入框內(nèi)容保存到JMeter全局?jǐn)?shù)據(jù),具體如下:

getStaticLabel方法,用于返回配置元件名稱,示例代碼如下:

@Override
public String getStaticLabel() {
    return "Dubbo基礎(chǔ)配置";
}

getLabelResource方法,獲取組件資源名稱,用于多語(yǔ)言,可忽略,示例代碼如下:

@Override
public String getLabelResource() {
    return this.getClass().getSimpleName();
}

configure方法,將測(cè)試元件屬性值設(shè)置回圖形化組件,示例代碼如下:

@Override
public void configure(TestElement element) {
super.configure(element);
//將配置值設(shè)置回當(dāng)前Swing組件
if (element instanceof ConfigTestElement) {
ConfigTestElement configTestElement = (ConfigTestElement) element;
this.txtDubboAddress.setText(configTestElement.getPropertyAsString(DUBBO_ADDRESS_KEY));
this.txtNamespace.setText(configTestElement.getPropertyAsString(NAMESPACE_KEY));
this.txtGroup.setText(configTestElement.getPropertyAsString(GROUP_KEY));
this.txtProtocol.setText(configTestElement.getPropertyAsString(PROTOCOL_KEY));
this.txtTimeout.setText(configTestElement.getPropertyAsString(TIMEOUT_KEY));
}
}
 

createTestElement方法,創(chuàng)建測(cè)試元件對(duì)象,該對(duì)象屬性值會(huì)在測(cè)試計(jì)劃或線程組內(nèi)共享,示例代碼如下:

@Override
public TestElement createTestElement() {
//創(chuàng)建測(cè)試元件對(duì)象,該對(duì)象的屬性值會(huì)在測(cè)試計(jì)劃或線程組內(nèi)共享
ConfigTestElement configTestElement = new ConfigTestElement();
//修改測(cè)試元件對(duì)象
modifyTestElement(configTestElement);
return configTestElement;
}
 

modifyTestElement方法,修改測(cè)試元件對(duì)象,主要是將Swing組件輸入的值保存到測(cè)試元件對(duì)象,示例代碼如下:

@Override
public void modifyTestElement(TestElement testElement) {
super.configureTestElement(testElement);
//將Swing組件輸入的值保存到測(cè)試元件
testElement.setProperty(DUBBO_ADDRESS_KEY,this.txtDubboAddress.getText());
testElement.setProperty(NAMESPACE_KEY,this.txtNamespace.getText());
testElement.setProperty(GROUP_KEY,this.txtGroup.getText());
testElement.setProperty(PROTOCOL_KEY,this.txtProtocol.getText());
testElement.setProperty(TIMEOUT_KEY,this.txtTimeout.getText());
}
 

clearGui方法,清理圖形化界面,示例代碼如下:

@Override
public void clearGui() {
super.clearGui();
//設(shè)置圖形化界面組件初始值
this.initGuiValues();
}

2、開(kāi)發(fā)取樣器(Sampler)

主要配置單個(gè)Dubbo接口測(cè)試用例的獨(dú)特配置,包括接口地址、請(qǐng)求參數(shù)、響應(yīng)數(shù)據(jù)處理等

分別繼承自AbstractSampler、AbstractSamplerGui抽象類,使用Swing繪制界面、并將界面輸入框內(nèi)容保存到JMeter全局?jǐn)?shù)據(jù)

重寫(xiě)父類AbstractSampler邏輯和方法

定義與界面相關(guān)的取樣器數(shù)據(jù)緩存Key,示例代碼如下:

/**
* 服務(wù)接口屬性Key,用于與DubboSamplerGui共享輸入的文本值
*/
public static final String INTERFACE_KEY = "interface_key";

sample方法,執(zhí)行取樣器,示例代碼如下

public class DubboSampler extends AbstractSampler{    
//1、定義取樣器返回對(duì)象
    SampleResult sampleResult = new SampleResult();
 
    //2、設(shè)置取樣器標(biāo)題
    sampleResult.setSampleLabel(this.getPropertyAsString("TestElement.name"));
 
    //3、開(kāi)始取樣
    sampleResult.sampleStart();
 
    //4、從GUI獲取輸入值,獲取從DubboSamplerGui傳遞過(guò)來(lái)的輸入值
    String inf = this.getPropertyAsString(INTERFACE_KEY);
    //...
 
    //5、加工輸入數(shù)據(jù),使用輸入數(shù)據(jù)構(gòu)造業(yè)務(wù)數(shù)據(jù)
    DubboInvokeEntity dubboInvokeEntity = new DubboInvokeEntity();
    //...
 
    //6、執(zhí)行或調(diào)用自定義的業(yè)務(wù)邏輯
    Object result = DubboInvokeUtil.invoke(dubboInvokeEntity);
 
    //7、將業(yè)務(wù)邏輯返回值設(shè)置到返回對(duì)象
    sampleResult.setResponseData(JSON.toJSONString(result), StandardCharsets.UTF_8.name());
 
    //8、結(jié)束并返回
    sampleResult.setDataType(SampleResult.TEXT);
    //結(jié)束取樣器
    sampleResult.sampleEnd();
    //標(biāo)識(shí)為成功
    sampleResult.setSuccessful(true);
 
    return sampleResult;
}

重寫(xiě)父類AbstractSamplerGui邏輯與方法

定義Swing組件引用,定義與界面相關(guān)的Swing組件,可選,示例代碼如下:

/**
* 接口名稱文本框
*/
private JTextField txtInterface;
 
//...,多個(gè)Swing組件,可進(jìn)行類似定義

構(gòu)造方法,進(jìn)行界面和默認(rèn)值的初始化,示例代碼如下:

public DubboSamplerGui(){
    super();
    //初始化圖形化界面
    this.initGui();
    //初始化圖形化界面默認(rèn)值
    this.initGuiValues();
}

getStaticLabel方法,定義取樣器名稱,示例代碼如下:

@Override
public String getStaticLabel() {
    return "Dubbo請(qǐng)求";
}

getLabelResource方法,定義組件資源名稱,一般用于多語(yǔ)言資源,使用默認(rèn)實(shí)現(xiàn),示例代碼如下:

@Override
public String getLabelResource() {
    return this.getClass().getSimpleName();
}

configure方法,配置方法,將測(cè)試元件取樣器緩存的屬性值設(shè)置回圖形化組件,示例代碼如下:

@Override
public void configure(TestElement element) {
super.configure(element);
 
if (element instanceof DubboSampler) {
//將Sampler的數(shù)據(jù)回寫(xiě)GUI,因?yàn)橐粋€(gè)測(cè)試任務(wù)下有多個(gè)GUI,使用不同的Sampler
DubboSampler sampler = (DubboSampler) element;
this.txtInterface.setText(sampler.getPropertyAsString(DubboSampler.INTERFACE_KEY));
//...
}
}
 

createTestElement方法,創(chuàng)建測(cè)試元件對(duì)象,該對(duì)象的屬性值會(huì)在測(cè)試計(jì)劃或線程組內(nèi)共享,示例代碼如下:

@Override
public TestElement createTestElement() {
//創(chuàng)建測(cè)試元件對(duì)象,該對(duì)象的屬性值會(huì)在測(cè)試計(jì)劃或線程組內(nèi)共享
DubboSampler dubboSampler = new DubboSampler();
//修改測(cè)試元件對(duì)象
this.modifyTestElement(dubboSampler);
 
return dubboSampler;
}

modifyTestElement方法,修改測(cè)試元件對(duì)象,主要是將Swing組件輸入的值保存到測(cè)試對(duì)象,示例代碼如下:

@Override
public void modifyTestElement(TestElement testElement) {
//配置取樣器對(duì)象
super.configureTestElement(testElement);
 
if (testElement instanceof DubboSampler) {
DubboSampler dubboSampler = (DubboSampler) testElement;
//將Swing組件輸入的值保存到測(cè)試元件
dubboSampler.setProperty(DubboSampler.INTERFACE_KEY,this.txtInterface.getText());
//...
}
}
 

clearGui方法,清理圖形化界面,示例代碼如下:

@Override
public void clearGui() {
super.clearGui();
//設(shè)置圖形化界面組件初始值
this.initGuiValues();
}

initGui方法,自定義方法,主要是使用Swing組織取樣器的界面元素,示例代碼如下:

private void initGui(){
//使用面板等對(duì)構(gòu)造第1步定義的Swing組件,進(jìn)行合理布局
//...
}

initGuiValues方法,初始化圖形化界面Swing輸入組件默認(rèn)值,示例代碼如下:

private void initGuiValues() {
this.txtInterface.setText("com.lemon.demo.dubbo.inf.service.IUserService");
//...
}

3、在JMeter中使用

將開(kāi)發(fā)項(xiàng)目打包的.jar包拷貝到JMeter的lib/ext目錄

重新啟動(dòng)JMeter

在配置元件、取樣器中將會(huì)發(fā)現(xiàn)Dubb基礎(chǔ)配置、Dubbo請(qǐng)求兩個(gè)插件

效果

總體效果

【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析,軟件測(cè)試工程師,自動(dòng)化測(cè)試,軟件測(cè)試,jmeter,功能測(cè)試,軟件測(cè)試,自動(dòng)化測(cè)試,程序人生,職場(chǎng)發(fā)展

配置元件效果

【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析,軟件測(cè)試工程師,自動(dòng)化測(cè)試,軟件測(cè)試,jmeter,功能測(cè)試,軟件測(cè)試,自動(dòng)化測(cè)試,程序人生,職場(chǎng)發(fā)展

取樣器效果

【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析,軟件測(cè)試工程師,自動(dòng)化測(cè)試,軟件測(cè)試,jmeter,功能測(cè)試,軟件測(cè)試,自動(dòng)化測(cè)試,程序人生,職場(chǎng)發(fā)展

最后感謝每一個(gè)認(rèn)真閱讀我文章的人,禮尚往來(lái)總是要有的,雖然不是什么很值錢(qián)的東西,如果你用得到的話可以直接拿走:

【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析,軟件測(cè)試工程師,自動(dòng)化測(cè)試,軟件測(cè)試,jmeter,功能測(cè)試,軟件測(cè)試,自動(dòng)化測(cè)試,程序人生,職場(chǎng)發(fā)展

軟件測(cè)試面試小程序

被百萬(wàn)人刷爆的軟件測(cè)試題庫(kù)?。?!誰(shuí)用誰(shuí)知道?。?!全網(wǎng)最全面試刷題小程序,手機(jī)就可以刷題,地鐵上公交上,卷起來(lái)!

涵蓋以下這些面試題板塊:

1、軟件測(cè)試基礎(chǔ)理論 ,2、web,app,接口功能測(cè)試 ,3、網(wǎng)絡(luò) ,4、數(shù)據(jù)庫(kù)?,5、linux

6、web,app,接口自動(dòng)化 ,7、性能測(cè)試?,8、編程基礎(chǔ),9、hr面試題 ,10、開(kāi)放性測(cè)試題,11、安全測(cè)試,12、計(jì)算機(jī)基礎(chǔ)

【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析,軟件測(cè)試工程師,自動(dòng)化測(cè)試,軟件測(cè)試,jmeter,功能測(cè)試,軟件測(cè)試,自動(dòng)化測(cè)試,程序人生,職場(chǎng)發(fā)展

這些資料,對(duì)于【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴上萬(wàn)個(gè)測(cè)試工程師們走過(guò)最艱難的路程,希望也能幫助到你!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-703819.html

到了這里,關(guān)于【JMeter】 二次開(kāi)發(fā)插件開(kāi)發(fā) Dubbo 接口測(cè)試插件淺析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • jmeter測(cè)試rpc接口-使用dubbo框架調(diào)用【杭州多測(cè)師_王sir】

    jmeter測(cè)試rpc接口-使用dubbo框架調(diào)用【杭州多測(cè)師_王sir】

    1.基于SOAP架構(gòu)。基于XML規(guī)范?;赪ebService協(xié)議。特點(diǎn):接口地址?wsdl結(jié)尾 2.基于RPC架構(gòu),基于dubbo協(xié)議,thrift協(xié)議。SpringCloud微服務(wù)。 3.基于RestFul架構(gòu),基于json規(guī)范?;趆ttp協(xié)議(我們常用的都是這種,cms平臺(tái)也是) RestFul規(guī)則∶ 接口地址:?http://127.0.0.1/user?,?get(查詢用戶)?,?

    2024年02月13日
    瀏覽(22)
  • 軟件測(cè)試進(jìn)階之jmeter的性能測(cè)試和性能指標(biāo)詳解

    jmeter里頭是腳本: 測(cè)試計(jì)劃 線程組 http請(qǐng)求:接口請(qǐng)求控件 信息頭管理器:請(qǐng)求頭(content-type、token) 傳參:類型:url傳參(接口地址加上信息)、bodydata傳參:通常用json格式傳參,表單格式from-data get:獲取資源、get用url post:傳參、bodydata傳參 查看結(jié)果樹(shù):查看響應(yīng)結(jié)果

    2023年04月08日
    瀏覽(20)
  • Jmeter進(jìn)行壓力測(cè)試不為人知的秘密_jmter壓力測(cè)試,軟件測(cè)試面試項(xiàng)目

    Jmeter進(jìn)行壓力測(cè)試不為人知的秘密_jmter壓力測(cè)試,軟件測(cè)試面試項(xiàng)目

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過(guò)華為、字節(jié)跳動(dòng)等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長(zhǎng),但自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新軟件測(cè)試全套學(xué)習(xí)資料》

    2024年04月22日
    瀏覽(24)
  • 全網(wǎng)最詳細(xì),Jmeter性能測(cè)試-性能進(jìn)階, 多協(xié)議實(shí)戰(zhàn)Websocket/Dubbo(七)

    全網(wǎng)最詳細(xì),Jmeter性能測(cè)試-性能進(jìn)階, 多協(xié)議實(shí)戰(zhàn)Websocket/Dubbo(七)

    Jmeter是目前主流的性能測(cè)試工具,原因除了他是開(kāi)源的、免費(fèi)的之外,還有它的拓展性非常強(qiáng)。Jmeter默認(rèn)使用的協(xié)議是Http/HTTPS協(xié)議,但這并不是唯一的協(xié)議,通過(guò)加載插件,可以讓Jmeter支持更多協(xié)議的腳本開(kāi)發(fā)。 webservice(soap)協(xié)議 webservice是一個(gè)web的應(yīng)用程序,使用xml想外

    2023年04月20日
    瀏覽(25)
  • 【軟件測(cè)試】技術(shù)精選:Jmeter常見(jiàn)的幾種報(bào)錯(cuò)

    【軟件測(cè)試】技術(shù)精選:Jmeter常見(jiàn)的幾種報(bào)錯(cuò)

    這個(gè)錯(cuò)的含義是 沒(méi)有連接到服務(wù)器地址,因此很可能是 內(nèi)部網(wǎng)絡(luò)中斷導(dǎo)致。 這個(gè)和本地的線程數(shù)無(wú)關(guān) 可能原因是網(wǎng)絡(luò)抖動(dòng)不穩(wěn)定導(dǎo)致 強(qiáng)制停止線程,連接中斷產(chǎn)生的錯(cuò)誤,正常壓測(cè)我們等測(cè)試結(jié)束就好,不用強(qiáng)制停止 這個(gè)錯(cuò)誤的導(dǎo)致是由于請(qǐng)求接口 設(shè)置的請(qǐng)求超時(shí)與 請(qǐng)

    2024年02月16日
    瀏覽(21)
  • jmeter 二次開(kāi)發(fā)詳解

    JMeter 是一個(gè)功能強(qiáng)大的性能測(cè)試工具,但它可能無(wú)法滿足特定項(xiàng)目或組織的特定需求。通過(guò)進(jìn)行二次開(kāi)發(fā),可以定制 JMeter,使其適應(yīng)具體項(xiàng)目的需求。例如,可能需要添加自定義的 測(cè)試元件、報(bào)告生成器或結(jié)果分析器等。二次開(kāi)發(fā)三種方式: 自定義 BeanShell 功能 自定義請(qǐng)求

    2024年02月14日
    瀏覽(17)
  • 軟件測(cè)試技能,JMeter壓力測(cè)試教程,請(qǐng)求頭部自動(dòng)簽名帶上X-sign參數(shù)(二十二)

    軟件測(cè)試技能,JMeter壓力測(cè)試教程,請(qǐng)求頭部自動(dòng)簽名帶上X-sign參數(shù)(二十二)

    接口請(qǐng)求 body 帶有 sign 簽名參數(shù),sign 簽名是根據(jù)請(qǐng)求 body 除去 sign 本身參數(shù)后,拼接請(qǐng)求參數(shù)最后 md5 加密生成的 前面一篇是把 sign 前面參數(shù)放到請(qǐng)求的 body 里面,這篇繼續(xù)講把簽名參數(shù)放到請(qǐng)求頭部的情況 http 請(qǐng)求需要進(jìn)行簽名校驗(yàn) X-Sign,放到請(qǐng)求頭部 Content-Type: applic

    2024年02月12日
    瀏覽(31)
  • Jmeter二次開(kāi)發(fā)實(shí)現(xiàn)rsa加密

    Jmeter二次開(kāi)發(fā)實(shí)現(xiàn)rsa加密

    jmeter函數(shù)助手提供了大量的函數(shù),像 counter、digest、random、split、strLen,這些函數(shù)在接口測(cè)試、性能測(cè)試中大量被使用,但是大家在實(shí)際工作,形形色色的測(cè)試需求不同,導(dǎo)致jmeter自帶或者擴(kuò)展插件給我們提供的函數(shù)無(wú)法全部滿足,這個(gè)時(shí)候我們就可以自己動(dòng)手, 對(duì)JMeter進(jìn)行

    2024年02月08日
    瀏覽(17)
  • Jmeter壓測(cè)實(shí)戰(zhàn):Jmeter二次開(kāi)發(fā)之自定義函數(shù)

    Jmeter壓測(cè)實(shí)戰(zhàn):Jmeter二次開(kāi)發(fā)之自定義函數(shù)

    Jmeter是Apache基金會(huì)下的一款應(yīng)用場(chǎng)景非常廣的壓力測(cè)試工具,具備輕量、高擴(kuò)展性、分布式等特性。Jmeter已支持實(shí)現(xiàn)隨機(jī)數(shù)、計(jì)數(shù)器、時(shí)間戳、大小寫(xiě)轉(zhuǎn)換、屬性校驗(yàn)等多種函數(shù),方便使用人員使用。如果在使用過(guò)程中存在和業(yè)務(wù)強(qiáng)耦合的常用功能函數(shù),在Jmeter不支持的情況

    2024年02月11日
    瀏覽(21)
  • Jmeter 壓測(cè)實(shí)戰(zhàn):Jmeter 二次開(kāi)發(fā)之自定義函數(shù)

    目錄 1 前言 2 開(kāi)發(fā)準(zhǔn)備 3 自定義函數(shù)核心實(shí)現(xiàn) 3.1 新建項(xiàng)目 3.2 繼承實(shí)現(xiàn) AbstractFunction 類 3.3 最終項(xiàng)目結(jié)構(gòu) 4 Jmeter 加載擴(kuò)展包 4.1 maven 構(gòu)建配置 4.2 項(xiàng)目打包 4.3 Jmeter 加載擴(kuò)展包 5 自定義函數(shù)調(diào)用調(diào)試 5.1 打開(kāi) Jmeter 函數(shù)助手,選擇自定義函數(shù) 5.2 京東宙斯接口驗(yàn)證 JMeter 是一個(gè)開(kāi)

    2024年02月16日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包