JMeterテストと非静的GET / POSTパラメーター
質問
特定のクエリ文字列と投稿変数の値が実行ごとに変化するWebアプリケーションに対してJMetersテストを作成するときに使用する最適な戦略は何ですか。
簡単で一般的な例
- Webページにアクセスします
- フォームに情報を入力します
- [保存]をクリック
- シーンの背後で、データベースに新しいレコードが入力されます
- 入力したレコードを編集したいので、別のWebページに移動します。舞台裏では、作成したばかりの行のデータベースIDを持つパラメーターをページに渡します
上記のテストのステップ5を実行すると、ページパラメーター/データベースIDは毎回変更されます。
現在使用しているワークフロー/戦略は
- 上記のアクションを使用してテストを記録します
- クエリ文字列変数が実行ごとに変化する可能性がある各場所をメモします
- XPathまたは正規表現エクストラクターを使用して、応答からJMeter変数に値を引き出します
- ハードコーディングされたパラメーターの適切なインスタンスをすべて上記の変数に置き換えます。
これは機能し、ある程度自動化できます。しかし、それは退屈になる可能性があり、エラーが発生しやすく、脆弱です。この状況を処理するより良い/一般的に受け入れられている方法はありますか? (または、これがほとんどの人が単にログを再生するためにJMeterを使用する理由ですか?(-;)
解決
あなたの正しい道のように聞こえます。 JMeterで実現できる最善の方法は、正規表現またはxpathポストプロセッサでページ変数を抽出することです。ただし、これはスケーラブルなソリューションではなく、維持や成長がますます難しくなるという点で、あなたの絶対的な正解です。
ポイントに到達した場合、この種の問題に特化したツールを検討することをお勧めします。 WatirなどのWebテストツールを使用すると、変更された投稿パラメーターを自動的に処理します。ただし、データベースの更新が必要な場合はパラメーターを抽出する必要がありますが、Watirを使用するとコードを再利用できるため、問題が軽減されます。
他のヒント
JDBCアサーション内のJMeter変数にパラメーターを保存することにより、JMeterで同様のシナリオをテストすることに成功しました。次に、http get / postを実行し、BSFアサーションを使用して、javascriptが応答の複雑な検証を行います。役に立てば幸いです