前言 「這支測試昨天明明是綠燈的,今天怎麼突然紅了?」 如果你的測試依賴「現在幾點」來決定行為——例如抓「過去兩天」的資料、判斷某筆紀錄是不是「已經超過一週沒更...
前言 「同一個元件,有時候要單獨顯示,有時候要嵌在別的頁面裡顯示,這種情況測試該怎麼寫?」 昨天講的是「怎麼測一個 Filament 元件的動作有沒有真的發生」...
前言 「測試不是分 Unit 跟 Feature 兩層就好了嗎?為什麼還要另外花 30 天講這件事?」 如果你的專案只有一套對外介面、不用跟任何外部系統交換資料...
前言:為什麼想寫「一套系統的測試策略」而不是「測試語法教學」 市面上不缺「Laravel 怎麼寫測試」的文章——assertOk() 怎麼用、Factory 怎...
前言 「測試替身耗盡了假資料,應該回傳什麼?」 這個問題聽起來很小,但答案會決定你的測試替身是「幫你抓出真正的錯誤」,還是「安靜地讓錯誤溜走」。今天要把 Day...
前言 「重構程式碼結構的時候,測試也要跟著大改嗎?」 很多時候答案是「不用,測試驗證的是外顯行為,內部怎麼組織不影響測試怎麼寫」。但今天要講一個例外:這個系統有...
前言 「這個專案的測試是用 Pest 寫的還是 PHPUnit 寫的?」 如果你隨手打開這個系統的 tests/ 目錄亂逛,答案看起來很明確:滿眼都是 test...
前言 「這筆測試需要的資料,migration 裡本來就有塞了,直接拿來用不就好了?」 這句話聽起來很省事——反正資料已經存在,何必再多寫一段 Factory...
前言 「昨天不是已經測過遷移指令了嗎?今天還要再測一次檔案路徑?」 昨天測的是「遷移指令這整個流程」——它能不能正確找到舊格式的檔案、能不能正確搬到新路徑。但如...
前言 「要 mock 兩種不同通訊協定的外部服務,是不是要各自準備一份假資料?」 這個系統要跟外部校務系統交換資料,走的是兩種不同的技術路徑:一般的 HTTP...
前言 「這個頁面回傳 200,測試就算過了嗎?」 這是很多人寫 Feature 測試時,不知不覺會停下來的地方——狀態碼是 200,代表伺服器沒有拋出例外、路由...
前言 「這支測試要不要用 RefreshDatabase?」 這是一個看起來很小、但每次寫 Unit 測試都會遇到的判斷。今天要用這個系統裡兩支真正的純邏輯 U...
前言 「這次改動同時影響了使用者管理跟角色管理兩個頁面,測試要寫在同一支檔案裡嗎?」 今天要看的案例,是這個系統一次真實的權限改動——一次調整同時影響了兩個不同...
前言 「後台是用 Filament 這種管理面板套件開發的,測試也要照一般 HTTP 頁面那樣打請求、看回應內容嗎?」 答案是不行——至少不是最有效的方式。Fi...
前言 「要測試一個包著 SOAP 協議的 Client 類別,是不是一定要連上真實的外部服務才能驗證?」 前兩天講了測試替身的設計理念跟錄影帶的組織方式,今天要...
前言 「這個系統測試寫得挺仔細的,應該沒有明顯的覆蓋漏洞吧?」 昨天看到的 sitemap 測試涵蓋了 V1、V2 兩套介面版本,看起來很完整。但今天要指出一件...
前言 「明明只是測首頁能不能正常打開,為什麼 beforeEach 要設定這麼多東西?」 首頁通常是一個系統裡最「熱鬧」的頁面——同時組合了好幾個不同來源的內容...
前言 「這兩支測試檔案根本是複製貼上的,程式碼重複這麼多,不用重構嗎?」 寫測試的人多半都被教育過要遵守 DRY 原則,看到重複的程式碼會反射性地想抽共用邏輯。...
前言 「要測試一段字串清洗邏輯,是不是要把清洗前後的每個字元都比對過一次?」 今天要看的是這個系統處理外部系統傳回的髒 XML 資料時,用的一種很精簡的測試手法...
前言 「錄一次真實流量當測試資料,聽起來很方便,但錄下來的檔案越積越多,怎麼避免亂成一團?」 昨天講了兩支測試替身怎麼共用同一份錄製資料,今天要把鏡頭拉遠一點,...
前言 「每支測試都要先登入一個有權限的使用者,是不是寫一個共用函式,直接把使用者塞進去就好?」 聽起來理所當然,但這句話裡藏著一個容易被忽略的陷阱:如果那個「共...
前言 「這段爬蟲邏輯有測試,是不是就代表它夠穩固了?」 今天要誠實面對一個沒那麼漂亮的案例。這個系統負責從外部網頁抓取新聞資料的 Crawler 類別,目前只有...
前言 「這支功能有寫測試,而且測試都是綠燈,應該可以放心吧?」 這句話聽起來很合理,但今天要拆一個真實案例,證明這個推論不一定成立。這個系統的登入功能確實「有測...
前言 「這段排序邏輯已經跑了很久,應該沒問題吧?」 這句話幾乎是每個維護老專案的人都說過的話。今天要講的案例,剛好打臉了這句話:這個系統的首頁排序邏輯,實際上早...
前言 「同一段解析邏輯要處理好幾種輸入格式,測試該怎麼寫才不會變成複製貼上三份幾乎一樣的程式碼?」 這個系統有一個很典型的場景:外部系統回傳的新聞附件資訊,可能...
前言 「這支測試已經綠燈很久了,應該沒問題吧?」 這句話最危險的地方在於,它把「測試綠燈」直接等同於「這段邏輯真的被驗證過」。今天要拆一個真實發生過的案例:一支...
前言 「User::factory()->create() 建出來的使用者,到底是一般人還是管理員?」 如果你的測試套件裡到處都是這種通用的 factor...
前言 「授權邏輯這麼重要,應該要有專門的 unit test 才對吧?」 這是我一開始也有的直覺:Policy 決定誰能看什麼、誰能做什麼,理論上應該是整個系統...
前言 「這段邏輯的單元測試寫得很仔細,代表這個功能整體是安全的嗎?」 今天要看的這支測試,品質其實不差——針對單一登入(SSO)底層元件的驗證相當完整。但如果把...
前言 「這 6 支 Job 的測試看起來幾乎一模一樣,是不是在偷懶複製貼上?」 第一次看到這種情況,很容易直覺懷疑是不是該抽一個共用的測試基底類別。但今天想討論...