質問: インターフェイスの入力パラメータ、アドレス、リクエスト メソッドはすべて正しく設定されていますが、リクエストは依然として 500 を返します。システム エラーが報告されるのはなぜですか?
日々のインターフェイス テストのプロセスでは、完全なインターフェイス HTTP リクエストには通常、リクエスト ヘッダー、リクエスト本文、応答ヘッダー、応答本文、リクエスト メソッド (post/get など) の 4 つの部分が含まれていることを誰もが知っています。テストするときは、リクエストの入力パラメータ、つまりリクエスト本文の情報の方が重要なので、リクエスト ヘッダーの重要性は無視されます。情報ヘッダーが正しく定義されていない場合、インターフェイス要求は失敗します。
この記事では主に、情報ヘッダーの機能を簡単に理解します。Jmeter は、HTTP ヘッダー マネージャー情報ヘッダー マネージャーを提供します。これは、仕様クライアントとサーバー間の HTTP インターフェイス リクエストのデフォルト仕様を定義するために使用されます。
注: HTTP リクエスト メソッドは 8 つありますが、実際のアプリケーションで一般的に使用されるのは get と post で、他のリクエスト メソッドもこれら 2 つのメソッドを通じて間接的に実装できます。
一般的に使用される標準
一般的に使用される HTTP インターフェイスのリクエスト ヘッダー フィールドは次のとおりです。
l 同意する
受け入れられるコンテンツ タイプを設定する
l ユーザーエージェント
ユーザー エージェントの文字列値は通常、クライアントが使用するオペレーティング システム/ブラウザの名前とバージョンをサーバーに伝えるために使用されます。
l コンテンツタイプ
リクエスト本文の MIME タイプ (POST および PUT リクエストに適用可能) を設定し、実際に返されるコンテンツのコンテンツ タイプ (一般的に使用される application/json;charset=UTF-8) をクライアントに伝え、インターフェース応答によって返されるデータを定義します。 json形式、エンコード形式はUTF-8です。
l コンテンツの長さ
リクエストボディのバイト長を設定します
l エンコーディングの受け入れ
受け入れられるエンコード形式を設定する
l 言語の受け入れ
受け入れられる言語を設定する
l 原点
クロスオリジン リソース リクエストを特定します (サーバーに Access-Control-Allow-Origin 応答フィールドを設定するようにリクエストします)。
l リファラー
前のページのアドレスを設定すると、前のページの接続は現在のリクエストを指します。つまり、現在のリクエストがページ A で送信される場合、リファラーはページ A の URL アドレスになります。
l クッキー
Cookie はリモート サーバーから返されるユーザー ID 情報です。この情報はクライアントに保存されます。クライアントは操作を実行するたびに、Cookie を使用して HTTP プロトコルを通じてサーバーと通信します。ID 情報が正しい場合にのみ、インタラクションが成功すること (ログイン後に操作する必要があるインターフェイスでは最も一般的です)。
l Set-Cookie
サーバーがユーザーの ID を識別できるように、一部のユーザー情報を保存するために使用される HTTP Cookie を設定します。通常、これはサーバーから返されるユーザーの ID 情報です (ログインを必要とするほとんどのインターフェイスがより一般的です)。
……
ヘッダー情報の取得方法
インターフェイスの情報ヘッダーにどのような内容が定義されているかは、次のチャネルを通じて取得できます。
1. インターフェースドキュメントの開発と提供
2. パケット キャプチャ ツール charles を使用して、リクエストのヘッダーをキャプチャして表示します。
次の図は、方法 2、パケット キャプチャ ツールを通じて表示されたインターフェイスのリクエスト ヘッダー (Request-Headers) を示しています。
練習
目標: 特定のシステム ログイン インターフェイスは、正常にログインするために jmeter の HTTP リクエストと HTTP ヘッダー マネージャーを使用して、json 形式で返される応答データ (Response) を定義しました。
構成
メニューパス
設定内容:
パケット キャプチャ ツール charles から、インターフェイスは Content-Type: application/json;charset=UTF-8 を定義する必要があります (応答データは json 形式で、エンコード方式は UTF-8 です)。
未定義のヘッダー
以下の図の POST ログイン インターフェイスでは、HTTP ヘッダー マネージャーが設定されません。jmeter スクリプトを実行してインターフェイス リクエストを開始すると、デフォルトの Content-Type: text/plain (プレーン テキスト形式) になるため、リクエストはエラーを報告し、ステータスコード500を返します。
ヘッダーを正しく定義する
情報ヘッダーを正しく定義します: Content-Type: application/json
情報ヘッダーが正しく構成されると、jmeter スクリプト インターフェイスを実行するリクエストが成功し、ステータス コード 200 が返されます。
その他の一般的なメディア形式
text/html : HTML形式
text/plain : プレーンテキスト形式
text/xml : XML形式
application/xhtml+xml : XHTML形式
application/xml: XMLデータ形式
application/json: JSONデータ形式
……
この記事では、未定義のリクエスト ヘッダー (Headers) が原因で発生するエラー コード 500 のみを説明し、他の原因を除外するものではありません。