Vans Li

Vans Li
Day 18|它說這是 Bug,判斷的依據在哪裡?

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 18|它說這是 Bug,判斷的依據在哪裡?

前言 昨天那一輪交回來的東西裡,有一筆很刺眼。 結帳地址那一步,postcode 欄位預填的值是字串 missing value。任何人看到都會皺眉:那明顯是程式內部代表「查不到值」的字面字串,怎麼會跑到使用者的表單裡,而且還通得過必填驗證。 value="missing value"、placeholder="Your Postcode *"。它是真的值,不是提示文字,不改就會被送出去。 但 finding 上寫的是 status: anomaly,不是 fail。 它看到了,卻不敢說那是錯的。今天要回答為什麼,答案是判準沒寫進 charter,它就不敢判。 為什麼沒有 oracle 就沒有 bug 「這是錯的」這句話,比大多數人以為的難講。 你說 postcode 不該顯示

Day 17|登入前先進結帳頁,會發生什麼事?

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 17|登入前先進結帳頁,會發生什麼事?

前言 昨天新同事學會了如何收集證據,並且學會自己決定如何去探索我們給他的目標。然而在測試功能的時候,除了快樂路徑( Happy Path)之外,我們也必須要去檢查一些不是正常路線的非正常路徑。 所以今天要教這位新同事,怎麼走 Happy Path 以外的路徑。 為什麼要離開 happy path Happy path 有個很誘人的性質:它幾乎不會紅。 使用者照順序走、每一步都填對、不重整不返回不開第二個分頁 —— 這條路是產品被設計出來的樣子,也是開發自己測過最多次的路。你沿著它跑一百輪,得到的是一百次「正常」。 問題是缺陷不住在那裡。真實使用者會按上一步、會連點兩下、會把分頁放到隔天再回來、會直接把網址貼給同事。這些行為在 happy path 上一條都不會發生,所以那條路上的一百次綠燈,證明不了它們。 那為什麼不乾脆隨便亂點?因為亂點沒有依據,你事後說不出自己測了什麼、還有哪裡沒測。「非 happy path」不是一個地方,是無限多個地方,沒有一張表幫你挑,

Day 16|讓它自己選下一步,別一直測同樣的地方

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 16|讓它自己選下一步,別一直測同樣的地方

前言 探索章程(Charter)的目標與內容都寫好了,今天讓新同事拿著它,自己決定怎麼探索這個產品。 今天的主角是 explore,它是 model-invoked,agent 遇到「依照這份 charter 去探索」這類任務會自行觸發,名字不用記。 用 charters/toolshop-checkout-payment.yaml 跑一輪探索 但如果你想指定 skill,可以這樣把它明確叫出來。 /sdet-skills:explore 用 charters/toolshop-checkout-payment.yaml 跑一輪探索 如果手上還沒有章程,先照昨天那篇把它生出來。 第三種方式是你可以不寫成 charter 檔。你可以在告訴這位新同事時,把目標、範圍、oracle、邊界四樣直接講給他聽。 這種方式適合一次性、不打算重跑的探索。

Day 15|這次只給測試目標,操作步驟讓它自己想

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 15|這次只給測試目標,操作步驟讓它自己想

前言 在前幾天,我們都是告訴新同事我們需要什麼,而新同事幫我們去做這些工作。但今天呢,我們希望我們的同事可以更獨立一點,所以我們將不會告訴他要做哪些事情了。 從今天開始,新同事自己決定目標、自己決定界線,並且要如何探索。我們的角色將會從原本決策者變成一個 Mentor,而新同事則是除了執行者也是決策者。 而今天要教會他的東西就是,撰寫一份 Exploration Charter。 為什麼不繼續寫 test case Test case 有個很難承認的限制:它只驗得到你已經想到的那條路。 你寫「購買兩件商品,把數量改成零,檢查總金額不是負數」,它就永遠只會做這件事。負數這個點子是你想到的,那 charter 產生的價值就等於你的想像力,一個字都不會多。 這件事在人身上還算划算,因為人邊走邊想。但交給 agent 之後就不划算了:你多寫一步,它就多走一步,你沒寫的它一步都不會走。把每一步都寫死,等於花錢請它幫你按滑鼠。 要讓它走出你沒想過的路,你能給的就只剩三樣:要達成什麼、憑什麼算對、哪裡不准去。

Day 14|新同事寫的 Bug Report,別人照著做得出來嗎?

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 14|新同事寫的 Bug Report,別人照著做得出來嗎?

前言 昨天把異常分了類,七類裡只有 product-bug 有資格往下。今天處理往下的第一步:把它寫成一份報告。 素材是 2026-07-30 那批實際產出的 18 份 Bug Report(output/reports/issues/)。底下第三節那兩筆缺陷是比對報告與檔案系統查出來的,不是設想的。 為什麼這一天不是教你填範本 「寫 Bug Report」聽起來是全書最沒有技術含量的一天。範本網路上都有,欄位就那幾個。 但範本不是這一天的問題。真正的問題是:交給 agent 寫,結果會不會比人寫的差? 答案有點意外。人寫的報告最常見的死法不是寫太少,是寫太懂: CartComponent 的 lineTotal 沒綁到 currency pipe。 寫的當下很有價值,工程師看一眼就知道去哪改。三個月後那個檔案被重構掉,這張單就沒人看得懂了 —— 而且更糟的是,你也不確定它到底修好了沒有,

Day 13|先查清楚異常的原因,再決定要不要報 Bug

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 13|先查清楚異常的原因,再決定要不要報 Bug

前言 昨天把一輪的結果寫成 results.yaml,六個狀態各司其職,那一包分出 4 個 pass、6 個 fail、1 個 inconclusive、1 個 anomaly。 但 status 只回答了一半的問題。它說的是「這筆判不判得動」,沒說「這筆帳算誰的」。同樣是 fail,可能是產品寫錯,也可能是測試環境掛了、帳號被別人鎖了,或者根本是我自己操作順序弄反。 今天處理後面那一半。素材是 2026-07-26 到 07-30 十二輪的狀態檔,加上 output/known-false-positives.yaml。 為什麼不分類就報,等於開一間誤報工廠 回到昨天那筆「console

Day 12|測試結果不能只填通過或失敗

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 12|測試結果不能只填通過或失敗

前言 昨天新同事交回了完整的證據包,我們也讀完了 notes.md 裡記錄的現象與結論——每個結論背後都掛著證據。但讀完之後,我們還沒判斷過:這些觀察裡,哪些行為符合我們的預期,哪些又不符合。 所以我們今天就要根據新同事提供的這個 notes.md,去看看是不是還有東西是我們要處理的。 先看看 notes.md 裡面寫了哪些 ... 畫面小計顯示 0 購物車列:Combination Pliers / 單價 $14.15 / 小計 $00.00,而表格底部總計是 $14.15。資料層的 total 明明是 14.15。 標題欄位重複 購物車表頭為 Item | Quantity | Price | Total | Total,最後兩欄同名。 使用者選單顯示查無使用者 登入後導覽列顯示「User

Taking Testing Seriously: The Rapid Software Testing Approach

隨手筆記

Taking Testing Seriously: The Rapid Software Testing Approach

別再盲從「最佳實踐」了!軟體測試該認真升級了!你是不是也常陷入盲目寫 Test Case、追求自動化覆蓋率,卻還是漏掉一堆 Bug 的循環?軟體測試大師 James Bach 與 Michael Bolton 的最新力作 《Taking Testing Seriously: The Rapid Software Testing Approach》 終於登場!這是兩位大師累積 30 多年經驗,首次完整將「快速軟體測試(RST)方法論」結集成書 🚀這本書厲害在哪? 1. 跳出教條主義:教你跳脫業界「盲信最佳實踐」的同溫層,培養真正的批判性測試思維。 2. AI 時代的必備技能:面對 AI 浪潮,深入探討人類測試員不可替代的心理學、科學邏輯與核心價值。

Loop Engineering - 讓 AI 先幫你分類錯誤

Loop Engineering - 讓 AI 先幫你分類錯誤

每天早上八點,打開 Jenkins:發現昨晚的 regression 跑完了,14 個 test suite,6 個紅的。Standup 十點開始,你有不到一小時要搞清楚——哪些是腳本壞了、哪些是環境炸了、哪些要找誰處理。 於是你開始做每天都在做的事:點開 test result、下載 log、一支一支看。這些錯誤有可能是測試腳本的失誤、測試框架的錯誤,甚至是測試環境的問題。分類完之後,還要找到每個 Test Suite 的 owner,告訴他測試失敗了、是什麼樣的錯誤。手動做一輪,快則半小時,慢則整個早上。 這樣的動作其實很適合寫成一個 Skill,讓 AI 先幫你把這些失敗的測試分類好。 什麼是 Loop Engineering? 這個系列想做的事情很簡單:把「維護自動化測試」

Day 11|新同事交回 21 個檔案,我還是得逐一檢查

Claude × Playwright:30 天打造你的 Agentic SDET 同事

Day 11|新同事交回 21 個檔案,我還是得逐一檢查

前言 教會新同事從畫面觀察 API 並收集相關證據,今天終於有空可以來仔細看看這份證據包。 我記得自己是測試新手的時候,常常因為興奮而發現 Bug,我迅速寫好標題、列出重現步驟,甚至附上 log ,開票給開發人員,送出。但卻常常因 log 未完整收集或缺少關鍵資訊,就必須要重現問題再收集 log,這樣一來一回超級浪費時間的。為了避免我們的新同事重蹈覆轍,作為一個資深前輩,我們要檢查這位新同事是否已完整收集證據,還是草率了事。 為什麼證據包要能交棒 「留了證據」跟「這包證據能交給別人」是兩件事,而中間那道差距只有在你需要交出去的那一刻才會現形 —— 通常是你已經把單開出去、工程師回你一句「我這邊重現不出來」的時候。 那道差距長什麼樣?把同一包東西放在兩個讀者面前就看得出來: 你自己讀 別人讀 「登入成功」 記得是用哪個帳號 哪個帳號?哪個環境? 一張購物車截圖 記得那是按下去之後 按之前還是之後? 「network 沒問題」 記得看過哪幾筆 哪幾筆?在哪個檔案?