iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
IT Operation

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

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

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

Day 11:AI 會不會主動幫你補那些被冷落的測試?

前言:AI 會不會主動幫你補被冷落的測試? 「如果請 AI 幫我在 PurchaseRequest 加一個新的付款方式,AI 會不會像 Day 09 講的那樣,...

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

Day 12:沒有覆蓋率門檻,測試靠什麼被補上?

前言:沒有覆蓋率門檻,缺口靠什麼被補上? 前面幾天看到的「順路補測試」,是在一個完全沒有覆蓋率門檻的套件裡發生的——phpunit.xml 雖然設定了覆蓋率報表...

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

Day 13:怎麼下 prompt,讓 AI 順便幫你檢查測試缺口

前言:把「順便檢查」寫成能照著做的 prompt Day 11 講了心態:AI 不會自動「順路」注意到測試缺口,除非你明確要求。今天把這件事變成真的能照著做的方...

2026-09-17 ‧ 由 recca0120 分享
DAY 14

Day 14:制度 vs 自覺,哪個更靠得住

前言:制度跟自覺,哪個更靠得住? 第二部用一筆真實的 commit,帶出了一連串觀察。今天把它們收在一起,回答一開始留下的問題:制度跟自覺,哪個更靠得住? 今日...

2026-09-18 ‧ 由 recca0120 分享
DAY 15

Day 15:composer.json 沒寫最低 PHP 版本,相容性靠誰承諾?

前言:CI 測過的範圍,等於正式承諾的範圍嗎? 「CI 矩陣測過 PHP 7.1 到 8.3,代表這個套件正式支援這個範圍吧?」 打開 composer.jso...

2026-09-19 ‧ 由 recca0120 分享
DAY 16

Day 16:跨版本相容,不是刻意做出來的,是「沒用到新語法」換來的

前言:跨版本相容,是刻意做出來的嗎? 「支援 PHP 7.1 到 8.3,程式碼裡是不是寫了一堆 if (version_compare(...)) 這種版本分...

2026-09-20 ‧ 由 recca0120 分享
DAY 17

Day 17:徽章連到的 CI 服務,幾年前就沒人在用了

前言:徽章還在,但它指的東西早就換了 Day 04 講過 README 的功能說明沒跟上程式碼——那是「這個套件能做什麼」的文件漂移。今天要看另一種完全不同面向...

2026-09-21 ‧ 由 recca0120 分享
DAY 18

Day 18:沒有 PHPStan,型別錯誤靠什麼擋?答案:目前沒有

前言:這個套件有在用靜態分析工具嗎? 「這個套件寫得算工整,應該有在用靜態分析工具吧?」 沒有。翻遍整個專案,找不到 phpstan.neon、psalm.xm...

2026-09-22 ‧ 由 recca0120 分享
DAY 19

Day 19:第一次跑 PHPStan,抓到一個打字打錯的烏龍

前言:實際跑一次 PHPStan,會冒出什麼? 昨天講完「這個套件沒有靜態分析工具」,今天實際動手裝一次,看看真的跑起來會冒出什麼。先說清楚:以下是我在一份本機...

2026-09-23 ‧ 由 recca0120 分享
DAY 20

Day 20:接進 CI 前先跑一次,才發現它從一開始就是紅燈

前言:一個從沒被呼叫過的 composer script composer.json 裡有一個叫 check-style 的 script,執行 phpcs 檢...

2026-09-24 ‧ 由 recca0120 分享