iT邦幫忙

2025 iThome 鐵人賽

DAY 0
0
自我挑戰組

全集中軟體測試:新手必懂的 SDLC 與測試愛恨糾葛系列 第 3

APP 閃退、網銀卡住?你該認識的軟體「品質守門人」(QA) 他們的工作,就是防止你的世界崩潰...

  • 分享至 

  • xImage
  •  

你是否曾經點開一個 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 存在嚴重的誤解,以為這工作沒什麼技術含量。

  • 迷思一:「測試 = 點點點,我阿嬤來都會。」

    • 真相: 「點點點」只是執行。真正的核心能力在於「設計」。你怎麼知道要「點哪裡」?你如何設計出一套測試案例,能用最少的步驟、涵蓋最大的風險?這需要強大的邏輯分析、同理心(站在使用者角度思考),甚至一點「破壞性」的創造力。
  • 迷思二:「QA 就是 RD 的敵人,專門找麻煩。」

    • 真相: QA 和 RD 是「戰友」,我們的共同敵人是「Bug」。一個成熟的團隊,QA 和 RD 的關係是緊密合作的。QA 提早發現問題,是保護 RD 不用在半夜被叫起來修「線上環境」(Production)的 Bug。我們不是在「找碴」,我們是在「共同承擔品質」。
  • 迷思三:「測試是開發的最後一關。」

    • 真相: 這是 20 年前「瀑布式開發」(Waterfall)的舊思維。在現代的「敏捷開發」(Agile)和 DevOps 流程中,測試是「持續」發生的。QA 會和 RD 一起參加每日站立會議、一起討論需求、甚至在 RD 開發的同時就開始寫自動化腳本。品質是「內建」在流程中的,而不是「檢查」出來的。
  • 迷思四:「自動化測試可以完全取代手動測試。」

    • 真相: 自動化擅長處理「重複性高」、「變動性低」的回歸測試。但它無法取代人類的「直覺」和「探索性測試」(Exploratory Testing)。例如,APP 的「滑順度」、「美感」、「易用性」,這些都需要「人」去感受。

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」的角度思考測試時,你就已經站在職人思維的門檻上了。


上一篇
軟體品質不是測試後才開始的事...
系列文
全集中軟體測試:新手必懂的 SDLC 與測試愛恨糾葛3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言