話說LoadRunner有的一些功能,比如:參數(shù)化、檢查點(diǎn)、集合點(diǎn)、關(guān)聯(lián),Jmeter也都有這些功能,只是功能可能稍弱一些,今天就關(guān)聯(lián)來講解一下。
JMeter的關(guān)聯(lián)方法有兩種:后置處理器-正則表達(dá)式提取器與XPath Extractor。
一、正則表達(dá)式提取器
1、添加正則表達(dá)式
在需要獲得數(shù)據(jù)的上一個(gè)請求上右擊添加一個(gè)后置處理器-->正則表達(dá)式提取器

解釋:
(1)引用名稱:下一個(gè)請求要引用的參數(shù)名稱,如填寫activityID,則可用${activityID}引用它。
(2)正則表達(dá)式:
()括起來的部分就是要提取的。
.匹配任何字符串。
+:一次或多次。
?:不要太貪婪,在找到第一個(gè)匹配項(xiàng)后停止。
注:(.+?)[.\n]+可以匹配換行符在內(nèi)的所有字符。
(3)模板:用$$引用起來,如果在正則表達(dá)式中有多個(gè)正則表達(dá)式(多個(gè)括號(hào)括起來的東東),則可以是$2$$3$等等,表示解析到的第幾個(gè)值給title。如:$1$表示解析到的第1個(gè)值
(4)匹配數(shù)字:0代表隨機(jī)取值,1代表全部取值,通常情況下填0,如果在LR中,取出的值是一個(gè)數(shù)組,還得處理一下,LR11版本用一個(gè)隨機(jī)的函數(shù)就可以不用寫大段的代碼來處理數(shù)組。
(5)缺省值:如果參數(shù)沒有取得到值,那默認(rèn)給一個(gè)值讓它取。
2、關(guān)于正則表達(dá)式的舉例說明
(1)提取單個(gè)字符串:
假設(shè)測試人員期望匹配Web頁面的如下部分:name = "file" value = "readme.txt">并提取readme.txt。
一個(gè)符合要求的正則表達(dá)式:name = "file" value = "(.+?)">。
():封裝了待返回的匹配字符串。
.:匹配任何字符串。
+:一次或多次。
?:不要太貪婪,在找到第一個(gè)匹配項(xiàng)后停止。
(2)提取多個(gè)字符串:
假設(shè)測試人員期望匹配Web頁面的如下部分:name = "file" value = "readme.txt">并提取file和readme.txt。
一個(gè)符合要求的正則表達(dá)式:name?= "(.+?)" value = "(.+?)"。
引用名稱:MYREF
模板:$1$$2$
如下變量的值將會(huì)被設(shè)定:
MYREF_g0:name = "file"value = "readme.txt"
MYREF_g1:file
MYREF_g2:readme.txt
引用${MYREF_g1}
3、使用該關(guān)聯(lián)的請求
如下圖:

4、完整的例子:事例代碼
二、XPath Extractor
XPath Extractor是另一個(gè)可被用來提取頁面給定內(nèi)容的Post Processor,XPath
Extractor的使用方式與Regular Expression
Extractor類似,只不過需要在該Extractor中指定的不是正則表達(dá)式,而是給定的XPath路徑。
用xpath從前一個(gè)請求中取。這種形式比較適合于返回為xml片段的情況。在需要獲得數(shù)據(jù)的請求上右擊添加一個(gè)后置處理器-->xPath Extractor。引用名稱即下一個(gè)請求要引用的參數(shù)名稱,如填寫body,則可用${body}引用它。
Xpath一般用于返回xml用得多。
XPath Extractor的設(shè)置界面:

l? Use Tidy?:當(dāng)需要處理的頁面是HTML格式時(shí),必須選中該選項(xiàng),當(dāng)需要處理的頁面是XML或XHTML格式(例如,RSS返回)時(shí),取消選中該選項(xiàng)。
l? Reference Name:存放提取出的值的參數(shù)。
l? XPath Query:用于提取值的XPath表達(dá)式。
l? Default Value:參數(shù)的默認(rèn)值。
三、小結(jié)這兩種方式
正則表達(dá)式提取器和XPath Extractor都可以用來提取給定頁面中的特定文本,并將其保存在參數(shù)中,這兩種方式各有優(yōu)缺點(diǎn)。
正則表達(dá)式提取器可以用于對頁面任何文本的提取,提取的內(nèi)容是根據(jù)正則表達(dá)式在頁面內(nèi)容中進(jìn)行文本匹配;
而XPath Extractor則可以提取返回頁面任意元素的任意屬性。
相比較而言,
如果需要提取的文本是頁面上某元素的屬性值,建議使用XPath Extractor;
而如果需要提取的文本在頁面上的位置不固定,或者不是元素的屬性,建議使用正則表達(dá)式提取器。