1. 程式人生 > >將RegEx(正則表達式提取器)與JMeter一起使用

將RegEx(正則表達式提取器)與JMeter一起使用

應用 上下 div usg clas 有趣 perl 發生 信息保存

JMeter的,最流行的開源性能測試工具,可以工作正則表達式,用正則表達式提取正則表達式是一種用於通過使用高級操作提取文本的必需部分的工具。正則表達式在測試Web應用程序時很流行,因為它們可用於驗證和執行Web應用程序響應的操作。

在JMeter中,正則表達式提取器對於從響應中提取信息非常有用。例如,當您請求頁面然後需要從下載的頁面獲取鏈接時。另一個用例是將提取的信息保存到變量中,因此可以在以後的性能測試中使用它,例如在測試使用令牌認證的應用程序時,例如CSRF / XSRF。

在本文中,我將分享如何在JMeter中使用正則表達式提取器。

我創建了一個非常簡單的測試計劃,請看圖1:

技術分享圖片 圖1

你可能會註意到圖像中有一個未知元素; 它是正則表達式提取器後處理器。讓我們更仔細地看一下,如圖2所示:

技術分享圖片 圖2

正則表達式提取器語法

在JMeter中配置正則表達式時,請使用與Perl5相同的語法但是JMeter和Perl regexps處理之間存在一個非常重要的區別。在Perl中,您必須使用“//”分隔符來指定regexp。因此,正則表達式reg可能如下所示:?/ regular_expression /。但是你不能在JMeter中使用“//”作為相同的目的,否則正則表達式將按字面解析,而不是邏輯上。 因此,如果您 arular表達式中使用分組,請使用“()”括號將一個組與另一個組分開。

配置正則表達式提取器

現在我將簡要介紹這個元素的所有字段。

“應用於”單選按鈕

您可以選擇是將正則表達式應用於主樣本結果,子樣本/嵌入資源還是兩者。

可能的選擇是:

  • 僅限主要樣本 - 僅適用於主要樣本
  • 僅子樣本 - 僅適用於子樣本
  • 主樣本和子樣本 - 適用於主樣本和子樣本
  • JMeter變量 - 表達式應用於填充變量

“要檢查的字段”單選按鈕

您可以選擇應用正則表達式的字段。可能的選擇是:

  • 身體 - 反應的主體。您的網頁內容(不包括標題)將使用正則表達式進行解析。
  • 正文(未轉義) - 響應的正文,替換了所有HTML轉義碼。請註意,HTML轉義的處理不考慮上下文,因此可能會進行一些不正確的替換。
  • - 響應或請求的標頭
  • URL - 請求的URL
  • 響應代碼 - 例如200
  • 響應消息 - 例如OK

創建變量的名稱 - 解析結果將保存在JMeter中的變量的名稱。

正則表達式 - 填寫正則表達式進行測試。

模板 - 選擇要從正則表達式中提取的組。‘$ 1 $‘將提取組1,‘$ 2 $‘將提取組2,依此類推。$ 0 $將提取整個表達式。例如,如果您的響應中有“經濟學”一詞,並且您搜索正則表達式“(ec)(onomics)”並應用模板$ 2 $$ 1 $,那麽在輸出變量中您將收到“onomicsec”。如果您應用模板$ 0 $,那麽在輸出變量中您將收到“經濟學”。

匹配1。 如果有多個字符序列,則允許指定,應該使用哪個變體。重要的提示。如果將“應用於”設置為“主樣本和子樣本”並指定“匹配1”= 3,則JMeter將從第二個子樣本中選擇匹配序列,因為第一個將是主樣本。如果指定為零,則JMeter將隨機選擇匹配。如果指定負數,例如“-2”

如果匹配號設置為負數,則處理采樣器數據中的所有可能匹配。變量設置如下:

refName_matchNr - 找到的匹配數; 可能是0

refName_n,其中n = 1,2,3等 - 模板生成的字符串

refName_n_gm,其中m = 0,1,2 - 匹配n的組

refName - 始終設置為默認值

refName_gn - 未設置

指示要使用的匹配項。正則表達式可以多次匹配。

使用零值表示JMeter應隨機選擇匹配。

正數N表示選擇第n個匹配。

這就是正則表達式提取器的選項。現在我將展示一些實際的例子。在所有示例中,我將使用相同的URL通過regexp提取字符串,請參見圖3。

技術分享圖片 圖3

提取字符串後,它將被置於變量$ pageLink中,並在“pageLink”HTTP請求中使用,如圖4所示。

技術分享圖片 圖4

按字搜索。 如果需要提取帶有正則表達式的字符串,這個字符串只是填充Regular Extractor,如圖5所示。

技術分享圖片 圖5

執行“ tut.by ”請求並提取正則表達式後,我們將得到以下$ pageLink =經濟學,並將在“pageLink”請求中使用,如圖6所示。

技術分享圖片 圖6

使用組您可以使用組移動正則表達式的一部分。例如,您需要找到“經濟學”這個詞,但在將它放到$ pageLink之前,您需要重新排列單詞的一部分。請看圖7的語法

技術分享圖片 圖7

我們將在View Results Tree中擁有什麽

技術分享圖片 圖8

在regexp中使用類。 正則表達式可以使用字符類。例如,[0-9]表示“任何數字符號”。如果我按照圖9設置正則表達式,那麽我將從響應正文中獲得第3個適當的結果。

技術分享圖片 圖9

“{5,6}”表示結果應包含不少於5且不超過6個字符。以及我們將在圖10中的View Results Tree中看到的內容

技術分享圖片 圖10

使用“^”。 “^”表示反轉,例如正則表達式[^ 0-9]將查找非數字符號。所以,我將設置regexp,如圖11所示

技術分享圖片 圖11

在View結果樹中,我將有非常有趣的情況,如圖12所示

技術分享圖片 圖12

發生了什麽?請看圖13

技術分享圖片 圖13

我們捕獲了“回車”符號,這是java.net.MalformedURLException的原因。要修復regexp,我會在它之前添加“<”並重新開始測試。現在可以了。

技術分享圖片 圖14

當然,我不能在一篇文章中涵蓋使用正則表達式的所有可能和不可能的情況。有關更多信息,請參閱 JMeter正則表達式教程 ,其中包含詳盡的信息。

JMeter使用Jakarta ORO進行正則表達式處理。您可以使用Jakarta ORO Demonstration Applet快速測試正則表達式 ,這是查看結果匹配/組/等的最快方法。

將RegEx(正則表達式提取器)與JMeter一起使用