継続的テストとは?
継続的テストとは、デリバリー pipeline 全体を通して自動テストを実行し、品質のフィードバックを最後だけでなくあらゆる段階で常に得られるようにするプラクティスです。
継続的インテグレーションと継続的デリバリーが機能するには、品質もまた継続的に評価されなければなりません。継続的テストは pipeline のあらゆる段階に自動テストを組み込み、各変更が本番へ進むにつれて検証され、問題が最終的な QA フェーズではなく即座に表面化するようにします。
その意味するところ
継続的テストとは、自動テストが pipeline の不可欠な一部として実行され、あらゆる変更で、複数の段階で起動されることを意味します。品質評価は個別のフェーズではなく継続的なフィードバックの流れとなり、pipeline 自体が「この変更は安全に進められるか?」に絶えず答えるようになります。
テストピラミッド
効果的な継続的テストはテストの種類のバランスを取ります。多数の高速な unit テスト、より少ない integration テスト、そしてごく少数のエンドツーエンドテストです。このピラミッドは、安価で高速なテストを優先することでフィードバックを素早く保ちつつ、より遅く広範なテストは本当にそれを必要とする少数の振る舞いのために残しておきます。
あらゆる段階でのテスト
- 即時のフィードバックのために各 commit で unit テストを実行。
- コンポーネントが結合されるにつれて integration テストを実行。
- deploy 済みの環境に対してエンドツーエンドテストを実行。
- pipeline 内でのパフォーマンステストとセキュリティテスト。
速度と信頼性がすべて
継続的テストはテストの速度と信頼性の上に成り立つか崩れ去るかが決まります。遅いスイートは開発者に変更をまとめさせ、実行を避けさせます。ランダムに失敗する不安定なテストは、人々が失敗を完全に無視するようになるまで信頼を蝕みます。信頼できる CI インフラ上での高速で並列化された信頼性のあるテストこそが、このプラクティスを実行可能にします。
quality gate としてのテスト
継続的テストはテストスイートを自動化された gate に変えます。変更は関連するテストに合格した場合にのみ前進するため、品質は期待に頼った手動チェックではなく機械的に強制されます。これこそが、遅い手動 QA のボトルネックなしにチームが頻繁に deploy する自信を与えるものです。
重要なポイント
- 継続的テストは、絶え間ないフィードバックのために pipeline 全体を通して自動テストを実行します。
- バランスの取れたテストピラミッドは、振る舞いをカバーしつつフィードバックを高速に保ちます。
- テストの速度と信頼性が、このプラクティスが実際に機能するかどうかを決定します。