応答時間や処理能力が要求を満たすかを確認するテスト。
性能テストとは、システムの応答時間や処理能力が、あらかじめ決められた要求性能を満たしているかを確認するテストです。「機能が正しく動くか」ではなく「十分に速く・たくさん処理できるか」を評価します。
どれだけ機能が正しくても、検索に10秒かかるようでは実用になりません。そこで「検索結果は1秒以内に返す」「1秒あたり500件処理する」といった要求基準(非機能要件)を決め、それを満たすかを実際に測ります。
身近な例で考えると、自動車のスピードや燃費の測定に似ています。エンジンが動くこと(機能)の確認とは別に、「100km/h まで何秒で到達するか」「1Lで何km走れるか」を測って基準を満たすか調べる──これが性能テストの考え方です。上の図解で、実測値が要求基準を満たすか判定する流れを確認できます。
性能テストで測る主な項目は次のとおりです。「速さ」と「量」は別の指標である点に注意します。
・レスポンスタイム(応答時間):1件の要求を出してから結果が返るまでの時間。「速さ」を表し、短いほど良い
・スループット:単位時間あたりに処理できる件数。「処理量・処理能力」を表し、大きいほど良い
・ターンアラウンドタイム:依頼してからすべての結果を受け取り終わるまでの総時間
・リソース使用率:CPU(=計算を行う部品)やメモリ(=作業用の記憶領域)をどれだけ使っているか
レスポンスタイムとスループットは混同しやすいですが、別物です。レスポンスタイムは「1件がどれだけ速いか」、スループットは「全体でどれだけたくさんさばけるか」を表します。レジ1台の会計が速くても(応答時間が短い)、店全体でさばける客数(スループット)はレジの台数次第、というイメージです。
これらの測定値が悪い場合は、プログラムや設定を見直して速くするチューニング(性能改善)を行い、再度測定して基準を満たすまで繰り返します。
性能テストと負荷テストは関連が深く、混同されがちですが、確認したい主目的が異なります。
| 観点 | 性能テスト | 負荷テスト |
|---|---|---|
| 主な目的 | 要求性能を満たすか確認 | 高負荷でも安定して動くか確認 |
| かける負荷 | 通常の想定利用条件 | 想定される高い負荷 |
| 見たいこと | 速さ・処理量の達成度 | 限界・安定性・落ちないか |
| 位置づけ | テストの大分類 | 性能テストの一種 |
性能テストは通常の利用条件で「要求どおりの速さ・処理量が出るか」を確認します。一方、負荷テストはあえて高い負荷をかけて「混雑時でも落ちずに安定して動き続けるか」を確認します。負荷テストは性能テストの一種と位置づけられます。
身近な例で考えると、飲食店のようなものです。性能テストは「通常の客足のとき、料理が何分で出るか」を測る確認、負荷テストは「ランチの大混雑でも店が回り続けるか」を試す確認に当たります。