CloudBees(クラウドビーズ)は、継続的インテグレーションパイプラインへの信頼を損なうノイズの多い障害を減らすことを目的とした、Smart Testsの新機能を発表した。今回のアップデートでは、問題のあるテストを特定するための「High Failure Rate Tests(高失敗率テスト)」ページと、テスト履歴とテレメトリーを保持しながら、これらの障害がデリバリーを阻害するのを防ぐ「Quarantine(検疫)」機能が導入される。
エンジニアリングチームは、増大する変更量によってますます負担を強いられており、パイプラインの障害は根本原因に対処するのではなく、テストを再実行することで対処されることが多いと指摘されている。こうした行動は、CI(継続的インテグレーション)の時間を無駄にし、開発者の集中力を阻害し、最終的にはテストスイートを本番環境への準備状況を示す信頼できる指標としての役割を弱めてしまうという。高い失敗率の原因としては、テスト対象アプリケーションの欠陥ではなく、脆弱なテストコード、タイミングに関する仮定、共有フィクスチャ、断続的なインフラストラクチャーの依存関係などが挙げられる。
高失敗率テストのページでは、選択した期間内に失敗した全てのテストが、実行回数、合格回数、不安定なテストの回数、および失敗率とともに表示されるため、チームは頻度と深刻度の両方に基づいて優先順位を付けることができる。テストには、継続的に失敗するテストには「Ongoing」、最近のセッションで回復が見られるテストには「Resolved」などのステータスラベルが付与され、最も問題のあるテストのランキングリストが作成され、不安定なテストを特定するために組織の記憶に頼る必要がなくなる。
検疫は、テストを削除するか、パイプラインの進行を妨げ続けるかの中間的な選択肢として位置付けられている。検疫されたテストは引き続き実行され、結果が記録されるが、合否判定によってパイプラインの進行が妨げられることはない。この機能は、対象を絞った判断のためのワンクリック手動検疫と、手動介入なしに設定可能な失敗率のしきい値を隔離されたテストに適用するオプトイン自動検疫によって利用できる。
復旧メカニズムは極めて重要であると強調されている。検疫されたテストは実行を継続し、合否判定を継続的に監視する。自動的に検疫されたテストは、失敗率が設定されたしきい値を下回ると自動的に復旧するように設定されているが、手動で検疫されたテストは、ブロック状態に戻るには意図的な操作が必要だ。このアプローチは、長期間放置されたスキップリストが気付かないうちにカバレッジを低下させるというよくある落とし穴を防ぐことを目的としている。
CloudBeesは、Smart Testsは、大規模で成熟したテストスイートを管理している顧客と共同で開発されたものであり、その顧客では、絶え間ないテストノイズが日々のデリバリーの妨げとなっていたと述べている。検疫リストは作業バックログとして機能し、エンジニアが責任を負い、失敗率が正常化するまで進捗状況を監視できるようにする。最終的な目標は、信頼できるCIシグナルを回復し、チームが本番環境に届くものを確実に管理できるようにすることだという。
出典:CloudBees
この製品の詳細については、CloudBees製品ページをご覧ください。