非機能テストとは
- 7 分
Azure Pipelines で機能テストを実行するで、パイプラインに Selenium UI テストを追加しました。 UI テストは、 機能テストの一種です。 このパートでは、パイプラインで実行できる 非機能 テストの種類について説明します。
チームはまず、非機能テストを定義します。 これらのテストのいくつかの種類について説明します。 次に、パイプラインに追加する非機能テストを決定します。
非機能テストと機能テストの比較
Azure Pipelines での機能テストの実行では、機能テストと非機能テストを定義しました。
つまり、 機能テスト は、ソフトウェアの各機能が必要な動作を行うことを確認します。 つまり、機能テストはアプリケーションの機能を検証します。
非機能テスト では、パフォーマンスや信頼性など、アプリケーションの非機能的な側面がチェックされます。 また、インフラストラクチャ コンポーネントなど、アプリではないシステムで非機能テストを実行することもできます。 非機能テストの 1 つの例は、応答時間の遅さなど、問題を引き起こさずにアプリケーションに同時にサインインできるユーザーの数を決定することです。
例として Space Game Web サイトでは、機能テストによって、ランキングが正しく表示され、ユーザーがフィルターを選択したときに正しいレコードが表示されることを確認できます。 非機能テストでは、多数のユーザーが同時に Web サイトに接続した場合でも、ランキング のフィルター処理が 1 秒未満で完了することを確認できます。
非機能テストでは、常に測定可能なものをテストします。 目標は、製品を改善することです。 たとえば、アプリケーションがリソースを使用する効率を向上させたり、多数の顧客が同時に使用する応答時間を改善したりすることで、これを行うことができます。 非機能テストで回答できる質問の一部を次に示します。
- 通常の状況では、アプリケーションはどのように動作しますか?
- 多数のユーザーが同時にサインインした場合、アプリケーションはどのように実行されますか?
- アプリケーションのセキュリティはどのくらいですか?
どのような種類の非機能テストを実行できますか?
非機能テストにはさまざまな種類があります。 その多くは、パフォーマンス テストとセキュリティ テストの広範なカテゴリに適合します。
パフォーマンス テスト
パフォーマンス テストの目的は、アプリケーションの速度、スケーラビリティ、安定性を向上することです。 速度のテストによって、アプリケーションが応答する速度が決まります。 スケーラビリティをテストすることで、アプリケーションで処理できる最大ユーザー 負荷が決まります。 安定性のテストでは、異なる負荷の下でアプリケーションが安定しているかどうかを判断します。 一般的なパフォーマンス テストには、ロード テストとストレス テストの 2 種類があります。
負荷テスト
ロード テスト は、現実的な負荷の下でアプリケーションのパフォーマンスを決定します。 たとえば、ロード テストでは、サービス レベル アグリーメント (SLA) の上限でアプリケーションのパフォーマンスを判断できます。 基本的に、ロード テストでは、複数のユーザーが同時にアプリケーションを必要とする場合の動作が決定されます。
ユーザーは必ずしも人間であるとは限りません。 たとえば、プリンター ソフトウェアのロード テストでは、アプリケーションに大量のデータが送信される場合があります。 メール サーバーのロード テストでは、数千人の同時ユーザーをシミュレートできます。
ロード テストは、アプリケーションが制限で動作している場合にのみ存在する問題を明らかにするのにも適した方法です。 これは、バッファー オーバーフローやメモリ リークなどの問題が発生する可能性がある場合です。
このモジュールでは、Apache JMeter を使用してロード テストを実行します。 Web サイトに同時にアクセスする一連のシミュレートされたユーザーを使用します。
ストレス テスト
ストレス テスト は、負荷が大きい場合のアプリケーションの安定性と堅牢性を決定します。 読み込みは、アプリケーションに対して指定された値を超えています。 ストレス テストは、これらの負荷の下でアプリケーションがクラッシュするかどうかを決定します。 アプリケーションが失敗した場合、ストレス テストは正常に失敗することを確認します。 優雅に処理された失敗は、たとえば、適切で有益なエラーメッセージを表示することがあります。
アプリケーションが異常に大きい負荷の下で動作する必要があるシナリオは一般的です。 たとえば、ビデオがウイルスに感染した場合は、サーバーが余分な負荷をどの程度適切に処理できるかを知る必要があります。 もう 1 つの一般的なシナリオは、ホリデー シーズン中のショッピング Web サイトでのトラフィックが多い場合です。
セキュリティ テスト
セキュリティ テスト では、アプリケーションに脆弱性、脅威、リスクがないことを確認します。 徹底的なセキュリティ テストにより、情報侵害や収益の損失を引き起こす可能性のあるシステムの考えられるすべての抜け穴と弱点が見つかります。
セキュリティ テストにはさまざまな種類があります。 そのうちの 2 つは、侵入テストとコンプライアンス テストです。
侵入テスト
侵入テスト ( ペン テスト) は、アプリケーションの安全でない領域をテストするセキュリティ テストの一種です。 特に、攻撃者が悪用する可能性のある脆弱性をテストします。 承認されたシミュレートされたサイバー攻撃は、通常、侵入テストの一部です。
コンプライアンス テスト
コンプライアンス テスト では、アプリケーションが社内外の一部の要件に準拠しているかどうかを判断します。 たとえば、医療機関は通常、HIPAA (1996 年の医療保険の移植性とアカウンタビリティに関する法律) に準拠する必要があります。この法律では、医療情報を保護するためのデータプライバシーとセキュリティ規定が提供されます。
組織には、独自のセキュリティ要件がある場合もあります。 ソフトウェアは、これらの要件に従っていることを確認するためにテストする必要があります。 たとえば、Linux システムでは、既定のユーザー マスクは 027 以上の制限が必要です。 セキュリティ テストでは、この要件が満たされていることを証明する必要があります。
計画
このモジュールの残りの部分では、Azure DevOps 環境を設定し、Apache JMeter を使用したロード テストの計画について説明し、Azure Pipelines でロード テストを実行します。