シフトレフトを理解する

完了

シフト シフトの目的は、パイプラインの早い段階でテスト タスクを実行することにより、品質を上流に移動することです。 これは、テストとプロセス改善を組み合わせた "fail fast, fail often" (速く失敗し、頻繁に失敗する) というフレーズを表しており、テストの実行にかかる時間と、後で失敗したときの影響を軽減します。

この考え方は、変更をメイン ブランチにマージする前に、ほとんどのテストが完了していることを確認するためのものです。

Screenshot of the shift-left representation image showing Unit Tests and Functional Tests during the pipeline lifecycle.

多くのチームが、開発ライフサイクルの中で、テストの実行に時間がかかりすぎていると感じています。

プロジェクトの規模が大きくなると、テストの数と内容が大幅に増加し、完全なテストを実行するのに数時間から数日かかるようになります。

それらは、最後の可能な時点で実行されるまでさらに先延ばしされ、それらテストのビルドから得られるはずの利点は、コードがコミットされてからかなり経つまで実現されないのです。

DevOps チームが品質ビジョンを実装するために着実に実行すべきいくつかの重大な原則があります。

Screenshot of the quality vision principles current and future test portfolio.

その他に考慮すべき重要な特徴があります。

  • 単体テスト: これらのテストは、高速で信頼性が高い必要があります。
    • Microsoft のあるチームは、60,000 を超える単体テストを 6 分未満で並行して実行しており、1 分未満に短縮することを目的としています。
  • 機能テスト: 独立している必要があります。
  • テスト分類を定義することは、DevOps の重要な側面です。 開発者は、さまざまなシナリオで適切なテストの種類を理解する必要があります。
    • L0 テストは、高速なインメモリ単体テストの幅広いクラスです。 これは、テスト対象のアセンブリ内のコードに依存するテストであり、他には何もありません。
    • L1 テストはアセンブリに加えて SQL またはファイル システムが必要になる場合があります。
    • L2 テストは、テスト可能なサービスのデプロイに対して実行される機能テストです。 これは、サービスのデプロイを必要とする機能テストのカテゴリですが、重要なサービスの依存関係がスタブとして作成されている可能性があります。
    • L3 テストは、運用環境に対して実行される統合テストの制限付きクラスです。 完全な製品のデプロイが必要です。

Microsoft でシフト レフトのケース スタディを確認します: シフト レフトしてテストを高速で信頼性の高いものにする

詳細については、次を参照してください。