負荷テスト


負荷テストとは

大量のデータを投入し、高い負荷をかけて 「ソフトウェアが正常に機能しているか」 確認するテストです。
高負荷が続くと 不具合 が起きてしまう可能性があるためです。

「単体テスト」「結合テスト」だけでは見つけられない不具合がある。
また、想定のユーザー数でも耐えることができることを確認するためのテストでもあります。

負荷テストツール

どんな負荷テスト想定しているかで変わります。

「大規模負荷テスト」「サーバ負荷テスト」「処理単位の応答時間」

高価なものから無償のものまでです。負荷テストツールの選定も大事な負荷テスト計画となりますね。

1.Apache Jmeter

JMeterはJakartaプロジェクトが開発している無償負荷テストツールです。
GUIインターフェースを使ってかなり細かく負荷テストのシナリオを設定する事ができます。

設定例
レスポンスタイムが3秒以内を目標とし、1秒あたり、どれくらいのユーザー数まで問題なく動作するかを確認する。スレッド数(アクセスするユーザー数):Ramp-Up期間(秒)(スレッド数に対して、何秒以内に処理するかの設定):ループ回数(テストケースの繰り返し設定): 無限ループ

総リクエスト数 = スレッド数 × ループ回数

スレッド数:60
Ramp-Up期間(秒):60
ループ回数:10

※1秒で1アクセスという意味になります。
これは、サービスによって設定値が変わってきます。

スレッド数:6
Ramp-Up期間(秒):60
ループ回数:10

※10秒で1アクセスという意味になります。

ちなみに、ヤフーの「災害情報表示機能」は、1秒間あたり数万単位のアクセス
Googleアナリティクスのリアルタイムレポートなどで確認。
この結果に合わせてECサイトであれば、負荷テストを実行する。

2.httperf

httperfは、コマンドライン負荷テストツールです。

3.The Grinder

Javaで負荷分散テストができるフレームワークです。

4.HP LoadRunner software

ページ単位に負荷をかけることができる。また、ExcelやPDFでファイルを出力できる。サポートもあり。価格が何百万もするのがネックぐらい。

5.Load Impact

毎月5回まで無料。無料枠を超えた場合、10回/$30のクレジット購入となります。

6.ab(Apache Bench)

Apache Licenseで無償です。

負荷テスト

1.事前調査

・どの箇所に負荷をかけるのか。
・なぜ負荷がかかるのか。
・時間帯によるのものなのか。
・通信は不安定ではないか。
・実稼働時の負荷に耐えられるか。

2.環境の準備

・実行するテスト環境を用意する。
・テストツールををセットアップ。※JMeterを用いた場合、スレッド数(ユーザの人数)、Ramp-Up期間(設定スレッド数に対し、何秒以内に処理するか)、ループ数(テストケースを何回繰り返すか)を設定。スレッドグループを設定。
HTTP認証マネージャ設定

3.試験計画作成と実施

・どれくらいのテストケースが必要なのか。

4.結果の分析と確認

・スレッドの応答時間やスループットの確認
・エラー発生率の確認