位置:首頁 > Java技術 > JMeter教學 > jMeter正則表達式

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)上的內容如下:

<html>
<head>
</head>
<body>
<table style="border: 1px solid #000000;">
<th style="border: 1px solid #000000;">ID</th><th style="border: 1px solid #000000;">name</th><th style="border: 1px solid #000000;">Email</th>
<tr><td id="ID" style="border: 1px solid #000000;">3</td><td id="Name" style="border: 1px solid #000000;">Manisha</td><td id="Email" style="border: 1px solid #000000;">manisha@domain.com</td></tr>
<tr><td id="ID" style="border: 1px solid #000000;">4</td><td id="Name" style="border: 1px solid #000000;">joe</td><td id="Email" style="border: 1px solid #000000;">joe@domain.com</td></tr>
</table>
</body>
</html>

部署在 Tomcat 服務器上,這個頁麵會看起來像在下麵的快照:

HTML Page

在我們的測試計劃中,我們將選擇人以上列表頁中看到的人表的第一行的人。為了捕捉這個人的ID,讓我們首先確定的模式,我們會發現在第二排的人。在下麵的快照中可以看出,第二個人的ID被包圍<td id="ID">的和</TD>,它是具有這種模式的數據的第二行。我們可以用它來完全匹配的模式,我們希望從中提取信息。正如我們要提取兩條信息從當前頁的,該人ID和該人的姓名,字段定義如下:

HTML Page Source code

啟動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 Request Sampler

接下來,添加一個正則表達式提取。選擇HTTP請求采樣器(管理),右鍵點擊 Add > Post Processor > Regular Expression Extractor.

Regular Expression Extractor

上述快照詳情如下:

Field 描述
Reference Name 所提取的測試將被存儲在其中的變量的名稱(refname)。
Regular Expression 對文本提取模式將匹配。文字組,將提取的字符'('和')'所包圍。我們使用'+?'由<td..>..</ TD>標簽包圍的文本來表示一個單一實例。在我們的例子中的表達式為:<td id="ID">(+)</ TD> S*<td id="Name">(+)</ TD> S*
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和運行測試。輸出將是一個成功,因為在下麵的快照:

Regular Expression Output