システム開発において、負荷テストはシステムが想定通りに動くかどうかを確認するテストです。例えば、テスト実施によりキャパシティが想定しているよりも足りていなかったり、新たな障害が見つかったりすれば、起こりうるトラブルに対して未然に防ぐことができるでしょう。
しかし、テストに関する知識や時間不足などにより、負荷テストが十分に実施できていないケースもあります。この記事では、負荷テストの流れや準備するべきことを詳しく説明します。
負荷テストのやり方と流れ

負荷テストは実施目的を設定してから、結果報告の共有まで次の7つのプロセスが挙げられます。
- 実施目的の設定
- 現状の調査
- 負荷テストの設計
- 負荷テストの準備
- 負荷テストの実施
- 取得結果の分析
- 結果報告と共有
1.実施目的の設定
負荷テストのおいてまずは実施目的の設定を行っていきます。負荷テストには様々な目的があり、例えばリリース前のシステムと運用中のシステムであれば設定するべき目的が異なります。
目標設定において次のような例が挙げられます。
- 性能を向上する
- 負荷をかけた時に発生している障害の原因を明確にする
- 事前に定義をした要件を満たしているかどうかを証明する
- 負荷に耐えられる度合いを事前に把握する
- 運用中のシステムにおいて現場調査をする
2.現状の調査
すでに運用しているシステムにおいてインフラ構成やアクセス状況 リソース状況などを負荷テストによって把握することが可能です。適切な調査をすることによってどのようなアクセスに繋がり、どのような問題が起きるのかなどを予測できます。情報を予測することで負荷テスト設計ができるのです。
この段階で十分なテストができていないと、場当たり的な対応が多くなってしまい結果的に時間や手間がかかってしまいます。
3.負荷テストの設計
設定したテストの目的を達成するために、どのように進めていくのかを明確にするのが負荷テストの設計です。シナリオや利用データ、積み上げデータなどの他に負荷テストツールを選ぶことも含まれます。
負荷テストの設計内容によって、このあとの手間やプロセス、さらには成功する確率にも影響があります。データをはじめ漏れがないようにしましょう。
4.負荷テストの準備
負荷テストの設計が終わったら、いよいよ負荷テストの準備を始めていきます。負荷テストの環境構築をはじめ、データ積み上げやテストデータの準備、システムの改修などさまざまな準備プロセスがあります。
中でも、シナリオの作成やテストの対象となるデータによってもかかる時間が変わるので注意が必要です。最終的にですとデータの確認が必要ですが、このプロセスも時間がかかることが一般的です。
5.負荷テストの実施
負荷テストの準備が終わったら実施をします。それぞれのテストにおいて、進め方のポイントや重要な指標などを明確にするようにしましょう。
6.取得結果の分析
テストが終わったら、スロークエリやサーバリソース状況など、劣化が進んでいるタイミングのデータについて分析をしましょう。これらの分析結果を元にボトルネックの状態であるか、目的が達成されているかなどを把握します。仮にボトルネックが見つかった場合は、対応が求められます。
7.結果報告と共有
最終的なテスト結果について、ここまで説明した全てのプロセスにおいて報告書を作成して担当者と共有します。この結果をもとに、テスト終了なのかまたチューニングが必要なのかを議論します。ここで終了となれば、負荷テストが完了です。
負荷テストをやる前に準備すべき4つのこと

負荷テストをはじめる前に、次の4つを準備しましょう。
- テストスクリプトを作成する
- テストデータの準備する
- 監視項目を設定する
- 実運用環境の負荷を確認する
1.テストスクリプトを作成する
テスト結果の内容を基準として、負荷テストを進めるためのテストスクリプトを作ります。
テストスクリプトには、シナリオの定義やログの出力設定、リスクエストの定義などさまざまな条件が挙げられます。これらの条件を組み合わせることで、テストパターンを作ることが一般的です。
2.テストデータの準備する
次にテストで必要な条件にあっているデータを準備します。条件としてはデータの容量や件数などが挙げられます。
3.監視項目を設定する
テストで出た結果を分析するときに活用する監視項目を設定し、スムーズな分析を行います。取得する情報はテストによって変動します。
4.実運用環境の負荷を確認する
負荷テストを行う際、実運用環境の負荷を確認することが重要です。実際に運用する時と同じ環境でテストをすることで、効果的な結果を得られます。
負荷テストのやり方でよくある3つの質問

負荷テストのやり方でよくある次の質問について説明しています。
- スループットとレイテンシとは何ですか?
- 負荷テスト体制を構築するおすすめの方法はありますか?
- 負荷テストをやる目的は何ですか?
質問1.スループットとレイテンシとは何ですか?
スループットとレイテンシとは、アプリケーションの性能を測定するための指標です。
スループットは時間当たりのデータ転送量や処理能力、レイテンシは転送を始めてからデータが送られるまでの時間です。レイテンシが長ければ長いほど、通信が遅延していることになります。
質問2.負荷テスト体制を構築するおすすめの方法はありますか?
負荷テスト体制を構築するためには、テスト設計や計画などにおける専門家を育成することが重要です。他にも、テストの結果を元にして問題を解決するためのスキルや適切なテストスクリプトを作成することなど様々な点が挙げられます。
質問3.負荷テストをやる目的は何ですか?
負荷テストは、システム開発プロジェクトにおいて結合テストの最後に実施されることが一般的です。運用した時点で負荷がかかったとき想定の動きをするかどうかのテストを行います。
まとめ

負荷テストは、負荷をかけた時の処理性能をはじめとした動きを確認するテストです。そのため、システムの耐久性や性能を計測することが大きな目的です。
負荷テストは適切なやり方でないと必要なデータを得られない可能性があります。この記事を参考に、テストを実施してみてください。