對軟體開發人員來說,AI 的進步不只是 coding 變很容易而已,更重要的是過去難以實現的 理想

2025/05/16

對軟體開發人員來說,AI 的進步不只是 coding 變很容易而已,更重要的是過去難以實現的 “理想” 軟體工程,現在變得輕而易舉,垂手可得了…

會提到 “軟體工程”,是因為我手上在進行的 side project … 就是之前聊的 vibe testing (只針對 api).. XDD。上週貼的部落格文章 (參考第一則留言) 我放了這麼張圖:

(參考 PO 文的貼圖)

受惠於 AI 強大的 function calling 能力, 讓我變得出 api auto test runner, 來執行我的商業流程測試案例。由於技術的進步,測試案例以後的苦功都被解決了,那麼我就在想,前面的部分呢?

如果記得我所謂的 “商業流程測試案例” 是什麼,我就貼一段我文章內提到的案例:

Given

測試前請清空購物車 指定測試商品: 可口可樂

When

step 1, 嘗試加入 11 件指定商品 step 2, 檢查購物車內容

Then

step 1 執行時,應回傳操作失敗訊息(數量超出限制: 10) step 2 查詢結果,購物車應該是空的 –

這是測試系統限制 (購物車同商品數量不能超過10) 衍伸出來的一個案例而已。這案例沒有告訴你要打哪個 API,也沒跟你講要去點畫面上的哪個按鈕.. 就只是講邏輯上你操作的意圖,想要加入 11 件商品就要被阻止這邏輯而已,這就是我所謂的 “商業情境” 測試案例。

這些案例要能 “真正” 被執行,勢必得補上 “操作介面” 的規格才行。補上 API 的規格,AI 就有能力替我跑完 API 自動測試 (已經 POC 成功) 。如果我補上 “網頁的設計規格”,我用 Playwright MCP 這樣的工具應該也能跑完 UI 自動測試 (其實也試出來了,不過成功率還不夠高)。再挑戰困難一點,非網頁的 APP,我用 Computer Use 這類工具,補上 UI 設計文件,理論上也能自動測試 (這太傷本了我現在先跳過)。某種程度,這商業情境的測試案例,已經被我抽象化,可以重複使用了。

工程技術簡化了後面大量的苦功後 (寫詳細測試案例,寫測試程式,人工執行測試… 通通省掉了),我才開始有餘力,思考前段的問題: 我該測什麼才對? 這才是測試人員最有價值的地方啊,他們知道甚麼情境才能 “逼” 出問題。

所以,這情境我往前推論。我的大腦能寫出這段測試案例,我至少需要掌握兩件事:

  1. 購物車是什麼東西? 他的基本操作 (正確用法,Happy Path)
  2. 邊界 (此例是購物車的單一商品 “容量” 是 10 件商品)

我再腦補一個好了:

  1. 邊界 (購物車所有商品數量,總數不能超過 50 件)

如果我掌握條件,每個邊界都有上下界 ( 0 ~ 10 ), ( 0 ~ 50 ),我就能組合出多種案例了… 每個邊界至少都有低於下界 ( - 1 ), 正常範圍 ( 5 ), 高於上界 ( 100 ) 三種狀況,兩個邊界至少就 9 種測試案例了

這些靠 AI 的能力很容易展開,因此,關鍵就在於你前面階段的文件,是否說明清楚這三個條件。就是我圖上寫的:

  1. 領域知識
  2. 接受條件 ( 就是上面舉例的兩個邊界限制 )

突然發現,這就是測試左移啊。測試人員的價值,就在於你是否掌握了領域知識,根是否掌握了這產品你的 “品質接受程度” 的要求。想的清楚這些,你寫得出來,AI 就能幫你放大這些效益。

從這角度來看,AI 不是幫你 “用 10x 速度寫文件” 喔,這加速關係不是線性的,是指數的。因為除了 “寫”,也包含 “展開”。這邊展開了各種獨立要求交互展開的測試案例 (單商品,全購物車,以及其他沒寫出來的資安等等要求),也展開了不同操作界面的界面規格 ( API, WebUI, APP .. ) 的不同操作方式。

回到最開始的切入點: 沒有 AI 工具的輔助,過去的 “人力” 實在很難填滿這些文字內容的工作量啊,但是正確的安排流程跟做法後,在關鍵的環節裡,AI 可以理解內容,幫你正確的 “展開”,展開這環節幫你把複雜度降了兩個維度 (一個是 AC 交乘,另一個是 Interface 交乘)。工作量可能因為這樣就降了 1000 倍…

接下來,要寫完每一個獨立的案例,或是測試,AI 也替你加速了 10x ( token 產生的速度再怎麼樣也比我自己打字快 ).. 前後加一加就等於加速了 10000 倍。當然,實際上沒有這種幅度的進步,但是事實上,除了單純的加速之外,對我而言更有意義的是我能做到以前做不到的測試覆蓋率。

這是 AI 對軟體工程的價值啊,你要懂得掌握使用 AI 的技巧,也要懂得善用 AI 的優勢,重新思考怎麼改變流程。沒有改變流程,你仍然能得到加速的好處,不過那就是 10x, 不是 10000x …

其實這只是我最近在思考的一個環節而已,AI 帶來太多本質上的改變了,這類改變到處都是。回到頭來,基礎觀念還是很重要,沒有這些觀念,我可能想不通這些改變。沒有掌握 AI 的基本使用技巧 (例如我在直播不斷提到 LLM API 基本的 design patterns),我只靠現成的工具我應該變不出來 api auto test runner ..

軟體工程師不會被取代,但是你的思路必須跟上 AI 的進步。基礎足夠,有跟上的,就等於升了一個維度,對其他人而言,這是 “降維打擊” …

這篇先寫到這邊,剩下的改天再繼續寫 XD






Facebook Pages