交付品質 Baseline 與缺陷歸因

RD Team · BOB 2.96 ~ 2.100(2026 H1)
資料快照 2026-08-10 · 資料源 Jira(CNCY/CBGISSUE)+ timer 工時 · 內部參考文件
引用前必讀:Jira 是活資料,同一條查詢隔天結果就會變,任何數字都要連快照日期一起帶。所有比率只看趨勢、只做版本間比較,不對外承諾絕對值、不當 KR 驗收門檻(原因見「已知限制」)。
目錄
  1. 重點結論
  2. 交付頻率與變更失敗率
  3. 逃逸率
  4. CS 回報有效率
  5. 處置時間分段
  6. 缺陷根因分佈
  7. 模組 × 逃逸關卡矩陣
  8. hotfix 子集分析
  9. 行動清單
  10. 工時資料品質
  11. 已知限制

1 · 重點結論

100%
變更失敗率(CFR)
8 次正式上線全部需要 hotfix
2.7 次
平均 hotfix/版
策略文件認知為 0.9 次
62%
2.98 逃逸率(最差版本)
2.97 49% → 2.99 40%
52%
CS 回報判定非缺陷
74/142 張
22.4 天
線上問題處置中位數
但實作只花 0 天
70%
缺陷可靠測試擋下
單元/整合/UAT 三關

2 · 交付頻率(DF)與變更失敗率(CFR)

資料源為 CNCY 的 [Infra] 上線卡。版本上線日只認卡片標題——Jira version 物件的 releaseDate 一律不採用(實測 BOB_2.99 標 06-04、實際 07-01,差近一個月),resolutiondate 亦不可用(卡片常晚關)。

版本正式上線後續 hotfixhotfix 次數
2.931/141/14、1/192
2.942/42/4、2/62
2.953/113/12、3/13、3/19、3/244
2.964/84/10、4/16、4/23、4/244
2.975/65/8、5/132
2.986/36/4、6/12、6/153
2.997/17/7、hotfix32
2.1008/58/6(上線隔天)1
計數方法:hotfix 次數必須取「[Infra] 卡」與「版本清單」的聯集——只數 Infra 卡會漏掉沒建卡的(BOB_2.99 hotfix32.100 hotfix),只數版本會漏掉多次部署共用一個版本的(2.97)。文字搜尋 summary ~ "hotfix" 不可用(底線不會被斷成 token,只回 3 筆)。

3 · 逃逸率

定義:某一版的缺陷中,沒有在該版修掉、隨該版出到客戶端的比例。

判準是「有沒有在該版修掉」,不是「何時發現」。UAT 期間測到但延到下一版才修的缺陷,仍隨該版出去了、客戶會遇到 → 算逃逸。已知卻沒修就出貨,跟沒發現一樣是逃逸。

逐卡分類規則

① fixVersion 是 hotfix 版本                  → PROD 逃逸
② Version主版 == fixVersion主版(非 hotfix)  → UAT 攔截
③ Version主版 <  fixVersion主版               → PROD 逃逸(歸屬 Version 那一版)
④ 無 Version:建立日在官方 UAT 窗口內          → UAT 攔截,否則 → PROD 逃逸

Version 取自 CNCY 卡描述的 Version:{元件} v{版號}(覆蓋率 63%);官方 UAT 窗口取自開發時程表(迄日以上線日截斷)。信度驗證Version == fixVersion 的 195 張中有 190 張(97%)確實落在官方 UAT 窗口內。

版本官方 UAT 窗口UAT 攔截逃逸合計缺陷總池逃逸率hotfix
2.963/26~4/71242414816% 不可比4
2.974/23~5/532316349%2
2.985/25~6/225406562%3
2.996/22~6/30674511240%2
2.1007/27~8/416153148% 不可比1

可比的三版:49% → 62% → 40%。2.98 最差,2.99 明顯改善且優於 2.97。不可比的原因:2.96 的 CS 回報板 2026-05 才啟用、2.100 在線窗口未結束。

排除規則未落地時,誤差不是均勻分佈的。13 張「不該算逃逸」的卡(測試/開發環境 6 張+ RCA 判定非缺陷 7 張)中,9 張集中在 2.97——該版逃逸率因此從 56% 修正為 49%

根因是 CNCY 缺少「非缺陷」的結案機制:CS 回報板有 INVALID 可剔除,開發板沒有。resolution 欄位其實有 DeclinedWon't Do重複無法重製 四個值可用,但 219 張漏洞中一次都沒填過。填對即可讓程式自動排除,不必靠人工判讀 RCA。

三個訊號

4 · CS 回報有效率

項目數字
CS 回報板漏洞總數(2026-05~07)142
判定 INVALID(非缺陷/客戶誤操作)74 = 52%
INVALID 判定耗時(中位數/平均)1.1 天/4.2 天

超過一半的 CS 回報不是缺陷,但判定很快——不是流程卡住,是進來的東西本身就有一半不該進來。

解讀時必須拆三類(三者對策完全不同):①CS 端過濾不足——該在 CS 層解掉的操作問題被往上丟;②重複回報去重——同一現象開多張卡後併卡(實例:同一個欄位顯示問題開了 4 張,3 張判 INVALID),這類不是 CS 的問題③產品可用性問題——客戶頻繁「誤操作」本身是 UX 訊號。

5 · 處置時間分段

樣本=與逃逸率分子相同的 74 張 CS 回報缺陷(已結案 51、在途 23)。已結案者從建立到修完的中位數 22.4 天、平均 24.7、P90 56.4。

階段語意易誤讀:WAIT UATRD code review(尚未 merge)WAIT TEST 才是 QA/PM 驗證。兩者不可合併——曾合併成「測試」而得出「測試是最大瓶頸」的錯誤結論。
階段Jira 狀態樣本中位數平均最長
① 等 CS 判斷PENDING VERIFICATION720.1d1.6d29.9d
② 等 RD 分析ROOT CAUSE ANALYSIS591.0d3.3d27.1d
③ 等安排版本BACKLOG570.1d4.3d40.4d
④ 已選入待動工SELECTED FOR DEVELOPMENT570.0d1.3d29.2d
⑤ 開發中IN PROGRESS570.0d0.4d21.0d
⑥ 等 code reviewWAIT UAT560.9d3.2d20.0d
⑦ 等 QA/PM 驗證WAIT TEST522.4d3.8d22.1d
⑧ 等版本上線WAITING DEPLOYMENT382.7d3.5d26.8d
⑨ 等正式站驗證PROD VERIFICATION381.5d7.5d35.5d

四個結論

流程前提沒被守住:按定義 BACKLOG(等安排版本)應該是「已歸因、等排版本」,但實際停在該狀態的卡全部沒有根因結論——其中一張已擱置 87 天。沒歸因就排版本,等於排了也不知道要修什麼。建議 ROOT CAUSE ANALYSIS → BACKLOG 的轉換加一道檢查。

6 · 缺陷根因分佈

樣本 168 張逃逸缺陷,扣除環境問題 6 張、RCA 判定非缺陷 7 張、待歸因 17 張(多數仍在分析中)→ 已歸因 138 張。分類標準整合自團隊既有的後端與前端 Bug 定義,前後端共用一套。

根因大類張數佔比主要對策
B 邏輯實作5540%code review、單元測試
C 資料處理2720%資料模型審查、邊界測試
G 第三方與整合1511%驗證/重試/錯誤不得靜默
A 需求/規格118%規格審查、定義補完
H 改動引入(迴歸)97%影響分析、迴歸清單
F 框架與元件86%技術債清理
E 效能與規模54%prod-like 資料量、監控
D 權限與安全54%權限矩陣審查
I 人為操作與環境32%流程自動化、配置管理
B 邏輯實作細項C 資料處理細項
判斷條件錯誤17null/空值/邊界值11
功能實作遺漏12資料結構/欄位7
流程/狀態處理錯誤10同步與一致性5
計算邏輯錯誤9初始化/預設值3
輸入驗證缺漏7遺漏店家範圍1

「判斷條件錯誤 17」+「null/邊界值 11」= 28 張(20%),這兩項是最典型的單元測試守備範圍,也是最不需要環境就能測的

逃逸關卡:本來應該在哪一關被擋下

關卡張數佔比對策
整合測試3828%模組間、API 契約、權限邊界、第三方 mock
單元測試3022%null/0/未初始化/計算
UAT 情境2921%補 UAT 案例
測不到1813%不是測試問題——監控、灰度、prod-like 資料
規格審查118%條件邏輯與邊界情境寫進 spec
迴歸測試97%新功能前跑既有核心流程
Code review32%checklist

七成(97/138)落在單元/整合/UAT 三關,可靠測試改善。對照 O3 記載的「測試自動化 0%、80% 手動測試」,這裡是 O1 與 O3 最直接的交會點。

13% 的「測不到」要先切出去:效能類(需真實資料量)、第三方設備(門禁投影機、外部 POS)、特定裝置(平板相機)。把這 18 張放進「測試沒做好」的檢討,會導出錯誤結論。

7 · 模組 × 逃逸關卡矩陣

這張表回答的是「哪個模組該補哪一種測試」——比單看模組缺陷數更能直接派工。

模組規格審查Code review單元測試整合測試迴歸測試UAT 情境測不到合計
預約1·5145723
會員等級權益2·5538023
第三方 POS2··6·1211
點數/回饋金1·31·4·9
金流/發票··17··19
票券/堂票··4111·7
會員中心1··2·317
通知1·22·2·7
報表匯出1··4··27
後台通用·221·117
儲值金1·13··16
標籤1·31···5
課程··2··2·4

兩個並列第一的模組,該做的事完全相反

會員等級權益(23 張):「測不到」是 0。UAT 情境 8 張最多,單元 5、整合 5;根因 12 張是邏輯實作(判斷條件、計算邏輯)。這個模組的缺陷 100% 可以靠測試擋掉,只是沒測——補 UAT 案例+單元測試,投報率最高。
預約(23 張):「測不到」7 張,全模組最多。其中 5 張是效能(載入慢、多分店卡頓、API 回應上限截斷)、2 張是時區(日本/跨境);另有 4 張是迴歸。加 UAT 案例對這個模組幫助有限——方向應是效能監控與 prod-like 資料量,加上迴歸清單。

金流/發票(9 張)與第三方 POS(11 張)——整合測試各 7、6 張,根因皆以第三方整合為主。對策單一:第三方整合測試補異常回應的 mock(5xx、憑證失效、回傳結構變更)。這兩個模組的缺陷有共同模式:①存憑證沒驗證 ②第三方 5xx 沒重試 ③失敗被靜默吞掉

8 · hotfix 子集分析(22 張)

hotfix = 計畫外上線 = 嚴重到不能等下一版。這批的根因分佈與整體明顯不同

根因張數hotfix 佔比整體佔比差異
H 改動引入(迴歸)523%7%3 倍
G 第三方與整合418%11%1.6 倍
C 資料處理418%20%持平
B 邏輯實作418%40%偏低
D 權限與安全29%4%2 倍
A/E/F各 15%

三個結論

9 · 行動清單

優先行動依據
🔴 1會員等級權益:補 UAT 案例+單元測試23 張、「測不到」為 0、UAT 情境 8 張最多 → 缺陷 100% 可測,投報率最高
🔴 2預約:建效能監控與 prod-like 資料量測試23 張中 7 張「測不到」(5 張效能)→ 補 UAT 對此模組幫助有限
🔴 3新功能上線前跑既有核心流程迴歸清單迴歸類在 hotfix 佔 23%(整體的 3 倍)→ 直接降 hotfix 次數、改善 CFR
🟡 4金流/第三方:整合測試補異常回應 mock兩模組 20 張,整合測試關卡 13 張(5xx/憑證失效/回傳結構變更)
🟡 5判斷條件與 null 邊界納入 review checklist兩細項合計 28 張(20%),且不需環境即可攔截
🟢 6開發板結案時填 resolution13 張非缺陷/環境卡混入統計 → 零成本消除誤差
🟢 7RCA 補「何時引入」欄位目前無法區分「本版引入」與「長期潛伏」;已知有缺陷潛伏 3 年才被發現,若普遍存在則「這版測試沒做好」是錯的診斷

10 · 工時資料品質

原始 timer 匯出近半是無效紀錄。計時器忘記關閉、系統於 23:59 自動截斷後隔日續開,會產生互相重疊的重複紀錄。實測 2026-07 光 5 筆無效紀錄就佔原始總量 48%(某成員原始 355.3h → 有效 51.1h)。

清洗規則:剔除「開始與結束不在同一日曆日,或單筆時長 > 12 小時」的紀錄。直接用原始匯出算出來的任何工時數字都是錯的。
月份原始總時數清洗後剔除筆數/時數
2026-04578.6h361.1h4 筆/217.5h
2026-05376.8h376.8h0
2026-06329.0h292.4h1 筆/36.6h
2026-07729.8h382.3h5 筆/347.4h

11 · 已知限制