負荷テスト: 待機時間、間隔、遅延



パフォーマンステストにおけるThink Timeとは?

ロードテストにおけるThink Timeは、パフォーマンステスト中に連続するユーザーアクションの間に発生するシミュレートされた遅延または一時停止を指します。これは、ユーザーが1つのアクションを完了してから次のアクションを開始するまでに考えたり、読んだりするために非アクティブとなる時間を表します。Think Timeはテストシナリオに導入され、より現実的にし、実際のユーザーがアプリケーションとやり取りする自然な行動を模倣するためのものです。

例えば、あるeコマースのウェブアプリのシナリオでユーザーが商品タイルを選択したとします。その後、商品表示ページに移動し、そのページの内容を読み込むために時間をかけ、最終的に「カートに追加」ボタンをクリックします。この商品タイルをクリックしてから「カートに追加」ボタンをクリックするまでの経過時間がThink Timeと呼ばれます。

ロードテストと言うと、多くのユーザーが一斉にサイトやAPIを攻撃するイメージを持つことが多いですが、それは物語の一部に過ぎません。Think Timeはそれと同じくらい重要です。製品の閲覧やアカウントログイン、購入完了など、実際のユーザーの行動をシミュレートするのに役立ちます。それぞれのアクションには自然な一時停止があり、これらを考慮に入れてテストを行うことで、アプリケーションが現実のユーザーの行動に適応できる準備が整います。

Think Timeの利点

  • 現実性: Think Timeを含めることで、システムと連続的に対話しないユーザーの自然な行動を再現します。これによりロードテストシナリオの現実性が高まり、実際のユーザー体験をより反映したものになります。
  • ユーザーシミュレーションの精度: Think Timeはテスト中のユーザー行動を正確にシミュレートするのに役立ちます。ユーザーは通常、コンテンツを読み、意思決定をしたり、アクションを考えたりする時間を過ごします。Think Timeはこれらの自然な一時停止をシミュレーションすることを可能にします。
  • パフォーマンス: Think Timeはリクエスト間でExecution Serverマシンのリソースを解放します。これにより、Execution Server上の他の仮想ユーザー(VU)がリクエストを送信でき、Execution ServerマシンのI/O制約を防ぐことができます。
  • トラブルシューティングの向上: 現実的なThink Timeシナリオは、一時停止なしのシナリオでは明らかでないパフォーマンスのボトルネックの検出を支援します。ユーザーセッションやセッション管理、システム全体の応答性に関連する問題の発見に役立ちます。

Think Timeを使うタイミング

各ユーザーが異なるため、ロードテストにThink Timeを組み込むのは難しい場合があります。ただし良い点として、Think Timeは柔軟に設定でき、複数の値の範囲を検討する必要があります。たとえば、あるユーザーは他よりも長く読んだりフォームにデータを入力したりするかもしれません。

ユーザーがサーバーからのレスポンスを受け取ってから、次のページをリクエストするまでの時間をより正確に再現するために、これらのアクションの間にThink Timeを組み込みます。Think Timeはユーザーシナリオに依存し、ウェブサイトやアプリケーションのデータを使ってThink Timeの値の範囲を決定すべきです。ユーザーがページに費やす中央値の時間を特定する必要があります。

 

パフォーマンステストにおけるPacingとは?

Pacingは、テストを意図したトランザクション毎秒(TPS)のレートで実施するために使用されます。これはビジネスフロー全体の1回の繰り返し間の時間的間隔であり、サーバーに送信されるリクエスト数を制御するのに役立ちます。

 

ロードテストに遅延を導入する重要性

アプリケーションのパフォーマンスを広範囲にリリースする前にテストすることで、タイムアウトや遅いページ応答、ダウンタイムなど、エンドユーザーにとっての潜在的な不便を防止できます。実際的なテスト結果を保証し、問題を見つけるためには、テストシナリオ設計にThink TimeとPacingを組み込むことが不可欠です。

例えば、各同時ユーザーアクション間にThink Timeを導入すると、サーバーはこの遅延を使ってキュー内の保留タスクを処理できます。サーバーは次のタスクを実行し、その後に前のタスクを再訪問します。これは実際のユーザーがいる本番環境のシナリオに非常に近いものです。さらに、Think Timeを組み込むことでユーザーのアプリケーション滞在時間が延長され、サーバーが同時ユーザーを効果的に処理できるかどうかの問題を明らかにします。

アプリケーションテストのための遅延計算

同時仮想ユーザー数、遅延、およびトランザクション毎秒(TPS)はアプリケーションごとに異なります。アプリケーションに必要な遅延を計算するためには、以下の式を使うことができます:

  • ロードテストの期間(秒) * (TPS + 遅延数) * 同時ユーザー数 = 総トランザクション数

例えば、10分間(600秒)のテストで1回のレスポンス時間が5秒のトランザクションを100,000回発生させるとします。3秒のThink Timeを考慮して必要な同時ユーザー数を求める場合、次の計算式を使います:100,000 / (8 * 10 * 60) = 約21ユーザー。この方法で、効果的なロードテストに必要な遅延とユーザー数を特定できます。

LoadViewでのロードテスト遅延の設定

LoadViewはEveryStep Web Recorderを提供しており、ブラウザでのユーザーアクションを記録することでテストシナリオの作成を簡略化します。これはユーザーのステップを忠実に再現し、セレクター、アクション、遅延などのデータポイントをキャプチャします。テストシナリオ作成中に、本物のユーザージャーニーを模倣し、Think Time遅延を含めることが重要です。記録後、ツールは指定した同時ユーザー数で再実行可能なスクリプトを生成します。スクリプトはカスタマイズ可能で、テストのために個々のステップの遅延を編集・更新できます。下記の画像でその様子が示されています。EveryStep Web Recorderスクリプトの編集方法について詳しく見る

ロードテストで正確な結果を得るための最適なアプローチは、アプリケーションとの実際のユーザーインタラクションをシミュレートし、ユーザージャーニーをキャプチャするスクリプトを作成することです。

Add Delays to Script

LoadViewを使うことで、ロードテスト時のユーザー行動を変更するオプションも利用可能です。下記の画像に示されているように、Normal DelayかCustom Delayを選んで、アプリケーションの特定のユーザー行動や遅延を設定できます。

Adjust User Behavior

まとめ:Think Time、Pacing、遅延の重要性

本番環境への展開前にアプリケーションでパフォーマンステストを実施することは非常に重要です。このプロセスの効果は、ベストプラクティスに従い、実際のユーザーアクションを含んだテストシナリオを開発することにかかっています。

本記事では、ロードテストにおけるThink Time、Pacing、遅延の重要性を探りました。これらの要素をロードテスト設計に組み込むことで、高負荷状態でもページのタイムアウト、遅いページ応答、レスポンスタイムの不整合、サーバーエラーなどの問題を事前に検出できます。これらの戦略を採用することで、応答性が高く信頼性のあるアプリケーションやウェブサイトの開発につながります。LoadViewはこのプロセスを効率化し、Think Time、Pacing、遅延をロードテストシナリオに簡単に組み込めるよう支援します。今すぐLoadViewに登録すると、プラットフォームが提供するすべてのロードテストの利点を得られ、初回テストは無料で実施できます!

同時ユーザーテストを
次のレベルへ

無限のスケーラビリティで比類のない機能を体験してください。クレジットカード不要、契約なし。