JMeterでHTTPサービスをテストしようとしています。 HTTPサービスでは、単純なベアラートークンメカニズムによる認証が必要です。私は次のように進めようとしています:
これまで、リクエストをポストし、トークンを取得し、正規表現でトークンを抽出し、変数に保存して、変数が適切に設定されていることをアサートすることができました。
問題は、変数をHTTPヘッダーに入れることです。 「Header Manager」では、値は次のように設定されます。
残念ながら、次のリクエストが発行されると、認証ヘッダーの値は「Bearer」になります。インターネットを検索した結果、ヘッダーは スレッドが開始する前に構成されている であると信じ込まされました。これにより、「ベアラー」
私のサンプリング/グループ化/ネストは次のとおりです。
すべてのテストがパスして、制限されたリソースを取得しますが、承認ヘッダーの形式が正しくないため、400で失敗します。
私は本当に明らかな何かを見逃している、および/またはこの問題に間違った方法でアプローチしているように感じます。
2017年8月に編集:
次のように Beanshell PreProcessor を使用して、認証ヘッダーを動的に構築できます。
次のコードを使用して、同じリクエストの子としてBeanshell PreProcessorを追加します。
import org.Apache.jmeter.protocol.http.control.Header;
sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("BEARER")));
これは、BEARER
変数を使用して完全に動的なヘッダーを構築します。
sampler
は HTTPSamplerProxy クラスの省略形で、親Samplerインスタンスへのアクセスを提供しますvars
は JMeterVariables クラスのインスタンスであり、現在のコンテキスト(通常は現在のスレッドグループ)の境界内で使用可能なすべてのJMeter変数への読み取り/書き込みアクセスを許可します。BeanshellスクリプトとBeanshellクックブックの種類の詳細については、 BeanShellの使用方法:JMeterのお気に入りの組み込みコンポーネント ガイドを参照してください。
このフォーラムの投稿を参照してください: http://www.jmeter-archive.org/Variables-in-HTTP-headers-td4579331.html
ログインをコントローラーの下に移動する必要があります。私の場合、Only Once Controllerを使用しました。次に、コントローラーの後に、「Bearer $ {BEARER}」としてAuthorizationヘッダーを持つHTTPヘッダーマネージャーを追加すると、変数を読み取ります。これは、すべてのリクエストでBeanShell PreProcessorを複製する必要がないため、他の回答よりも優れています。私のツリーは次のようになりました。