<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          測試開發(fā)必備技能: JMeter二次開發(fā)

          共 2405字,需瀏覽 5分鐘

           ·

          2022-01-19 17:51


          01
          概述


          為什么需要做二次開發(fā)?JMeter作為一款開源的性能、接口測試工具,有時候無法滿足我們工作的需要,一般體現(xiàn)在:協(xié)議不支持、沒有相應(yīng)數(shù)據(jù)處理功能等。


          一般這種情況下,我們可以做的選擇有:

          • 第一種找插件

          • 第二種自定義實(shí)現(xiàn)


          JMeter二次開發(fā)一般又分為三類情況:

          • 自定義組件、依托于JMeter的core的jar實(shí)現(xiàn)。一般來說,代碼量較大

          • 依托于java請求實(shí)現(xiàn)自定義協(xié)議的擴(kuò)展。推薦方式

          • 自定義函數(shù)來實(shí)現(xiàn)特定的一些數(shù)據(jù)處理的功能。(和服務(wù)器沒有交互),比如加密、簽名的生成、編碼處理,解密等等。



          02
          基于java請求的二次開發(fā)



          首先,我們依賴的jar包分為兩種:

          • JMeter框架層面的:實(shí)現(xiàn)的是性能層面的統(tǒng)計(jì)相關(guān)工作。需要的jar包有ApacheJMeter_core.jar,是JMeter的核心jar包 ,所有基于JMeter的二次開發(fā)基本上都需要用到該jar包。
            基于jave請求所以還需要ApacheJMeter_java.jar


          • 擴(kuò)展的協(xié)議本身所需要的:取決于協(xié)議本身

            接下來打開eclipes,導(dǎo)入需要的jar包,自定義的java請求要繼承Jmeter所提供的.AbstractJavaSamplerClient類。可以看到這里需要重寫的方法是runTest方法。


          我們先寫一個簡單的例子,認(rèn)識一下常見的方法:

          將該項(xiàng)目導(dǎo)成jar包,放到JMeter lib目錄下,ext文件中


          如何設(shè)置傳入?yún)?shù)?

          重寫getDefaultParameters()方法,在runtest方法中,使用arg0. getParameter(“參數(shù)名”)調(diào)用

          代碼:


          效果:


          到這里的話,我們就把JMeter層面的東西搞定了,那么我們怎么讓他實(shí)現(xiàn)我們想要的功能?

          這個時候就要用到擴(kuò)展協(xié)議所需要的jar包了,我們把這個jar也導(dǎo)入到eclipse中,在runTest方法中調(diào)用,設(shè)置其返回結(jié)果,這樣就可以在這里面應(yīng)用了,因本人實(shí)力有限,這個地方舉一個簡單的例子。假設(shè)我們的業(yè)務(wù)(和服務(wù)器交互)是一個計(jì)算器,代碼如下:


          在JMeter框架中我們實(shí)現(xiàn)的操作就是設(shè)置傳入的參數(shù),一般和業(yè)務(wù)有關(guān),方法就用getDefaultParameters


          其次是runTest方法,我們要做的第一步就是獲取傳到的參數(shù),使用arg0. getIntParamete方法,實(shí)例化業(yè)務(wù)對象,實(shí)例化SampleResult對象,開始計(jì)時,業(yè)務(wù)處理,設(shè)置結(jié)果,設(shè)置狀態(tài),結(jié)束計(jì)時,返回SampleResult對象即可。


          有需要時,可在語句中使用try catch拋出異常,對異常狀態(tài)進(jìn)行處理


          最后導(dǎo)出jar包即可,運(yùn)行效果:


          這里需要注意的是業(yè)務(wù)類:

          業(yè)務(wù)類所依賴的類都必須以jar包的形式存在于Jmeter的lib目錄下,以及業(yè)務(wù)類所以依賴的類,有可能在Jmeter的lib目錄中本身就存在。有可能會版本不一致,此時需要進(jìn)行評估,一般保留高版本(前提是能夠兼容低版本才行)。否則就可能需要進(jìn)行代碼層面的變更,使用統(tǒng)一的版本來實(shí)現(xiàn)。



          03
          JMeter自定義函數(shù)



          在使用JMeter的過程中,我們經(jīng)常會需要進(jìn)行各種各樣的數(shù)據(jù)處理,比如說編碼、解碼、加密、解密、特定的值生成,如果JMeter本身沒有提供,我們則可以通過自定義函數(shù)的方式,實(shí)現(xiàn)擴(kuò)展。


          我們依賴的jar包有哪些呢?

          首先JMeter層面,依賴的jar包主要有兩個ApacheJMeter_core.jar以及ApacheJMeter_functions.jar兩個包,功能本身所依賴的包就是功能實(shí)現(xiàn)的jar包,功能本身是脫離JMeter存在的。


          首先我們還是導(dǎo)入JMeter的jar包,創(chuàng)建javaproject項(xiàng)目,創(chuàng)建包,注意package中必須包含關(guān)鍵字functions,創(chuàng)建類,繼承自AbstractFunction。


          這里需要重寫的方法有四個:


          該方法就是返回Hello World,如果在使用時,在execute中調(diào)用功能包并返回結(jié)果,我們看一下怎么傳遞參數(shù)


          導(dǎo)出jar包做法和基于java請求一樣,測試結(jié)果如下:


          我們會發(fā)現(xiàn)一個問題,就是當(dāng)使用參數(shù)調(diào)用函數(shù)不能被調(diào)用,如圖,那么要怎么處理呢?


          函數(shù)的入?yún)⒈旧硎荍meter的一個參數(shù)(類似于${xxx}),則需要進(jìn)行二次轉(zhuǎn)化,操作方法如下:


          導(dǎo)出jra包,運(yùn)行腳本結(jié)果為:


          這里就不在說如何調(diào)用功能jar包,處理方法和基于java請求二次開發(fā)一樣,在execute方法中進(jìn)行調(diào)用,返回結(jié)果即可,這里也要把功能的jar包也要放到lib目錄下。


          小技巧:

          • 如果希望將依賴包放在lib以外的目錄,則建議修改Jmeter的配置文件jmeter.properties. 中?user.classpath


          • 自定義函數(shù),其package中必須包含關(guān)鍵字functions具體以Jmeter.properties文件中的配置項(xiàng)為準(zhǔn)。
            classfinder.functions.contain=.functions

          轉(zhuǎn)載自:https://guyufeiyu.blog.csdn.net/article/details/111505277


          推薦閱讀:

          1. 重磅消息 | 2021年最新全棧測試開發(fā)技能實(shí)戰(zhàn)指南(第2期)

          2. 低代碼開發(fā),推薦一款Web 端自動化神器:Automa!

          3. 史上最全測試開發(fā)工具推薦(含自動化、APP性能、穩(wěn)定性、抓包神器)

          4. 測試開發(fā)必備:自動化測試框架設(shè)計(jì)(含14款框架設(shè)計(jì))

          5. 接口測試常用工具及測試方法(新手篇)

          6. 全網(wǎng)最全的Postman接口自動化測試!(菜鳥級攻略)

          END

          所有原創(chuàng)文章
          第一時間發(fā)布至此公眾號「測試開發(fā)技術(shù)」

          長按二維碼/微信掃碼? 添加作者


          閱讀原文

          瀏覽 119
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  插一插色一色撸一撸视频在线 | 婷婷高潮在线观看一区二区 | 天天日批 | 大鸡巴在线视频网站 | 国产寡妇婬乱A毛片91精品 |