Silk Performer Recorder で記録されたスクリプトは、負荷テストを行う際の開始点として十分機能します。しかし、このような手を加えていないスクリプトには、通常 2 つのマイナス面があります。それは、現実的な結果を生成しない上に、特にロバストでもないことと、再生中にエラーを起こす可能性があることです。
可能な限りスクリプトをロバストにするには、負荷テストを開始する前にスクリプトのカスタマイズを行うことを推奨します。スクリプトをカスタマイズする場合、次の点を考慮します。
- 適切なテスト データ: 多くのアプリケーションは、適切なテスト データを必要とします。仮想ユーザーが正しいアクセス権を持つ適切なユーザー名を利用するようにスクリプトをカスタマイズする必要があります。仮想ユーザーがトランザクションを同時に実行する場合、別のユーザー
ID を定義する必要があるでしょう。
- 動的コンテンツ: リンク名が変更されたり、ある項目が利用できなくなったり、Web ショップの製品が在庫切れになるなど、多くの場合、アプリケーションのコンテンツは動的です。また、現実のユーザーはアプリケーションのさまざまな経路を辿ります。しかし、記録したスクリプトは、特定の経路のみを再生します。経路は、時間、ユーザー、あるいはその他の条件によって変わるかもしれません。
- アプリケーションが使用できない: 負荷テストの開始時に、テスト対象アプリケーションが使用できない、準備が完了していない、データベース接続が確立していない、などの状況にある場合があります。スクリプトは、このような状況を適切に処理する必要があります。
- タイミングの問題: BDL 関数でデフォルトのタイムアウト設定を使用すると、テスト シナリオにふさわしくない場合があります。特定の要求に合わせ、エラーを回避するために、これらのタイムアウト設定を調整します。
- 同時性の問題: 同時性の問題を制御することもエラーを避けるのに役立ちます。データベースは同時に一部の仮想ユーザーに対してだけにしか、応答できないかもしれません。同時性を制御することで、仮想ユーザーをより現実的に動作させることにもなります。現実のユーザーは、通常、ある特定のタスクを同時ではなく、重ならないようにして実行します。Silk
Performer のシリアル化機能、同期機能、待ち合わせ機能によって、仮想ユーザーに必要な動作を細かく制御できます。
スクリプトをよりロバストにするには、次のようなエラー シナリオも考慮する必要があります。エラーの発生時に仮想ユーザーがどのように動作するかを考えます。仮想ユーザーは次の動作を行うことができます。
- トランザクションの残りの部分をスキップ: このアクションは、仮想ユーザーが Web ショップのアイテムを購入しようとしたが、在庫が無かった場合に適切な動作になるでしょう。仮想ユーザーは特定のトランザクションをスキップし、次のトランザクションの実行を続けることができます。このような動作は、return
文で実現できます。
- 負荷テストの停止: このアクションは、データベース接続が確立できず、接続がないとテスト対象アプリケーションを使用できない場合に適切な動作になるでしょう。このような場合、負荷テストを続けることはできません。このような動作は、halt 文で実現できます。
- エラーを処理してトランザクションの実行を続行: これは、仮想ユーザーがログイン ページで誤ったパスワードを入力した場合に有効でしょう。スクリプトがログイン エラーのようなエラーを処理できる場合、仮想ユーザーは他のパスワードでログインを再試行し、トランザクションの残りの実行を続けることができる可能性があります。このような動作は、エラー処理関数で実現できます。