您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
Jmeter使用指南
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/27 14:48:57 ] 推薦標(biāo)簽:

  7.2 JMeter內(nèi)置變量

  JMeter在它的BeanShell中內(nèi)置了變量,用戶可以通過(guò)這些變量與JMeter進(jìn)行交互,其中主要的變量及其使用方法如下(JMeter文檔并沒(méi)有對(duì)該部分內(nèi)容進(jìn)行詳細(xì)講解,這里也會(huì)說(shuō)明他們分別對(duì)應(yīng)于JavaDoc中的哪個(gè)類(lèi)):

    vars:這個(gè)變量實(shí)際引用了JMeter線程中的局部變量容器(本質(zhì)上是Map),因此可以通過(guò)put和get方法訪問(wèn)JMeter中的變量。這個(gè)變量是所有內(nèi)置變量中有用的,它是測(cè)試用例與BeanShell交互的橋梁。對(duì)應(yīng)于org.apache.jmeter.threads.JMeterVariables
    props:該變量引用了JMeter的配置信息,它的使用方法與vars類(lèi)似,但是只能put進(jìn)去String類(lèi)型的值,而不能是一個(gè)對(duì)象。對(duì)應(yīng)于java.util.Properties。
    ctx:該變量引用了當(dāng)前線程的上下文,理論上通過(guò)這個(gè)東西我們幾乎可以控制當(dāng)前線程相關(guān)的一切,不過(guò)這要求使用者非常熟悉JMeter的源碼。對(duì)應(yīng)于org.apache.jmeter.threads.JMeterContext。

  7.3 在BeanShell中使用Java類(lèi)

  有的時(shí)候我們希望發(fā)送數(shù)個(gè)請(qǐng)求,而這些請(qǐng)求的內(nèi)容是通過(guò)一個(gè)Java類(lèi)來(lái)實(shí)現(xiàn)的,這時(shí)需要讓JMeter來(lái)調(diào)用這個(gè)Java類(lèi),而的途徑是通過(guò)BeanShell。

  為了能夠加載Java類(lèi),我們首先需要在Test Plan中添加自定義Java類(lèi)所在的Class Path,然后可以在BeanShell中import這個(gè)Java類(lèi),后再將獲得的內(nèi)容放入vars變量中,這樣可以在其他地方通過(guò)${...}的方式獲取該變量的信息了。

  例如,創(chuàng)建了一個(gè)com.linhao.A類(lèi)在/root/Java文件夾下,該類(lèi)有一個(gè)方法hello()返回一個(gè)"Hello World"字符串,那么如果想在請(qǐng)求中使用這個(gè)方法返回的字符串,則進(jìn)行如下操作:

  首先在Test Plan下添加ClassPath為/root/Java

  然后在請(qǐng)求前添加一個(gè)BeanShell Sampler并寫(xiě)入如下代碼:

  view plaincopy to clipboardprint?

  import com.linhao.A;

  vars.put("word", A.hello());

  import com.linhao.A;

  vars.put("word", A.hello());

  后在需要使用該字符串的地方寫(xiě)${word},這樣終這個(gè)域?qū)⒈惶鎿Q為Hello World

  7.4 JMeter下BeanShell的調(diào)試

  BeanShell也是代碼,應(yīng)此也可能會(huì)有錯(cuò)誤,而JMeter又是一個(gè)圖形界面的程序(也有命令行模式,但并不變于在設(shè)計(jì)用例階段使用),因此很多時(shí)候用例的設(shè)計(jì)者并不能確定BeanShell中某些變量是否正確。一個(gè)簡(jiǎn)單的辦法是使用BeanShell創(chuàng)建一個(gè)對(duì)話框,然后將需要檢測(cè)的變量值顯示在對(duì)話框中。代碼如下:

  view plaincopy to clipboardprint?

  JFrame. frame. = new JFrame( a ); //a is a variable to be checked

  frame.setVisible(true);

  JFrame. frame. = new JFrame( a ); //a is a variable to be checked

  frame.setVisible(true);

  這樣當(dāng)測(cè)試執(zhí)行到這里的時(shí)候可以知道變量a的值了。

  雖然BeanShell很強(qiáng)大,但是它畢竟是一個(gè)腳本語(yǔ)言,因此如果測(cè)試參數(shù)的生成邏輯很復(fù)雜,則還是應(yīng)該把主要邏輯放在Java類(lèi)中,然后讓BeanShell去調(diào)用,BeanShell只用來(lái)處理一些較為簡(jiǎn)單的操作

8、Jmeter使用之常用函數(shù)介紹

"_Random"函數(shù)

  功能:這個(gè)函數(shù)是從某個(gè)數(shù)字段隨機(jī)讀取數(shù)據(jù)替換參數(shù),可以利用在測(cè)試需要添加多條數(shù)據(jù)記錄而且某些字段需要性的測(cè)試腳本中,隨機(jī)生成的參數(shù)是數(shù)字

  作用:可以用來(lái)實(shí)現(xiàn)參數(shù)化http請(qǐng)求發(fā)送的參數(shù),使得在Jmeter運(yùn)行時(shí)參數(shù)化了的參數(shù)在每個(gè)線程去不同的隨機(jī)數(shù)。如果某個(gè)參數(shù)每次發(fā)送請(qǐng)求的時(shí)候不能重復(fù)才可以存儲(chǔ)到數(shù)據(jù)庫(kù)中,則用這個(gè)功能十分方便。

  使用:

  1.點(diǎn)擊Jmeter的“選項(xiàng)”,選擇“函數(shù)助手對(duì)話框”(或者使用快捷鍵“Ctrl+F”),在“選擇一個(gè)功能”的下拉框中選擇“_Random”。

  2.配置“_Random”函數(shù),第一個(gè)參數(shù)是“一個(gè)范圍內(nèi)的小值”,即所要取的隨機(jī)數(shù)的小值,我們?cè)O(shè)置成1;第二個(gè)參數(shù)是“一個(gè)范圍內(nèi)的大值”,即所要取的隨機(jī)數(shù)的大值,我們?cè)O(shè)置成100;第三個(gè)參數(shù)是“函數(shù)名稱”,即用于存儲(chǔ)在測(cè)試計(jì)劃中其他的方式使用的值,我們?cè)O(shè)置成Random。設(shè)置好上面的三個(gè)參數(shù)后,點(diǎn)擊“生成”按鈕,這樣會(huì)在對(duì)話框的下面生成一個(gè)字符串“${__Random(1,100,Random)}”,在我們編寫(xiě)的腳本中,找到要替換的參數(shù),把它的值換成前面生成的字符串可以了,然后每次運(yùn)行的時(shí)候,這個(gè)參數(shù)會(huì)變成一個(gè)1到100之間的隨機(jī)數(shù)。

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd