iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0

在電子工程中,我很快就學到:只測試電路中的某一個點,能告訴我的關於整個系統健康狀況的資訊非常有限。一個元件可以通過檢驗,組裝完成的電路板卻在加載時失效;電路板可以在工作臺上表現完美,一旦安裝到實際運行環境中卻行為不同。因此,品質是透過多層次的驗證來確立的,每一層回答的都是不同的問題。轉入品質保證(QA)工程後,我發現幾乎相同的原則隱藏在不同的術語背後。

在軟體 QA 中,我可以把驗證想成三個階段:產出物驗證、功能驗證與系統驗證。

產出物驗證

產出物驗證從最貼近實作的層級開始。原作者與審查者在程式碼、測試、設定檔或其他開發產出物進入版本控制之前進行檢視。證據可以包括程式碼審查紀錄、靜態分析報告,以及刻意展示在錯誤條件下會失敗的測試。這讓我想到在組裝電路之前先檢查一個個電子元件:一顆電阻的阻值可能正確,一顆 IC 可能通過檢驗,但這些結果都無法證明完成的電路板能正常運作。同樣地,乾淨的靜態分析與通過的單元測試是有價值的證據,但它們只驗證了軟體的其中一層。

功能驗證

功能驗證把焦點從*「這個東西有沒有被正確地建構出來?」轉向「它的行為是否符合需求?」在這個階段,產品與 QA 在發布前共同承擔責任。對於確定性的功能,這可能涉及驗收標準、邊界值分析、負向測試,以及預期與實際的斷言比對。AI 驅動的功能則帶來另一種挑戰,因為輸出未必總是存在唯一正確的字串。在那些情況下,驗證可能需要可接受區間的定義、一份黃金資料集(golden dataset)*,以及留下紀錄的人工評估。電子工程中的對應做法是:把組裝完成的電路拿去對照它的設計規格進行測試——個別元件可能是健康的,但我仍需驗證它們組合後的行為能在公差範圍內產出要求的輸出。

系統驗證

最後,系統驗證要問的是:當這些各自通過驗證的零件開始互相作用之後,產品是否仍持續正確運作。此時 QA 與維運關注的是整合之後、甚至上線之後的端到端行為,使用的證據包括 E2E 測試結果、生產環境抽樣、監控與告警紀錄。這就像在貼近真實的運行條件下為完成的電子系統通電。元件通過了,電路通過了,現在我想知道的是:當整個系統遇上真實的輸入、相依服務、流量與故障條件時會發生什麼——因為生產環境有一種驚人的天賦,總能找出沒人邀請它進 sprint 的測試案例。

還記得上一章的 Aurora Shop 嗎?那是我為了情境需要而虛構的電商平台。它由大約十幾人的團隊營運,其中只有兩人分擔 QA 職責。公司上線了一個 AI 客服助理,用來回答客戶關於訂單、出貨與退貨政策的問題。

驗證層次 負責人 發生時機 Aurora Shop 示例 證據
產出物驗證 原作者 + 審查者 每次提交時,進入版本控制之前 審查更新後的 AI 檢索邏輯,並驗證當退貨政策缺陷被重新引入時,自動化測試會失敗。 程式碼審查、靜態分析、自動化測試結果
功能驗證 產品 + QA 需求定義之後、發布之前 針對一份包含可退貨商品、例外情況、邊界案例與模糊客戶提問的黃金資料集測試 AI。 驗收標準、黃金資料集、人工評估
系統驗證 QA + 維運 整合之後與上線之後 執行 E2E 測試並抽樣生產環境回應,以偵測過期的政策資料、整合失敗或錯誤的 AI 回答。 E2E 結果、生產環境抽樣、監控與告警

我認為這個三層模型最有用的一點在於:每個階段都有*明確指名的負責人、生命週期中定義好的時間點,以及其他人可以獨立驗證的證據。*產出物驗證保護的是實作,功能驗證保護的是預期行為,系統驗證保護的是整合後的產品。如果某一層有負責人卻沒有留下可重現的證據,這個驗證就難以被信任;如果它有證據卻沒有人清楚負責,缺陷就可能悄悄變成別人的責任。

請記住,「負責人」實際上會因誰擁有這些測試階段的使用權、權限與職權而有所不同。這不是一個黑白分明的概念。這裡的數字是示例演練資料,並非精確的量測值。


上一篇
當綠燈不再足夠:為什麼我不單獨信任 AI 做 QA
下一篇
「要友善」無法被爭論,也無法被測試
系列文
踏入品質保證工程之路:QA 新手如何善用 AI 與開發者工具6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言