小時不讀測試書,長大只能被 LLM 胡說八道說服

在 DevOpsDays Taipei 2025 的工作坊上,我提出一個觀察:目前的大型語言模型(LLM),在軟體測試這個領域的知識非常貧乏。這並不是模型本身的錯,而是反映出一個更深層的現實:軟體測試,是一門冷門且長期被忽視的學問

我們不妨先問自己:你最近一次看到新的、非工具導向的軟體測試專書是什麼時候?過去十年中,市面上的測試書籍絕大多數都集中在 Selenium、Playwright、Cypress 等框架,真正談測試設計、測試策略與認知模型的書籍屈指可數。而網路上的測試文章,多半來自工具廠商或培訓業者,他們未必真正理解測試理論,也往往為了行銷效果而簡化、甚至扭曲概念。

這種現象在我們詢問 LLM 的時候尤為明顯。舉例來說,我曾詢問 GPT-4o 何謂 Equivalence Class Partitioning(等價類劃分),得到如下回答:

Equivalence Class Partitioning(ECP)是一種黑箱測試技術,其目的是減少測試案例數量,同時涵蓋大部分重要情境。它會將輸入資料分成若干「等價類」,每類代表相同行為的輸入,只需測一個代表值即可。

分類如下:

  1. 有效等價類:符合規則的輸入,如年齡輸入為 0–120。
  2. 無效等價類:不符合規則的輸入,如 -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,它給出了三個原因,反而讓我們得以更深刻地檢視整體問題的根源:

  1. 教科書與課程過度簡化: 初學者教材多以「有效/無效」作為入門,結果這種簡化變成模型的預設。
  2. 語料偏誤: LLM 主要訓練資料來自網路,而網路上最多的,就是這種工具導向或課程講義式的內容。
  3. 測試目的被誤解: 多數人只想知道輸入「對不對」,卻忽略了「即使都是對的,是否會產生不同行為」。

換言之,LLM 在測試上的知識限制,其實是這個產業整體忽視測試設計深度的結果。

反思:在這樣的基礎上,我們能期待 LLM 自動產出高品質的測試嗎?

很遺憾,現階段的答案恐怕是否定的。

我們面臨的是一個結構性問題:

  • 測試書籍數量稀少
  • 網路文章多為工具推銷
  • 真正的測試案例與討論幾乎不被公開(尤其在非開源專案中)
  • 測試術語高度多樣化,連定義都不一致

在這樣的環境中,LLM 雖然能「寫出測試」,但寫出的內容經常流於表面,甚至把錯的說法包裝得更像真的。

結語:我們該怎麼做?

我們不是要否定 LLM 的價值,而是要提醒自己:測試的品質,永遠不該外包給機器學習模型。

與其幻想 LLM 會替我們解決測試問題,不如思考:

  • 我們是否願意讓更多測試知識被寫下、分享出來?
  • 我們是否願意打破測試只是 QA 的事這個偏見?
  • 我們是否能建立更一致、可理解的測試語言與結構?

測試知識的稀缺,是我們整個產業共同的責任。而我們現在面對的,是一個由人類忽視所訓練出來的 AI,正不斷放大這個盲點。

這不是 AI 的問題,而是我們選擇不談測試的代價。

發表迴響

探索更多來自 轉念學 - 敏捷三叔公的學習之旅 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading