負荷テストまとめも
負荷テストについて調べたものをちょいっとまとめました。
・負荷テストとは
ハードウェアやソフトウェアに短時間に大量のデータを与えるなどの高い負荷をかけて、
製品が正常に機能しているか調べるテスト。
ハードウェアやソフトウェアの不良の中には、
低い負荷で動作しているときには不具合を起こさないが、
高い負荷で動作させると不具合を起こすという性質を持ったものがある。
また、不具合を起こす確率が非常に低い不良も含まれていることもあり、
通常の使用を想定したテストではなかなか不良が発見できないことがある。
このような不具合を起こす状況が
限定された製品の不良を検知するために行われるのが負荷テストである。
(引用元:http://e-words.jp/w/E8B2A0E88DB7E38386E382B9E38388.html)
・負荷テストを行うことの目的
負荷テストの実施に際して期待される内容は、
「運用時に想定のユーザー数の利用に耐えうるかどうか?」という観点の評価判断となる。
“運用時に”想定のユーザー数で耐えられるかどうか?
という実運用を想定した評価判断が求められる場合には、
様々な角度からシステムの性能を判定する必要があるだけでなく、
数値的な参考指標を取得しておき、
運用時の安全範囲と危険範囲等の境界値の割り出しや、
所定以上のアクセスがあった場合に起きる潜在的な限界点の把握等が求められる。
そのために、要点を絞って効果的に負荷テストを行うアプローチとして
以下の4つのテストパターンが挙げられる。
・性能テスト - スループット(処理能力)
・性能テスト - 応答時間
・限界テスト
・耐久テスト
・性能テスト - スループット(処理能力)
実行結果として得られる数値的指標は大別して以下の2つになる。
・ピーク時の処理量
Webピーク時の処理量は、秒間や分間当りのページ処理数、
リクエスト処理数等でテスト実施結果の中で最も高かった値や平均値を得て、
「システム処理能力の上限を把握するための指標」。
・範囲時間内の通算処理量(実行されたユーザートランザクション数)
30分や1時間等の一定時間内にどのくらいのユーザーの一連の操作が処理されるのか
主として、一つの処理中で時間をかけて複数のアクションを連続実行するようなリクエストについての
システムの一定時間内の通算処理量を計測したい場合に指標とする。
・限界テスト
限界テストとは、仮に想定以上の処理限界に近いアクセスが発生した場合に、
例え応答時間遅延や処理能力低下が起きたとしても、
システムが正常に動作出来るのかどうかを確認する目的のテスト。
正常な限界時の動作としては、
例えば「アクセスが込み合っております。暫くお待ちください」
といったメッセージが限界時に表示されたり、
ユーザーが入力中のデータも、正常に保持または破棄されるというように、
適切に処理能力を超えるリクエストを誘導出来ること。
一 方、以下の例は限界時の振る舞いとしては問題がある。
* 画面にException等のシステム内部のエラーメッセ ージが表示される
* 振り分け処理が正常に機能せず一部の機器に処理が偏る
* ユーザーが入力したデータに間違いが生じたり 失われたりする
* 負荷が正常に戻った後も応答速度や処理能力に問題が残る
* システムダウン、アプリケーションクラッシュ の発生
(引用元:http://www.oracle.com/technetwork/jp/ats-tech/tech/useful-class-8-520782-ja.html)
・負荷テストの実施時間
少数の異常値の影響を少なくするには、
測定時間をある程度長くすることで、良い検証をすることができる。
対象システムにもよるが、
少なくとも1回のテストショットで30分~1時間くらいは継続する必要がある。
・テストの観点(例)
・CPU負荷率(サーバ負荷)
コンピュータで実行中のプログラムがCPUの処理時間を占有している割合。
ある単位時間のうち、OSやアプリケーションソフトが何らかの処理を実行している時間の割合を意味し、
これが0%の場合は何も実行されず待機状態のままであり、
100%の場合はその時間はずっと何らかの処理を行っていたことになる。
CPU使用率が100%になったまま下がらない場合は、
処理能力を超えた膨大な処理要求が溜まっているか、
脱出できない無限ループが実行されているなどプログラムに不具合がある可能性があり、
最悪の場合はユーザの操作を受け付けなくなってしまうこともある。
・Tomcatヒープ領域の使用状況
・Tomcatパーマネント領域の使用状況
→Java Mission Control で監視することができる。