jMeter正則表達式
使用正則表達式搜索和操縱文本,基於模式。 JMeter 解釋正則表達式的形式或模式被用於整個JMeter 測試計劃,包括模式匹配軟件 Apache Jakarta ORO.
使用正則表達式,我們當然可以節省大量的時間,並實現更大的靈活性,因爲我們建立或加強一個測試計劃。正則表達式提供了一種簡單的方法來獲取信息頁面時,它是不可能或很難預測結果。
使用表達式的標準用法的例子是從服務器響應得到一個會話ID。如果服務器返回一個唯一的會話密鑰,我們可以很容易地得到我們的負載腳本中使用表達式。
要使用正則表達式在測試計劃,需要使用正則表達式提取在JMeter。可以將正則表達式在測試計劃中的任何組件使用。
這是值得強調的包含和比賽之間的差異,如用於響應斷言測試元件:
包含表示正則表達式匹配至少有一些目標的一部分,所以'字母'「包含」'ph.b.因爲正則表達式匹配'phabe「。
匹配正則表達式匹配整個目標。因此,「alphabet」是「匹配」'*t'。
假設想匹配一個Web頁的以下部分:
name="file" value="readme.txt"
要提取readme.txt。一個合適的正則表達式如:
name="file" value="(.+?)">
上述的特殊字符是:
( and ) - 這些匹配字符串括起來的部分要返回
. - 匹配任何字符
+ - 一次或更多次
? - 停止在第一個匹配成功時
CREATE JMeter測試計劃
讓我們瞭解在正則表達式中使用正則表達式提取後處理器的元素,編寫一個測試計劃。此元素會從當前頁面使用正則表達式識別文字圖案所需的元素,符合提取文本。
首先,我們將寫人名單和他們的電子郵件ID是一個HTML頁面。它部署到 tomcat 服務器。 HTML(index.htmll)上的內容如下:
ID | name | |
---|---|---|
3 | Manisha | [email protected] |
4 | joe | [email protected] |
部署在 Tomcat 服務器上,這個頁面會看起來像在下面的快照:
在我們的測試計劃中,我們將選擇人以上列表頁中看到的人表的第一行的人。爲了捕捉這個人的ID,讓我們首先確定的模式,我們會發現在第二排的人。在下面的快照中可以看出,第二個人的ID被包圍
啓動JMeter,添加一個線程組 Test Plan > Add> Threads(Users)> Thread Group.
接下來,添加一個採樣器的HTTP請求,右鍵單擊選擇的測試計劃 Add > Sampler > HTTP Request 並進入詳情如下:
Name: Manage
Server Name or IP: localhost
Port Number: 8080
Protocol: We will keep this blank, which means we want HTTP as the protocol.
Path: jmeter/index.htmll
接下來,添加一個正則表達式提取。選擇HTTP請求採樣器(管理),右鍵點擊 Add > Post Processor > Regular Expression Extractor.
上述快照詳情如下:
Field
描述
Reference Name
所提取的測試將被存儲在其中的變量的名稱(refname)。
Regular Expression
對文本提取模式將匹配。文字組,將提取的字符'('和')'所包圍。我們使用'+?'由<td..>..</ TD>標籤包圍的文本來表示一個單一實例。在我們的例子中的表達式爲:
Template
提取的文本的每個組將被放置作爲成員變量person,「(」和「)」括起來的模式各組的順序之後。每個組存儲爲refname_g#,其中refname是你輸入的字符串作爲參考名稱,#是組號。 $1$指組1,$2$是指第2組,$0$是指無論整個表達式匹配。在這個例子中,我們所提取的ID將被保持於Person_g1,而「名稱」的值將被存儲在Person_g2。
Match No.
既然我們打算只提取第二次出現的這種模式,相匹配的第二項,我們使用值2。值0將隨機匹配,而在foreach控制器需要使用負值。
Default
如果該項目沒有找到,這將是默認值。這是一個可選字段。可能會讓它空白。
添加一個監聽器來捕捉這個測試計劃的結果。右鍵單擊線程組選擇 Add > Listener > View Results Tree 選項添加監聽器。
保存測試計劃爲reg_express_test.jmx和運行測試。輸出將是一個成功,因爲在下面的快照: