你是否曾經點開一個 APP,結果它閃退了?或者在網路銀行轉帳,按鈕卻毫無反應?當你遇到這些「Bug」(程式錯誤)時,你心中咒罵的,可能是開發者(Developer, RD),但你不知道的是,在這背後,有一群人正扮演著品質的守門員,他們就是「軟體測試工程師」(Software Quality Assurance, QA)。
當我們談論軟體時,很多人第一時間想到的是「功能」:這個 APP 能不能聊天?那個網站能不能購物?但真正讓使用者留下來、甚至產生信任感的,是「品質」與「體驗」。
功能,只是軟體開發的「基本分」;而品質,才是決定勝負的「關鍵分」。
在軟體測試(Software Testing)領域,工作內容遠比「點一點、按一按」來得複雜。這份工作,是串連整個「軟體開發生命週期」(Software Development Life Cycle, SDLC)的關鍵黏著劑。
1. 工作內容:不只是「找碴」,我們是「品質的建築師」
軟體測試的範疇,早已不是在開發完成後才進場「抓蟲」。一個專業的 QA,會深入 SDLC 的每一個環節:
-
SDLC 的起點:需求分析
- 當產品經理(PM)提出「我想要一個登入功能」時,QA 就要開始「測試」這份需求了。
- QA 會問:「密碼忘記了怎麼辦?」「帳號被鎖定怎麼辦?」「第三方登入(Google/Facebook)的流程是什麼?」「輸入錯誤時的提示訊息是什麼?」
- 這一步稱為「Shift-Left Testing」(左移測試),在程式碼都還沒寫之前,就先找出邏輯上的漏洞。這時候找到一個問題,成本最低,效益最高。
-
SDLC 的中段:計畫與設計
-
測試計畫(Test Plan): 我們要測什麼(範圍)?用什麼方法測(策略)?誰來測(資源)?什麼時候測(時程)?
-
測試案例(Test Case): 這是 QA 的劇本。我們會寫下精確的步驟:「1. 進入登入頁面 -> 2. 輸入正確帳號 abc -> 3. 輸入錯誤密碼 123 -> 4. 點擊登入 -> 5. 驗證是否出現『密碼錯誤』提示」。
- 這份文件,是 QA 與 RD 之間最重要的溝通橋樑。
-
SDLC 的執行:手動與自動
-
手動測試(Manual Test): 這是最符合人性的測試。QA 會扮演「終極使用者」,用各種正常或「異常」的方式操作軟體。例如,在電商網站結帳時,故意把網路關掉,看看系統會不會崩潰。
-
自動化測試(Automation Test): 對於那些每次都要重複執行的核心功能(例如:登入、註冊、結帳),我們不會傻傻地每次都用手點。QA 會撰寫程式碼(例如使用 Selenium, Cypress, Playwright 等工具),讓電腦自動去跑這些測試。這能 24 小時不間斷地執行,大幅提升效率。
-
SDLC 的尾聲:回報與追蹤
-
Bug Report(錯誤回報): 找到 Bug 只是第一步。如何「精準」地回報 Bug 才是一門藝術。一份好的 Bug Report 必須包含:清晰的標題、重現步驟、實際結果、預期結果、截圖或影片。這能幫助 RD 快速定位問題,而不是反問你:「在我電腦上是好的啊?」
-
回歸測試(Regression Test): RD 修好 Bug A 之後,QA 必須重新測試 Bug A 是否修好了。更重要的是,還要測試「其他功能」是否因為這個修改而「壞掉了」。這就是自動化測試大顯身手的地方。
2. 迷思誤區:打破你對「點點點」的刻板印象
很多人對 QA 存在嚴重的誤解,以為這工作沒什麼技術含量。
3. AI 影響:QA 不會被取代,但會被「進化」
AI 正在席捲科技業,QA 領域也不例外。很多人擔心 QA 會不會是第一批被 AI 取代的工作?
我的觀點是:不會,但工作的「重心」正在轉移。
AI 不是萬靈丹,它是 QA 的「超級輔助工具」。
-
AI 協助生成測試案例: 你把需求文件丟給 AI(如 ChatGPT/Gemini),它可以快速生成一份基礎的 Test Case 列表,QA 再去精修和補充邊界條件(Edge Case)。
-
AI 協助撰寫自動化腳本: 以前你可能要花 1 小時寫一個腳本,現在 AI(如 GitHub Copilot)可以直接幫你生成 80% 的程式碼,你只需要調整和驗證。
-
AI 智慧型測試(Smart Testing): AI 可以分析這次 RD 提交的程式碼「改了哪些地方」,然後「預測」最有可能出錯的測試案例,優先執行它們,這叫「測試衝擊分析」(Test Impact Analysis)。
-
AI 視覺化測試: 以前測試 UI(使用者介面)是否跑版,要靠人工看。現在 AI 工具(如 Applitools)可以「看懂」畫面,自動抓出那個跑掉 2 個像素的按鈕。
AI 的出現,正在把 QA 從「重複性的執行」中解放出來。AI 負責「勞力」,人類 QA 則專注在更高端的「腦力」—— 風險分析、品質策略、流程優化、以及複雜的探索性測試。
4. 領域秘辛:那些用戶看不見的「品質角力」
這個領域有一些「不能說的秘密」,或者說,是新手看不到的「檯面下」運作。
-
秘辛一:「這個 Bug,我們決定不修。」
- 什麼?QA 居然同意不修 Bug?是的。在真實的商業世界裡,「上線時程」和「品質」永遠在拔河。
- 當 PM 說:「這個功能明天一定要上線!」而 QA 發現一個「在特定手機的特定版本下、點擊 3 次才會出現」的 Bug。這時 QA 的價值就不是「擋住不讓上」,而是「評估風險」。
- 我們會問:這個 Bug 影響多大?有多少使用者會遇到?有沒有暫時的解決方案?最後團隊(包含 PM, RD, QA)會共同決議:「OK,這個 Bug 風險可控,先上線,列入下個版本修復。」這就是「基於風險的測試」(Risk-Based Testing)。
-
秘辛二:「測試環境,永遠是地獄。」
- RD 跟你說:「我在我電腦上是好的啊!」這句話 90% 是真的。因為 RD 的「開發環境」、QA 的「測試環境」、以及使用者在用的「正式環境」,是三個不同的世界。
- QA 常常要花費大量時間在處理「環境問題」:測試資料庫沒同步、後端 API 沒部署好、網路設定不通...。這也是 SDLC 中最常被忽略、卻最耗時的成本之一。
-
秘辛三:「最棒的 QA,是隱形的。」
- 就像開頭提到的「服務品質」,很多 QA 的努力,使用者是感受不到的。
- 當你的銀行轉帳「沒有」出錯、你的電商訂單「沒有」遺失、你的遊戲「沒有」閃退... 這背後,是 QA 團隊執行了成千上萬次的「效能測試」、「壓力測試」、「安全性測試」和「容錯測試」。這些「無形的品質」,才是真正的核心競爭力。
5. 入門建議:給想成為「品質守門人」的你
如果你對這個領域有興趣,想成為一名現代 QA,我的建議有三:
-
第一:培養「同理心」與「破壞性思維」
- 你要能一秒切換角色。一下是「乖巧的使用者」,完全按照正常流程操作;一下又是「手賤的破壞王」,專門去點那些不該點的地方、輸入奇怪的符號,想盡辦法把系統搞垮。
-
第二:練好「精準溝通力」
- QA 是 PM 和 RD 之間的翻譯官。你要能把 PM 模糊的「需求」,翻譯成 RD 能看懂的「測試案例」;也要能把 RD 複雜的「技術問題」,翻譯成 PM 能聽懂的「使用者風險」。
-
第三:學會「程式語言」與「自動化」
- 現在「只會手動測試」的 QA 已經越來越沒有競爭力。你不需要像 RD 一樣精通演算法,但你至少要看得懂一種語言(Python 或 JavaScript 是主流),並且能操作至少一種自動化框架(如 Cypress 或 Playwright)。
總結來說,軟體測試不再只是 SDLC 的一個「階段」,它是一種貫穿全程的「思維」(Mindset)。
開發(RD)的任務是「讓功能動起來」(Make it work),而測試(QA)的任務是「確保它在各種情況下都能正確地動」(Make it work correctly)。
當你開始從「交付高品質的體驗」而不是「找 Bug」的角度思考測試時,你就已經站在職人思維的門檻上了。