シフトレフト テストについて確認する

完了

アプリケーション ライフサイクル管理でのテストは、コードの品質を最大化し、ソフトウェアのデプロイと更新に関連する運用上のリスクを最小限に抑えるために不可欠です。 このコンテキストにおける 左シフト という用語は、開発フェーズでできるだけ早くテストアクティビティを移動するという考えを伝えます。 このサンプル シナリオの組織は、現在のセキュリティと安定性の問題を最小限に抑えるために、このアプローチを DevOps 戦略に組み込むことを検討する必要があります。 このユニットでは、この方法で実装できるさまざまな種類のテストを確認し、実装方法を調べます。

DevOps テストの原則を示す図。

シフトレフトテストに含める必要があるテストは何ですか?

ソフトウェア開発にはさまざまな種類のテストが組み込まれていますが、特に関心のあるテストの種類は次のとおりです。

  • 単体テスト: これらのテストは、個々の関数やメソッドなど、アプリケーション コードの最小のテスト可能な部分に焦点を当てています。 目的は、コードの各ユニットが、コードベースの残りの部分や外部の依存関係から分離して目的の操作を正常に実行できるかどうかを確立することです。 このようなテストは、完全に自動化され、迅速に (30 秒以内に完了)、完全なコード カバレッジを提供する必要があります (基本的には、すべての単体テストでコードベース全体をまとめてテストする必要があることを意味します)。 単体テストは、シフトレフトのアプローチに適しています。 可能な限り開発サイクルの早い段階 (できればプログラミング フェーズの開始時) にすべてのコードに適用することをお勧めします。

    テストと単体テストのビジョンを示す図。

  • スモーク テスト: これらのテストは、テスト環境でのアプリケーションのコア機能を評価するためのものです。 単体テストのように、実際のアプリケーション (個々の分離されたコンポーネントではなく) をテストする一方で、その目的は、アプリケーションのビルドまたはデプロイがより詳細なテストを保証するのに十分に安定しているかどうかを判断することです。 ただし、アプリ間の相互運用性は検証されません。 単体テストと同様に、完全に自動化され、比較的迅速である必要があります (ユーザー操作は、ブラウザーの自動化ツールとユーザー インターフェイスの自動化フレームワークを使用してシミュレートできます)。 煙試験 という用語は、できるだけ早く対処すべき大きな問題(火災)を示す煙の考えを伝えるために意図されています。 スモーク テストは、開発サイクルの早い段階で実装する必要があります。できれば、コア機能を提供するソフトウェアのバージョンが利用可能になるとすぐに行う必要があります。 これは、アプリケーションのビルドフェーズとデプロイフェーズの両方に適用されます。

  • 統合テスト: これらのテストは、さまざまなアプリケーション コンポーネント間の相互作用を検証します。 単体テストとは異なり、完了にはかなりの時間がかかる場合があります。 これらのテストの延長期間は、ソフトウェア開発ライフサイクルの早い段階で実行するための引数として一般的に使用されます。 一般に、単体テストまたはスモーク テストが適さないシナリオでは、統合テストを検討する必要があります。 ただし、定期的に実行するようにスケジュールすることをお勧めします。 このアプローチでは、統合の問題を検出するのに潜在的な遅延と、それらを完了するために必要な追加の待機時間との間に妥当な妥協が提供されます。

  • 受け入れテスト: これらのテストは、ソフトウェア製品がビジネス要件を満たし、コンシューマーへの配信の準備ができているかどうかを判断します。 受け入れテストはシフトレフト戦略には適していませんが、ソフトウェア開発ライフサイクルの早い段階でその要素の一部を組み込むことは可能な場合があります。 たとえば、受け入れ条件と、受け入れテストの必須コンポーネントであるユーザー ストーリーは、開発プロセスの早い段階で導入する必要があります。 これにより、開発チーム、製品所有者、プロジェクトの利害関係者間のコラボレーションが容易になります。 さらに、ソフトウェア コンシューマーとプロジェクトの利害関係者は、フィードバックを共有するために、以前のテスト フェーズに参加する必要があります。 これには、正式な受け入れテストに先立って、アルファテストやベータテスト、ユーザビリティテスト、早期リリースなどの方法を使用する必要があります。