ソフトウェアパフォーマンステスト

パフォーマンステスト (英: performance testing)はソフトウェア品質保証では、一般に、特定のワークロードでの応答性と安定性の観点からシステムがどのように機能するかを判断するために実行されるテスト手法である。また、スケーラビリティ、信頼性、リソース使用量など、システムの他の品質属性を調査、測定、検証、または検証するのにも役立つ。

パフォーマンスエンジニアリングのサブセットであるパフォーマンステストは、システムの実装、設計、およびアーキテクチャにパフォーマンス標準を組み込むことを目的とした計算機科学の実践である。

種類

負荷テスト 

負荷テストは、パフォーマンステストの最も単純な形式である。負荷テストは通常、特定の予想される負荷の下でのシステムの動作を理解するために実行される。負荷をかける例として、設定された期間内に特定の数のトランザクションを実行するアプリケーションソフトウェアで予想される同時ユーザー数を増やしテストをする。このテストは、すべての重要なビジネスクリティカルトランザクションの応答時間を示す。データベース、アプリケーションサーバなどもテスト中に監視される。これは、アプリケーションソフトウェアとソフトウェアがインストールされているハードウェアのボトルネックを特定するのに役立つ。

ストレステスト 

ストレステストは通常、システム処理能力の上限を理解するために行われる。この種のテストは、システムへの極端な負荷に関するシステムの堅牢性を判断するために行われ、管理者が、システムへの負荷が予想される最大値を大幅に上回った場合にシステムが十分に機能するかどうかを判断するのに役立つ。

ソークテスト 

耐久性テストとも呼ばれるソークテストは、通常、システムが継続的な予想負荷に耐えられるかを判断するために実行される。ソークテスト中、潜在的なメモリリークを検出するためにメモリ使用率を監視する。また、重要だが、見過ごされがちなのは、パフォーマンスの低下である。つまり、長期間の持続的なアクティビティの後のスループットや応答時間が、テストの開始時と同じかそれ以上であることを確認する。これには、基本的に、システムにかなりの期間、かなりの負荷をかける必要がある。継続的な使用下でのシステムの挙動を見るのが目的である。

スパイクテスト 
スパイクテストは、非常に多くのユーザーによって生成される負荷を突然増減し、システムの動作を観察する。負荷の劇的な変化によりパフォーマンス低下、システム障害、処理が継続できるかを判断する。

ブレークポイントテスト 
ブレークポイントテストは、ストレステストと似ている。システムが所定の障害状態を監視している間、時間の経過とともに負荷を増やしていく。ブレークポイントテストは、システムが必要な仕様またはサービスレベル契約に従って実行できる最大キャパシティを決定するため、キャパシティテストと呼ばれることもある。固定環境に適用されたブレークポイント分析の結果を使用して、クラウド環境でスケールアウトイベントをトリガーする必要のあるハードウェアまたは条件の観点から最適なスケーリング戦略を決定できる。

構成テスト 
負荷の観点からパフォーマンスをテストするのではなく、システムの構成要素に対する変更がシステムのパフォーマンスと動作に与える影響を判断するためのテストである。一般的な例は、サーバロードバランスについて、さまざまな方法を試すことが挙げられる。

分離テスト 
分離テストはパフォーマンステストに固有のものではないが、システムの問題を引き起こしたテストの実行を繰り返す必要がある。このようなテストでは、多くの場合、障害部分を分離してテストを行う。

インターネットテスト 
これは、Facebook、Google、Wikipediaなどのグローバルアプリケーションが、パフォーマンスを測りたいユーザーがいる地域の負荷ジェネレーターからパフォーマンステストを行うという、比較的新しい形式のパフォーマンステストである。これらのテストを正常に実行するには、通常、膨大な量の準備と監視を必要とする。

パフォーマンス目標の設定 
パフォーマンステストはさまざまな目的に役立つ。

 システムがパフォーマンス基準を満たしていることを示すことができる。
 2つのシステムを比較して、どちらが優れているかを見つけることができる。
 システムまたはワークロードのどの部分がシステムのパフォーマンスを低下させているかを測定できる。

多くのパフォーマンステストは、十分に現実的な目標指向のパフォーマンス目標を設定せずに実施される。ビジネスの観点からの最初の質問は、常に「なぜパフォーマンステストを行うのか」ということである。これらの考慮事項は、テストのビジネスケースの一部である。パフォーマンスの目標はシステムのテクノロジーと目的によって異なるが、常に次のいくつかを含める必要がある。

関連項目 
 ストレステスト
 ベンチマーク
 ウェブサーバーベンチマーク

外部リンク 
 The Art of Application Performance Testing - O'Reilly  (Book)
 Performance Testing Guidance for Web Applications (MSDN)
 Performance Testing Guidance for Web Applications (Book)
 Performance Testing Guidance for Web Applications (PDF)
 Every Computer Performance Book (Book)
 Performance Testing Guidance (Online KB)
 Enterprise IT Performance Testing (Online KB)
 Performance Testing Videos (MSDN)
 Online Load Testing Tools
 "User Experience, not Metrics" and "Beyond Performance Testing"
 "Performance Testing Traps / Pitfalls"
 "Performance, Load, Stress or Endurance Test? Which do you want?"

ソフトウェア最適化
ソフトウェアテスティング