Jmeter-regular-expressions

提供:Dev Guides
移動先:案内検索

jMeter-正規表現

正規表現は、パターンに基づいてテキストを検索および操作するために使用されます。 JMeterは、パターンマッチングソフトウェアhttps://attic.apache.org/projects/jakarta-orol[Apache Jakarta ORO]を含めることにより、JMeterテスト計画全体で使用されている正規表現またはパターンの形式を解釈します。

正規表現を使用すると、確かに多くの時間を節約し、テスト計画を作成または強化する際の柔軟性を高めることができます。 正規表現は、結果を予測することが不可能または非常に困難な場合に、ページから情報を取得する簡単な方法を提供します。

'_式を使用する標準的な使用例は、サーバーの応答からセッションIDを取得することです。 サーバーが一意のセッションキーを返す場合、ロードスクリプトの式を使用して簡単に取得できます。_

テスト計画で正規表現を使用するには、JMeterのRegular Expression Extractorを使用する必要があります。 テスト計画の任意のコンポーネントに正規表現を配置できます。

応答アサーションテスト要素で使用される containsmatches の違いを強調する価値があります-

  • contains は、正規表現がターゲットの少なくとも一部と一致したことを意味するため、「alphabet」は「contains」「ph.b。」正規表現はサブストリング「phabe」と一致するためです。
  • matches は、正規表現がターゲット全体に一致したことを意味します。 したがって、「アルファベット」は「al。* t」と「一致」します。

あなたがウェブページの次の部分を一致させたいとします-

name = "file" value = "readme.txt"

そして、readme.txtを抽出します。 適切な正規表現は-

name = "file" value = "(.+?)">

上記の特殊文字は-

  • (*および)*-返される一致文字列の部分を囲みます
  • -任意の文字に一致
  • + -1回以上
  • -最初の一致が成功したときに停止する

JMeterテスト計画を作成する

テスト計画を作成して、正規表現エクストラクター(ポストプロセッサ要素)での正規表現の使用を理解しましょう。 この要素は、正規表現を使用して現在のページからテキストを抽出し、目的の要素が適合するテキストパターンを識別します。

最初に、人とそのメールIDのリストを含むHTMLページを作成します。 これをTomcatサーバーにデプロイします。 html(indexl)の内容は次のとおりです-

<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;">[email protected]</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;">[email protected]</td>
         </tr>

      </table>
   </body>
</html>

Tomcatサーバーにデプロイすると、このページは次のスクリーンショットに示すようになります-

HTMLページ

テスト計画では、上記の個人リストページに表示される個人テーブルの最初の行で個人を選択します。 この人物のIDを取得するには、最初に2行目の人物を見つけるパターンを決定します。

次のスナップショットからわかるように、2番目の人のIDは<td id = "ID">および</td>で囲まれており、このパターンを持つデータの2行目です。 これを使用して、情報を抽出する正確なパターンに一致させることができます。 このページから2つの情報、人物IDと人物名を抽出したいので、フィールドは次のように定義されています-

HTMLページのソースコード

JMeterを起動し、スレッドグループを追加します*テスト計画→追加→スレッド(ユーザー)→スレッドグループ*。

次に、サンプラーHTTPリクエストを追加し、テスト計画を選択して、右クリック*追加→サンプラー→HTTPリクエスト*を入力し、以下に示すように詳細を入力します-

  • 名前-管理
  • *サーバー名またはIP *-localhost
  • ポート番号-8080
  • Protocol -これを空白のままにします。つまり、プロトコルとしてHTTPが必要です。
  • パス-jmeter/indexl

HTTPリクエストサンプラー

次に、正規表現エクストラクターを追加します。 HTTPリクエストサンプラー(管理)を選択し、[追加]→[ポストプロセッサ]→[正規表現抽出]を右クリックします。

正規表現エクストラクター

次の表は、上記のスクリーンショットで使用されるフィールドの説明を提供します-

Sr.No Field & Description
1

Reference Name

抽出されたテストが保存される変数の名前(refname)。

2

Regular Expression

抽出されるテキストが照合されるパターン。 抽出されるテキストグループは、文字「(」および「)」で囲まれています。 「。?」を使用します<td ..> .. </td>タグで囲まれたテキストの単一インスタンスを示します。 この例では、式は− <td id = "ID">(?)</td> \ s <td id = "Name">(+?)</td> \ s

3

Template

'('および ')'で囲まれたパターンの各グループの順序に従って、変数Personのメンバーとして配置された抽出テキストの各グループ。 各グループはrefname_g#として保存されます。refnameは参照名として入力した文字列で、#はグループ番号です。 グループ1を指す$ 1 $、グループ2を指す$ 2 $など。 $ 0 $は、式全体が一致するものを指します。 この例では、抽出するIDはPerson_g1に保持され、名前の値はPerson_g2に保存されます。

4

Match No.

2番目のボランティアに一致するこのパターンの2番目の出現のみを抽出する予定なので、値2を使用します。 値0はランダムなマッチングを行いますが、ForEachコントローラーでは負の値を使用する必要があります。

5

Default

アイテムが見つからない場合、これがデフォルト値になります。 これはオプションのフィールドです。 空白のままにしてもかまいません。

このテスト計画の結果をキャプチャするリスナーを追加します。 スレッドグループを右クリックし、追加→リスナー→結果ツリーの表示オプションを選択して、リスナーを追加します。

テスト計画を_reg_express_test.jmx_として保存し、テストを実行します。 次のスクリーンショットに示すように、出力は成功します-

正規表現の出力