Jmeter變數參數化及函數應用

來源:互聯網
上載者:User

標籤:

  分類: 測試載入器 2006-12-14 10:54 12041人閱讀 評論(5) 收藏 舉報 javascriptloadrunnerrandom指令碼測試多線程

        我們在使用Jmeter錄製指令碼後,經常會對已錄製的指令碼進行修改,需要把一些參數使用一些變數替代,Jmeter是支援這些功能的,不過是通過函數實現的。下面舉一個簡單的例子,使用隨機數替代一個參數:
        開啟錄製好的指令碼,點擊Jmeter的“選項”,選擇“函數助手對話方塊”(或者使用快速鍵“Ctrl+F”),在“選擇一個功能”的下拉框中選擇“_Random”,然後在“函數參賽”中會出現三個參數有使用者來設定,第一個參數是“一個範圍內的最小值”,即所要取的隨機數的最小值,我們設定成1;第二個參數是“一個範圍內的最大值”,即所要取的隨機數的最大值,我們設定成100;第三個參數是“函數名稱”,即用於儲存在測試計劃中其他的方式使用的值,我們設定成Random。設定好上面的三個參數後,點擊“產生”按鈕,這樣就會在對話方塊的最下面產生一個字串“${__Random(1,100,Random)}”,然後我們找到要替換的參數,把它的值換成前面產生的字串就可以了,然後每次啟動並執行時候,這個參數會變成一個1到100之間的隨機數。
        我們在上個例子中可以看到Jmeter提供了很多函數,能滿足咱們在測試中的大多數需要,下面來討論幾個常用的函數。
        _StringFromFile,這個函數是從一個檔案中取到一個字串,這個函數和LoadRunner中的File變數差不多,不過LoadRunner可以直接從資料庫中查詢記錄,自動組建檔案,而Jmeter需要我們藉助第三方工具產生文字檔(我們可以通過資料庫查詢工具查出結果,然後拷貝到一個文字檔中,這樣就是40萬人民幣的軟體和免費軟體之間的差別,嘿嘿)。產生文字檔後就可以設定這個函數的參數了,參數分別是“輸入檔案的全路徑”,“函數名稱”,“Start file sequence number”,Final file sequence number”。第一個參數就是咱們前面產生的檔案的完整路徑,即檔案路徑+檔案名稱.副檔名(檔案路徑可以寫成相對路徑或絕對路徑)。第二個參數是用於儲存在測試計劃中其他的方式使用的值(其實我也一直不明白這個參數的用處,不設定有些函數也能正常使用,不過最好還是隨便設定一下吧,因為還有一些函數不能預設)。第三和第四個參數的用途有兩個,如果一起使用可以從多個檔案中讀取字串。如果只使用第四個參數則表示對同一個檔案讀取多次。

例如:${_StringFromFile(test#‘.‘txt,,1,2)} 可以讀取test1.txt和test2.txt,多線程使用時,從test1的第一條記錄開始讀取,test1的記錄讀取完成後,自動從test2.txt的第一行繼續讀取。

${_StringFromFile(test1.txt,,,2)} 讀取test.txt兩次,多線程使用時,從test1的第一條記錄開始讀取,test1的記錄讀取完成後,再次返回test1.txt的第一行繼續讀取。以上兩種情況時,如果檔案中資料讀取完成,則迴圈會自動終止。

         _counter,這個函數是一個計數器,用於統計函數的使用次數,它從1開始,每調用這個函數一次它就會自動加1,它有兩個參數,第一個參數是布爾型的,只能設定成“TRUE”或者“FALSE”,如果是TRUE,那麼每個使用者有自己的計數器,可以用於統計每個線程歌執行了多少次。如果是FALSE,那就使用全域計數器,可以統計出這次測試共運行了多少次。第二個參數是“函數名稱”。
        _javaScript,我個人認為這個函數是最好用的函數,通過它能使用JavaScript所支援的所有函數,比如當前的系統日期,系統時間等,它的參數也有兩個,第一個是“JavaScript expression to evaluate”,這個參數是JavaScript的語句運算式,我們可以輸入任何的JavaScript支援語句,調用JavaScript內建的函數(可惜不能使用自己寫的JavaScript函數,有點遺憾)。第二個參數是“函數名稱”。
        _threadNum,這個函數沒有任何參數,它用於得到當前啟動並執行線程編號。
        _machineName,這個函數用於返回當前的主機名稱,有一個參數,是“函數名稱”。
        _log,用於記錄日誌,它可以將一條資訊記錄到指定的記錄檔中,並返回所記錄的資訊。它有三個參數。第一個是“String to be logged”,即要記錄到記錄檔中的內容。第二個是“Log level”,即日誌的等級,這個參數只能設定成OUT, ERR, DEBUG, INFO,WARN or ERROR,如果這個參數不設定,函數預設為“INFO”。第三個參數是“Throwable text”,即要拋出的文本資訊,如果不設定,函數會拋出Java自訂的異常。
        _logn,這個函數和_log的功能一樣,參數和使用都完全相同,唯一個差別在於_log會返回記錄到日誌中的資訊,而_logn不返回任何資訊。
        _intSum,用於計算多個整數的和,可以是計算正整數和負整數的和,它有N個參數,最少有3個參數,最多不限。最後一個參數是函數名稱,前面的其它參數是要求和的整數。這個函數在函數對話方塊中只顯示3個參數,如果要計算多個整數,可以通過添加參數實現,不過最後一個參數一定是函數名稱。
        除了上面介紹的幾個函數外,Jmeter還支援了更多更強大的函數,比如_BeanShell,_regexFunction等,如果有需要設定更複雜情境的朋友可以仔細研究一下,可以在函數助手對話方塊中點擊“協助”,讀取這些函數的使用協助(我的英語水平有限,不能準確的翻譯函數協助,就不在這裡獻醜了)。另外,Jmeter還支援自訂的指令碼語言的開發,比如Java和BeanShell等,可以自己寫測試語句,咱們下次討論如何使用Jmeter自訂的語言開發測試指令碼,下次再說,嘿嘿。

Jmeter變數參數化及函數應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.