1. 性能試験とは
性能試験は、システムが所定の要件を達成し、ユーザーが期待する性能を満たしているかどうかを検証するためのテストの一種です。アプリケーションやシステムが応答時間、スループット、負荷などの観点で適切に機能するかを確認することを目的としています。
2. 性能試験の種類
2.1 負荷テスト
システムに一定の負荷をかけ、その応答を監視する。これにより、システムが設計上の要件を満たすか、どれだけの同時ユーザーをサポートできるかを確認する。
2.2 ストレステスト
極端な条件下での動作を確認するため、通常の負荷を超えるようなテストを行う。これにより、システムの限界や耐久性を確認できる。
2.3 耐久性テスト
長時間にわたる負荷をかけ、システムが持続的に正常に機能するかを確認する。これにより、メモリリークやリソースの枯渇などの問題を特定できる。
2.4 スケーラビリティテスト
システムの拡張性を評価し、増加する負荷に対してどれだけ効果的にスケールするかを検証する。
2.5 応答時間テスト
システムがユーザーからのリクエストにどれだけ速く応答できるかを測定する。
3. 性能試験の目的
- 性能の確認: 設計された性能要件(応答時間、スループット、処理能力など)を満たしているかを確認。
- スケーラビリティの検証: ユーザー数やトランザクションの増加に対して、システムがどれだけスケーラブルかを評価。
- 限界の特定: システムがどれだけの負荷に耐えられるか、どのような条件で限界を迎えるかを特定。
- 耐久性の確認: 長時間の運用で安定して動作するかを検証し、メモリリークやリソース過剰使用の問題を特定。
- 品質の向上: バグや性能の低下を早期発見し、修正することでユーザーエクスペリエンスを向上。
- リソースの最適利用: 不要なリソース消費を抑え、最適なハードウェア・クラウドリソースの選択を支援。
- コスト削減: 性能最適化によるインフラコストの削減。
4. 性能試験の評価指標
- 応答時間: ユーザーのリクエストに対するシステムの応答速度。
- スループット: 単位時間あたりに処理されるトランザクションやリクエストの数。
- 負荷耐性: システムが特定の負荷や同時ユーザー数にどれだけ耐えられるか。
- エラーレート: システムが正しく応答しなかった割合。
- スケーラビリティ: 負荷の増加に応じてどれだけ効果的にスケールできるか。
- 限界の特定: どの程度の負荷まで耐えられるか、どの条件で限界に達するか。
- リソース使用量: CPU、メモリ、ディスクなどのリソースの利用状況。
- 耐久性の確認: 長時間運用においてメモリリークやリソース不足がないか。
5. 性能試験の実施方法
5.1 指標値の測定方法
応答時間
- ツールでの測定やリクエストログからAPIの処理時間を算出。
リソース使用量
試験実施中にLinuxの以下のコマンドでAP・DBサーバーをモニタリングし、ログを取得。
- CPUの監視
top
: リアルタイムでCPU使用率やメモリ使用量を表示。mpstat
: CPUごとの使用率を確認。
- メモリの監視
sar
: メモリ使用率、メモリフリー、キャッシュ、バッファ情報を取得。vmstat
: メモリやスワップの使用状況を表示。
- JVMの統計情報
jstat
: GC(ガベージコレクション)の情報を取得。
5.2 実施している試験
- 画面からの打鍵による手動試験。
- JMeterを使用した各APIの実行時間の測定。
6. JMeterとは?
JMeterは、Webサービスを中心にさまざまなアプリケーションの負荷テストおよびパフォーマンス計測を行えるツールです。
- 正式名称: Apache JMeter
- 主な機能:
- スレッド数(アクセスするユーザー数)やループ回数(1スレッドが繰り返す回数)を自由に設定可能。
- GUIベースで簡単に操作でき、スクリプトを利用した自動化も可能。
7. まとめ
性能試験は、システムが期待通りに動作することを確認し、潜在的な問題を発見するために不可欠です。適切なテストを実施することで、システムの信頼性を向上させ、ユーザー体験を最適化できます。今後も性能試験の手法を活用し、より高品質なシステム開発を目指しましょう。
コメント