QA 面試 50 題 — 從初階到資深的常見題庫與回答框架

跑過 30+ 場 QA 面試(兩邊都當過),整理出真正會被問的 50 題。不是背答案,是看了之後能用自己的話講出 framework。

一、概念題(10 題)

1. 什麼是 test case?跟 test scenario 差在哪?

框架:scope + 具體度。 - Test scenario:高階情境(「測試結帳流程」) - Test case:可執行的步驟(precondition + steps + expected) - 一個 scenario 通常拆成多個 case

2. 解釋等價分割(equivalence partitioning)

把輸入分群,群內挑一個代表測。例:年齡 0-17(未成年)、18-64(成年)、65+(老年)→ 各挑一個值。

3. 邊界值分析(boundary value analysis)

挑邊界 +/- 1 測。例:限制 1-100,挑 0、1、2、99、100、101。最多 bug 藏這裡

4. Black box vs white box

  • Black:只看輸入輸出,不看內部
  • White:看 code 覆蓋(branch、line、condition coverage)
  • QA 多 black、開發/SDET 多 white

5. 什麼時候用 unit / integration / E2E?

層級 抓什麼 bug
Unit 邏輯錯誤
Integration 元件間契約
E2E 真實使用者流程

Testing pyramid:底寬頂窄。

6. Smoke vs sanity vs regression

  • Smoke:build 進來先跑、確認沒掛
  • Sanity:修了某功能、確認那塊正常
  • Regression:發版前全跑、確認舊功能沒壞

7. Flaky test 怎麼處理?

框架:找原因 > retry。 1. 重現:固定環境跑 10 次,看失敗率 2. 加 log / video / trace 找 race condition 3. 修:通常是 wait 條件錯、test data 衝突、外部依賴 4. 不要直接加 retry,會蓋住問題

8. Test coverage 多少才夠?

100% 覆蓋率 ≠ 100% 沒 bug。看: - 業務關鍵路徑覆蓋率(這個要追 100%) - 行覆蓋率(80% 即可) - 分支覆蓋率(70% 即可) - 覆蓋率高不代表 case 寫得好

9. Bug 跟 defect 跟 issue 差在哪?

實務上多半混用,但嚴謹講: - Defect:實作不符合 spec - Bug:執行時錯誤 - Issue:包含 defect/bug/UX 不佳/spec 不清楚

10. 解釋 shift-left testing

把測試左移(更早)到 spec/設計階段,而不是等開發完才測。spec review、design review、unit test 都是 shift-left。


二、實戰題(15 題)

11. 給你「登入功能」,列 10 個 test case

好答案的拆法

  • Happy path 1: 正確帳密登入
  • 邊界 2-3: email 超長、密碼最小長度、空白前後
  • 異常 2-3: 錯密碼、不存在帳號、被鎖定帳號
  • 安全 2: SQL injection、XSS in email field
  • UX 1-2: 記住我、忘記密碼連結
  • 跨域 1: 不同瀏覽器/裝置 session

寫滿 10 個還能列下去 = 加分。

12. 怎麼測一個只有後端的 API?

1. 看 OpenAPI / Postman collection 確認 endpoint
2. 用 Postman / curl / pytest 測:
   - Happy path(正確 payload)
   - Schema 驗證(每個欄位的型別/必填)
   - 邊界值
   - 錯誤碼(400/401/403/404/500 各有對應情境)
   - Rate limit、auth、permission
3. 整合測試:API + DB 一致性
4. 效能:壓測(k6 / Locust)

13. 怎麼測一個翻譯/多語系功能?

  • 文案完整性:每個 key 都有 12 語的翻譯嗎?
  • 長度:德文常常比英文長 30%,UI 會被擠破嗎?
  • 方向:阿拉伯文 RTL,整個排版會反嗎?
  • 變數插值:{name} 您好 在日文是「{name}様」,順序對嗎?
  • 複數:英文 1 item / 2 items,中文沒複數,但俄文有 3 種
  • 日期/時間/貨幣 format
  • 切換語言後 URL、SEO(hreflang)

14. 怎麼測一個搜尋功能?

  • 關鍵字:精確、部分、模糊、空字串、特殊字元、超長
  • 語言:中英混合、繁簡、emoji
  • 排序:相關度、時間、價格
  • 篩選:多條件交集
  • 分頁:邊界(第一頁、最後一頁、超過範圍)
  • 效能:1 字元搜尋會抓爆 DB 嗎?
  • 安全:injection
  • 無結果頁面、loading 狀態

15. 怎麼測一個檔案上傳?

  • 大小邊界:0 byte、最大 -1、最大、最大 +1、超大
  • 格式:允許的、禁止的(.exe、.bat)、副檔名造假(jpg 改成 pdf)
  • 數量:單檔、多檔、超過上限
  • 網路:上傳中斷、慢速、timeout、重試
  • 安全:含病毒檔案、ZIP bomb、超長檔名
  • 後端:相同檔名衝突、儲存空間滿

16. 線上發生「某使用者反映無法登入」,怎麼 debug?

框架:reproduce → narrow down → root cause。

  1. 問清楚:什麼錯誤訊息?什麼瀏覽器?什麼網路?什麼裝置?
  2. 重現:能不能用同樣帳號重現
  3. 看 log / monitoring:是不是只有他、哪個 step 卡住
  4. 排除環境:清 cache、換瀏覽器、換網路
  5. 縮小:是 API 401?前端沒處理?token 過期?
  6. 報修,留證據(screenshot、HAR、log)

17. 突然全部測試都失敗,第一個動作是?

不要懷疑自己的 case,先懷疑環境

  1. 環境健康嗎?(API 通嗎、DB 通嗎、第三方通嗎)
  2. 最近誰動了什麼?(git log、deploy log)
  3. 跑單一 case 看錯誤訊息一致嗎
  4. 確認是測試壞還是 product 壞

18. 怎麼測一個沒有 spec 的功能?

  • 跟 PM / 開發訪談,自己寫一份 mini-spec
  • 看舊版類似功能、看競品
  • 跑探索性測試,發現一邊整理
  • 把結果寫成 spec 給團隊 review,補強團隊知識

19. 一個 sprint 進來 20 個 user story,測不完怎辦?

風險導向測試。 1. 跟 PM 排優先級:哪幾個會影響營收 / 法遵 / 大量使用者 2. 高優先 + 高風險:full coverage 3. 低優先 + 低風險:smoke 即可 4. 對 PM/PM 攤開,要他選「砍 case」還是「延 sprint」,不要自己吞

20. 自動化測試什麼時候不該寫?

  • 功能還在大改(每週都要改 case 維護成本爆)
  • 一次性需求
  • UI 極度動態(無法穩定 selector)
  • ROI 低(手動 5 分鐘的,寫自動化 3 天)

21-25. 略,這幾題請依個人經驗回答

    1. 講一次你找到的最有趣 bug
    1. 講一次你跟開發吵架的經驗
    1. 你寫過最自豪的 test plan
    1. 你最大的 QA 失誤是什麼?學到什麼?
    1. 介紹你最熟悉的測試框架

三、技術題(15 題)

26-30. 自動化框架

    1. Playwright / Cypress / Selenium 差異?
    1. Page Object Model 是什麼?解決什麼問題?
    1. Fixture / Hook(beforeAll / beforeEach)的用法?
    1. 怎麼處理測試之間的資料隔離?
    1. Parallel 跑測試會遇到什麼問題?

31-35. CI / CD

    1. 描述一條 CI pipeline 應該有什麼 stage
    1. Test report 怎麼整合到 PR review?
    1. 失敗的測試怎麼自動 retry?要嗎?
    1. 怎麼分 smoke 跟 full regression 在不同時機跑?
    1. Test environment 跟 prod 的差異要怎麼管理?

36-40. API / 後端

    1. REST vs GraphQL 測試差異?
    1. 怎麼測一個有 auth token 的 API?
    1. mock 第三方 API 的策略?
    1. 怎麼測 race condition?
    1. DB 測試時用真實 DB 還是 mock?為什麼?

四、行為題(10 題)

回答用 STAR:Situation / Task / Action / Result。

41. 講一次你說服開發接受你的 bug

  • S: 開發認為這不是 bug 是 spec 沒寫
  • T: 我要讓他接受並修
  • A: 我把 spec 模糊處列出來,找 PM 三方確認意圖,再用使用者場景說服
  • R: 開發修了,PM 把 spec 補清楚

42. 你跟 PM/開發意見不合怎處理?

要點:先理解對方立場 → 用資料 / 案例佐證 → 找共同目標。不要陷入「你錯我對」。

43. 工作壓力大時你怎麼排優先級?

要點:跟主管確認目標、列風險、攤開來談取捨。

44. 你跟過最爛的工程文化?

陷阱題。不要罵前東家,講「我從中學到 XX」。

45-50. 略

    1. 你怎麼跟新加入的 QA 帶?
    1. 你會怎麼影響團隊文化?
    1. 五年職涯規劃?
    1. 對 AI 時代 QA 的看法?
    1. 為什麼想離開上一份工作?
    1. 你有什麼問題想問我們?

必問面試官的 3 題(很多人忘記)

  1. 你們目前的 QA / Dev 比例? (太低代表 QA 壓力大)
  2. release 流程怎麼跑?多久一次?hot fix 流程?(看流程成熟度)
  3. 過去半年最棘手的 production bug 怎處理的?(聽 incident handling 成熟度)

最後

面試是雙向的。你不是去考試,是去看公司值不值得待。準備是基本,但保持「我也在挑你」的心態,反而能談到更好的待遇。