iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
IT Operation

AI 輔助開發下,測試如何保住品質防線 系列

以真實存在的公開 PHP 套件 omnipay-ecpay 為素材,拆解一套 CI/品質工具鏈從「設定了但沒人看」到「真的把關」的維運歷程:覆蓋率報表被 --no-coverage 關掉、composer script 從沒接進 CI、PHPStan/phpcs 第一次跑就抓到真實問題。用真實 commit 與實測數字,示範 AI 輔助開發下,日常維運怎麼把「應該還好吧」的假設逐項核對成可傳承的品質防線。

參賽天數 25 天 | 共 25 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 01:AI 幫你寫更多程式碼,但品質防線要自己蓋

前言:AI 能補程式碼,但補不出你沒發現的缺口 「現在 AI 這麼厲害,寫測試不是應該叫 AI 順手補一補就好了嗎?」 如果你也這樣想過,這個系列想用一個真實存...

2026-09-05 ‧ 由 recca0120 分享
DAY 2

Day 02:12 個付款方式類別,怎麼用 14 個 Trait 組出來

前言:付款方式一多,欄位要怎麼組 「同一個 PurchaseRequest,要同時支援信用卡、ATM、超商代碼、無卡分期、電子發票,這麼多種欄位組合,是不是要寫...

2026-09-06 ‧ 由 recca0120 分享
DAY 3

Day 03:把廠商官方 SDK,包進一個多人共用的套件慣例裡

前言:官方 SDK 都出了,為什麼還要包一層 「廠商都出官方 SDK 了,為什麼還要多包一層 Omnipay 驅動套件,不是直接用官方 SDK 比較快?」 這是...

2026-09-07 ‧ 由 recca0120 分享
DAY 4

Day 04:文件停在骨架範本,程式碼卻已經走了三年

前言:README 寫得爛,去看程式碼不就好了? 「README 寫得爛,去看程式碼註解或原始碼不就好了?」 這句話沒錯,但代價是:新使用者要多花一段時間,自己...

2026-09-08 ‧ 由 recca0120 分享
DAY 5

Day 05:21 個測試方法,哪裡測得細、哪裡只測了半套

前言:「有寫測試」跟「測得夠不夠」是兩回事 「有寫測試」跟「測得夠不夠」是兩回事。今天把 omnipay-ecpay 全部 21 個測試方法攤開來數一遍,看清楚...

2026-09-09 ‧ 由 recca0120 分享
DAY 6

Day 06:不用 Mockery,這個套件怎麼假裝自己打過綠界 API

前言:不用 Mockery,這個套件怎麼辦? 「測試裡要模擬外部 API 呼叫,不就是 Mockery::mock() 一行解決的事嗎?」 omnipay-ec...

2026-09-10 ‧ 由 recca0120 分享
DAY 7

Day 07:覆蓋率報表設定得很齊全,卻沒人在看

前言:覆蓋率報表設定好了,為什麼還要關掉? 「既然都設定好覆蓋率報表了,為什麼 CI 上還要特地加一個參數把它關掉?」 這是這個套件最反直覺的地方:phpuni...

2026-09-11 ‧ 由 recca0120 分享
DAY 8

Day 08:一筆 commit,兩種說法

前言:commit message 講的,跟程式碼改的,是同一件事嗎? 「commit message 寫的是加了什麼功能,那測試就一定是為了驗證那個功能新寫的...

2026-09-12 ‧ 由 recca0120 分享
DAY 9

Day 09:兩種節奏——「功能配測試」跟「順路補測試」

前言:先寫測試再寫功能,才算有紀律? 「TDD 教的不是應該先寫測試、再寫功能嗎?昨天那筆 commit 看起來完全不是這樣,這樣算不算沒紀律?」 先說結論:昨...

2026-09-13 ‧ 由 recca0120 分享
DAY 10

Day 10:還沒等到「順路」機會的兩個類別

前言:順路補測試,總得先有人打開那個檔案 昨天說「順路補測試」是一種真實存在的償債機制,但它有個前提:得先有人因為別的理由打開那個檔案。今天看這個套件裡兩個一直...

2026-09-14 ‧ 由 recca0120 分享