同一個系統要維護兩個版本的對外介面,還要跟一個不受自己控制的外部系統交換資料。這個系列從一套真實運作中的 Laravel 專案的 63 支測試檔案出發,記錄測試分層怎麼設計才有意義:哪一層的失敗該讓你立刻知道是自己程式壞了,哪一層只是外部系統的資料長得跟預期不一樣。涵蓋 Unit/Feature 測試分層、測試替身設計、外部 SOAP 服務的整合測試手法,以及幾次「測試通過但沒有真的驗證到東西」的真實踩坑紀錄。
前言 「這次改動同時影響了使用者管理跟角色管理兩個頁面,測試要寫在同一支檔案裡嗎?」 今天要看的案例,是這個系統一次真實的權限改動——一次調整同時影響了兩個不同...
前言 「授權邏輯這麼重要,應該要有專門的 unit test 才對吧?」 這是我一開始也有的直覺:Policy 決定誰能看什麼、誰能做什麼,理論上應該是整個系統...
前言 「重構程式碼結構的時候,測試也要跟著大改嗎?」 很多時候答案是「不用,測試驗證的是外顯行為,內部怎麼組織不影響測試怎麼寫」。但今天要講一個例外:這個系統有...
前言 「這支功能有寫測試,而且測試都是綠燈,應該可以放心吧?」 這句話聽起來很合理,但今天要拆一個真實案例,證明這個推論不一定成立。這個系統的登入功能確實「有測...
前言 「同一段解析邏輯要處理好幾種輸入格式,測試該怎麼寫才不會變成複製貼上三份幾乎一樣的程式碼?」 這個系統有一個很典型的場景:外部系統回傳的新聞附件資訊,可能...
前言 「要 mock 兩種不同通訊協定的外部服務,是不是要各自準備一份假資料?」 這個系統要跟外部校務系統交換資料,走的是兩種不同的技術路徑:一般的 HTTP...
前言 「錄一次真實流量當測試資料,聽起來很方便,但錄下來的檔案越積越多,怎麼避免亂成一團?」 昨天講了兩支測試替身怎麼共用同一份錄製資料,今天要把鏡頭拉遠一點,...
前言 「要測試一個包著 SOAP 協議的 Client 類別,是不是一定要連上真實的外部服務才能驗證?」 前兩天講了測試替身的設計理念跟錄影帶的組織方式,今天要...
前言 「這段邏輯的單元測試寫得很仔細,代表這個功能整體是安全的嗎?」 今天要看的這支測試,品質其實不差——針對單一登入(SSO)底層元件的驗證相當完整。但如果把...
前言 「這段爬蟲邏輯有測試,是不是就代表它夠穩固了?」 今天要誠實面對一個沒那麼漂亮的案例。這個系統負責從外部網頁抓取新聞資料的 Crawler 類別,目前只有...