<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Quarantine on Tarragon</title><link>https://tarrragon.github.io/blog/tags/quarantine/</link><description>Recent content in Quarantine on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 17 Jul 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/quarantine/index.xml" rel="self" type="application/rss+xml"/><item><title>Quarantine（隔離）</title><link>https://tarrragon.github.io/blog/testing/knowledge-cards/quarantine/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/testing/knowledge-cards/quarantine/</guid><description>&lt;p>Quarantine 是把已知 flaky 的測試從主要執行路徑移開的治理機制：讓它的紅燈不污染 CI 的通過訊號，同時用負責人和回收期限維持修復壓力。與直接 skip 的分界在語意——skip 是「不跑」，quarantine 是「隔離觀察、排定回收」。時序型 flaky（如 &lt;a href="https://tarrragon.github.io/blog/testing/knowledge-cards/fire-and-forget-orchestration/" data-link-title="Fire-and-Forget Orchestration（射後不理編排）" data-link-desc="呼叫後不等待完成的編排形態；產生「方法返回不等於流程完成」的時序落差，是 flaky test 的常見根因之一">fire-and-forget 編排&lt;/a>的斷言時點落差）是進入隔離區的常客。&lt;a href="https://tarrragon.github.io/blog/testing/05-test-design-judgment/flaky-team-governance/" data-link-title="Flaky test 團隊治理" data-link-desc="flaky test 累積到讓團隊開始 skip 或 ignore 時，從個案修復升級到團隊層的治理策略：quarantine 政策、retry 預算、信任修復的可視化與行動閾值">Flaky test 團隊治理&lt;/a>完整描述了 quarantine 的觸發條件、責任分配、re-admit（修復後重新排入主線）流程。&lt;/p>
&lt;h2 id="概念位置">概念位置&lt;/h2>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/testing/05-test-design-judgment/flaky-test-root-cause/" data-link-title="Flaky test 根因分類" data-link-desc="計時依賴 / 環境差異 / 資源競爭 / 非確定性輸出 — 四類 flaky test 根因的辨識和處理策略">根因分類&lt;/a>回答「怎麼修」，quarantine 回答「修好之前怎麼擋」——兩者的分工是動作次序而非層次高低：先擋住紅燈污染、再依根因排修復優先序。實務上進入隔離區的常客是時序型 flaky，成因多為 &lt;a href="https://tarrragon.github.io/blog/testing/knowledge-cards/fire-and-forget-orchestration/" data-link-title="Fire-and-Forget Orchestration（射後不理編排）" data-link-desc="呼叫後不等待完成的編排形態；產生「方法返回不等於流程完成」的時序落差，是 flaky test 的常見根因之一">fire-and-forget 編排&lt;/a>與&lt;a href="https://tarrragon.github.io/blog/testing/knowledge-cards/flow-test/" data-link-title="Flow Test（流程測試）" data-link-desc="在假後端上驅動真實前端服務鏈、斷言散佈於業務旅程各階段的測試形態；與 unit / integration / E2E 的邊界劃分">流程測試&lt;/a>的斷言時點落差。&lt;/p>
&lt;h2 id="可觀察訊號與例子">可觀察訊號與例子&lt;/h2>
&lt;p>quarantine 佔比持續增長、平均停留時間不下降——代表回收機制失效，測試進得去、出不來。這個指標的行動閾值在&lt;a href="https://tarrragon.github.io/blog/testing/05-test-design-judgment/flaky-team-governance/" data-link-title="Flaky test 團隊治理" data-link-desc="flaky test 累積到讓團隊開始 skip 或 ignore 時，從個案修復升級到團隊層的治理策略：quarantine 政策、retry 預算、信任修復的可視化與行動閾值">治理章&lt;/a>的「可視化」段描述。&lt;/p>
&lt;h2 id="設計責任">設計責任&lt;/h2>
&lt;p>實作通常用 test tag（&lt;code>@quarantine&lt;/code>）配 runner 的排除參數。隔離後的三項紀律：指定負責人、設回收期限、到期未修強制 triage（修復 / 刪除 / 重新設計覆蓋目標）。同一條測試若被隔離超過兩次，修復方向從測試層轉向被測程式碼的設計層。&lt;/p></description><content:encoded><![CDATA[<p>Quarantine 是把已知 flaky 的測試從主要執行路徑移開的治理機制：讓它的紅燈不污染 CI 的通過訊號，同時用負責人和回收期限維持修復壓力。與直接 skip 的分界在語意——skip 是「不跑」，quarantine 是「隔離觀察、排定回收」。時序型 flaky（如 <a href="/blog/testing/knowledge-cards/fire-and-forget-orchestration/" data-link-title="Fire-and-Forget Orchestration（射後不理編排）" data-link-desc="呼叫後不等待完成的編排形態；產生「方法返回不等於流程完成」的時序落差，是 flaky test 的常見根因之一">fire-and-forget 編排</a>的斷言時點落差）是進入隔離區的常客。<a href="/blog/testing/05-test-design-judgment/flaky-team-governance/" data-link-title="Flaky test 團隊治理" data-link-desc="flaky test 累積到讓團隊開始 skip 或 ignore 時，從個案修復升級到團隊層的治理策略：quarantine 政策、retry 預算、信任修復的可視化與行動閾值">Flaky test 團隊治理</a>完整描述了 quarantine 的觸發條件、責任分配、re-admit（修復後重新排入主線）流程。</p>
<h2 id="概念位置">概念位置</h2>
<p><a href="/blog/testing/05-test-design-judgment/flaky-test-root-cause/" data-link-title="Flaky test 根因分類" data-link-desc="計時依賴 / 環境差異 / 資源競爭 / 非確定性輸出 — 四類 flaky test 根因的辨識和處理策略">根因分類</a>回答「怎麼修」，quarantine 回答「修好之前怎麼擋」——兩者的分工是動作次序而非層次高低：先擋住紅燈污染、再依根因排修復優先序。實務上進入隔離區的常客是時序型 flaky，成因多為 <a href="/blog/testing/knowledge-cards/fire-and-forget-orchestration/" data-link-title="Fire-and-Forget Orchestration（射後不理編排）" data-link-desc="呼叫後不等待完成的編排形態；產生「方法返回不等於流程完成」的時序落差，是 flaky test 的常見根因之一">fire-and-forget 編排</a>與<a href="/blog/testing/knowledge-cards/flow-test/" data-link-title="Flow Test（流程測試）" data-link-desc="在假後端上驅動真實前端服務鏈、斷言散佈於業務旅程各階段的測試形態；與 unit / integration / E2E 的邊界劃分">流程測試</a>的斷言時點落差。</p>
<h2 id="可觀察訊號與例子">可觀察訊號與例子</h2>
<p>quarantine 佔比持續增長、平均停留時間不下降——代表回收機制失效，測試進得去、出不來。這個指標的行動閾值在<a href="/blog/testing/05-test-design-judgment/flaky-team-governance/" data-link-title="Flaky test 團隊治理" data-link-desc="flaky test 累積到讓團隊開始 skip 或 ignore 時，從個案修復升級到團隊層的治理策略：quarantine 政策、retry 預算、信任修復的可視化與行動閾值">治理章</a>的「可視化」段描述。</p>
<h2 id="設計責任">設計責任</h2>
<p>實作通常用 test tag（<code>@quarantine</code>）配 runner 的排除參數。隔離後的三項紀律：指定負責人、設回收期限、到期未修強制 triage（修復 / 刪除 / 重新設計覆蓋目標）。同一條測試若被隔離超過兩次，修復方向從測試層轉向被測程式碼的設計層。</p>
]]></content:encoded></item></channel></rss>