歴史的に、自動テストの数が増えるにつれて、テストが混乱し、実行時間の制限を超え、何が何に責任を持っているのか理解するのが難しかったという問題が現れた。さらに、テストシステムの異なる部分間の依存関係のリスクが増加し、全体のパイプラインの動作が遅くなる可能性もあった。
テストの数が、テストインフラストラクチャのアーキテクチャ的なサポートが確保されるよりも早く増加すると問題が発生する。スケーラブルなソリューションがない場合、テストは遅くなり、メンテナンスが難しくなり、欠陥の検索と特定が困難になり、技術的負債が急速に増大する。
解決策は、特別な戦略を導入することです:
主な特徴:
すべてのテストを統合テストにすることで、同時により多くのコードをカバーできますか?
いいえ、そのようなアプローチは欠陥の特定を困難にし、サポートコストが高くなり、回帰テストの実行が遅くなる可能性があります。
自動テストのスケーラビリティは、それらの加速だけを意味しますか?
スケーラビリティは、アーキテクチャ、メンテナンス性、加速、柔軟なインフラストラクチャに関するものです。加速は、よく設計された大規模なシステムの結果に過ぎません。
異なるタイムゾーンで作業するチームのためにテストを適切にスケールさせるにはどうすればよいですか?
ローカル実行の可能性とテスト環境の独立性を考慮することが重要です。そうしないと、チーム間で「競合」が発生します。
会社には、同じフォルダーに新しい自動テストを追加する複数のチームがすぐに登場しましたが、それぞれが自分の変更を調整していませんでした。数週間後、自動テストはデータと依存関係の不一致のために失敗し、実行時間は2時間を超えました。
プラス:
マイナス:
1つのチームでは、モジュール構造を作成し、コードの分野ごとに独立したCIを導入し、安定性を向上させ、自動テストの非効率に関するアラートを導入しました。
プラス:
マイナス: