シナリオ作成時のエラー発生個所の見つけ方
JMeterを使った負荷テストで、大きな時間を占めるのがシナリオ作成ではないでしょうか。
エラーがステータスコード500で返ってくればわかりやすいですが、入力エラーなどはステータスコード200で返ってくるため、問題の切り分けが難しくなってしまいます。
この記事では、シナリオ作成時のエラーの見つけ方を解説しています。簡単にまとめると次の流れで確認していきます。
- ステータスコードを確認
- データを確認
- レスポンスの中身を確認
1. ステータスコードを確認する
まず初めに行うべきことは、リスナーに出力されるステータスコードを確認することです。エラーのステータスの場合は、下の図のように赤枠に×マークが表示されます。
当然ステータスコードがエラーの場合は、シナリオが正常動作していないことになります。すぐに原因を調べていきましょう。
全て緑色のチェックマークだった場合、ステータスとしてはすべて正常ということが分かります。しかし、油断はできません。ステータスコードが「200 OK」にも拘わらずエラーを起こしている場合があります。
たとえば、必須項目チェックなどの入力チェックです。ユーザの入力としてはエラーですが、システムとしては正常に動作しているため、ステータスコードは200となります。
ブラウザで遷移している分にはわかりやすいのですが、JMeterで実行していると非常に発見しにくいエラーとなります。
全てステータスコード200で動作した場合は、次の2つを確認していきます。
2. データを確認する
直観的にわかりやすいのはデータを確認することです。
たとえば、新規会員登録のシナリオであれば、登録したはずのユーザでログインしてみる。購入のシナリオであれば、購入履歴を見てみる。シナリオで編集されるデータを想定して、ブラウザやSQLで確認していきましょう。
もし、想定している変化がなかった場合はどこかでエラーを起こしている可能性があります。その場合は、レスポンスの中身を確認していきます。
3. レスポンスの中身を確認する
レスポンスの中身は、「結果をツリーで表示」リスナーの応答データを使って確認していきます。応答データには、文字通り応答したデータ、つまりHTMLのテキストが出力されます。ブラウザで遷移した画面と同等のレスポンスが表示されているかを確認します。
応答データの確認には次のような方法が役立ちます。
- 特定のワードが出力されているか
- エラーメッセージが出力されていないか
特定のワードが出力されているか
画面を識別できるワードがある場合、その存在をチェックすることが有効です。ブラウザを使って、想定される画面へ遷移し、画面名など特徴的な言葉を抜き出します。その言葉を、下にある「Search」で検索してヒットしなければ、正常に画面遷移していないことになります。
エラーメッセージが出力されていないか
システム的にエラーメッセージが共通のフォーマットで出力されている場合、エラーメッセージの出力を確認します。
たとえば、「name=”error”」や「エラーコード:xxx」のように特定のパターンが決まっている場合、応答データにパターンに合致する特定文字列が検索でヒットしないことを確認します。
まとめ
シナリオのエラー発見は、視覚的にわかりにくい作業です。今回あげたもの以外にもいい方法があるかもしれません。柔軟な発想でエラーを見つけていきたいですね。
この記事へのコメントはこちら