2

Web サイト (URL) が Drupal ベース (サイトからの HTTP 応答に完全に基づく) であるかどうかを提案する JMeter テスト計画をセットアップし、それを環境にある既存のデータと比較したいと考えています。(サイトのファイルシステムを調べるのではなく、HTTP アプローチを使用するのは「不確か」であることは認識していますが、このアプローチがどれほど役立つか興味があります)

JMeter コマンド ラインは次のようになります。

JMeter -t "DrupalAssertions.jmx" -Jurl=http://my.dot.com -Jdrupal=true

ここで、テストする URL と、サイトが Drupal ベースであるかどうかについての最良の推測を示す追加のプロパティ「drupal」を提供します。

私のテスト計画では、HTTP 要求を追加して、URL のページの HTML コンテンツを返します。その後、パターンをテストする応答アサーションを正常に追加できます (たとえば(?i)(drupal)、悲しいことに不足しているパターンの場合)。それが応答に含まれているかどうかを確認します。

それはうまく、または期待どおりに機能しますが、私がやりたいのは、「drupal」プロパティの値を、同じ応答アサーションでのそのパターン テストの結果と比較することです。ここで簡単なものが欠けていることはわかっていますが、その方法がわかりません。

次のような表現を使用してみたいと思います。

(?i)(drupal) == ${__P(drupal)} 

パターンで、しかしそれはうまくいきません。Compare アサーションの名前は有望に見えますが、プロパティを比較に組み込む方法がわかりません。

更新: PMD UBIK-INGENIERIE によって提案されたアプローチは機能します。次のような正規表現エクストラクタを使用しました。

<RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Drupal in Response" enabled="true">
  <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  <stringProp name="RegexExtractor.refname">drupalInResponse</stringProp>
  <stringProp name="RegexExtractor.regex">(.*drupal.*)</stringProp>
  <stringProp name="RegexExtractor.template">$0$</stringProp>
  <stringProp name="RegexExtractor.default">__false__</stringProp>
  <stringProp name="RegexExtractor.match_number">1</stringProp>
</RegexExtractor>

この BeanShell アサーションが続きます。

// Variable "drupalInResponse" is "__false__" by default
if ( !(vars.get("drupalInResponse").equals("__false__") ) ) {
  vars.put("drupalInResponse","true");
}
else {
  vars.put("drupalInResponse","false");
}

print("\n\nThe value of property 'drupal' is: " + props.get("drupal") + "\n");
print("\n\nThe value of variable 'drupalInResponse' is: " + vars.get("drupalInResponse") + "\n");

if (vars.get("drupalInResponse").equals( props.get("drupal") ) ) { 
  print("Site Drupalness is consistent with your beliefs"); 
} 
else { 
  print("You're wrong about the site's Drupalness"); 
  Failure = true; 
  FailureMessage = "Incorrect Drupal assumption"; 
}

正規表現エクストラクタで、関心のあるパターンに一致しないと思われるデフォルト値を設定し、BeanShell アサーションの「drupal」プロパティを使用して、醜い詳細な Java 比較を行いました。

アサーションが2つの部分を持つのではなく、単一のコンポーネントで作成できることを何とか望みますが、「機能する」ことについて議論することはできません:)

4

1 に答える 1

1

最初のパターンで正規表現エクストラクタを使用できます

次に、変数を使用して drupal プロパティと比較する Beanshell アサーションを使用します。

于 2012-12-06T22:49:19.683 に答える