在 DevOpsDays Taipei 2025 的工作坊上,我提出一個觀察:目前的大型語言模型(LLM),在軟體測試這個領域的知識非常貧乏。這並不是模型本身的錯,而是反映出一個更深層的現實:軟體測試,是一門冷門且長期被忽視的學問。
我們不妨先問自己:你最近一次看到新的、非工具導向的軟體測試專書是什麼時候?過去十年中,市面上的測試書籍絕大多數都集中在 Selenium、Playwright、Cypress 等框架,真正談測試設計、測試策略與認知模型的書籍屈指可數。而網路上的測試文章,多半來自工具廠商或培訓業者,他們未必真正理解測試理論,也往往為了行銷效果而簡化、甚至扭曲概念。
這種現象在我們詢問 LLM 的時候尤為明顯。舉例來說,我曾詢問 GPT-4o 何謂 Equivalence Class Partitioning(等價類劃分),得到如下回答:
Equivalence Class Partitioning(ECP)是一種黑箱測試技術,其目的是減少測試案例數量,同時涵蓋大部分重要情境。它會將輸入資料分成若干「等價類」,每類代表相同行為的輸入,只需測一個代表值即可。
分類如下:
- 有效等價類:符合規則的輸入,如年齡輸入為 0–120。
- 無效等價類:不符合規則的輸入,如 -1、150、或 “abc”。
乍看之下,這段文字簡明扼要,語句清晰,但細讀就會發現邏輯上出現了明顯的偏差:既然所謂等價類是「具有相同行為」的輸入集合,那為什麼非得分成有效與無效?
更糟的是,這種說法並非 GPT 的特例。你問 Gemini、Grok,答案也大同小異:等價類劃分就是有效 vs 無效。
這其實是一種觀念上的誤導。真正的定義,請參考測試領域的經典著作《The Art of Software Testing》。Glenford J. Myers 明確指出:
An equivalence class is a set of input values that are processed by the program in the same way and expected to produce the same result.
他從未主張只能分為「有效」與「無效」,而是強調根據程式的處理行為與預期的輸出結果來劃分。也就是說,哪怕都是合法輸入,只要觸發的邏輯不同、回應的結果不同,就應該劃分成不同的等價類。
LLM 為何會「畫地自限」?
我進一步詢問 GPT-4o,它給出了三個原因,反而讓我們得以更深刻地檢視整體問題的根源:
- 教科書與課程過度簡化: 初學者教材多以「有效/無效」作為入門,結果這種簡化變成模型的預設。
- 語料偏誤: LLM 主要訓練資料來自網路,而網路上最多的,就是這種工具導向或課程講義式的內容。
- 測試目的被誤解: 多數人只想知道輸入「對不對」,卻忽略了「即使都是對的,是否會產生不同行為」。
換言之,LLM 在測試上的知識限制,其實是這個產業整體忽視測試設計深度的結果。
反思:在這樣的基礎上,我們能期待 LLM 自動產出高品質的測試嗎?
很遺憾,現階段的答案恐怕是否定的。
我們面臨的是一個結構性問題:
- 測試書籍數量稀少
- 網路文章多為工具推銷
- 真正的測試案例與討論幾乎不被公開(尤其在非開源專案中)
- 測試術語高度多樣化,連定義都不一致
在這樣的環境中,LLM 雖然能「寫出測試」,但寫出的內容經常流於表面,甚至把錯的說法包裝得更像真的。
結語:我們該怎麼做?
我們不是要否定 LLM 的價值,而是要提醒自己:測試的品質,永遠不該外包給機器學習模型。
與其幻想 LLM 會替我們解決測試問題,不如思考:
- 我們是否願意讓更多測試知識被寫下、分享出來?
- 我們是否願意打破測試只是 QA 的事這個偏見?
- 我們是否能建立更一致、可理解的測試語言與結構?
測試知識的稀缺,是我們整個產業共同的責任。而我們現在面對的,是一個由人類忽視所訓練出來的 AI,正不斷放大這個盲點。
這不是 AI 的問題,而是我們選擇不談測試的代價。
發表迴響