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。
- 問清楚:什麼錯誤訊息?什麼瀏覽器?什麼網路?什麼裝置?
- 重現:能不能用同樣帳號重現
- 看 log / monitoring:是不是只有他、哪個 step 卡住
- 排除環境:清 cache、換瀏覽器、換網路
- 縮小:是 API 401?前端沒處理?token 過期?
- 報修,留證據(screenshot、HAR、log)
17. 突然全部測試都失敗,第一個動作是?
不要懷疑自己的 case,先懷疑環境。
- 環境健康嗎?(API 通嗎、DB 通嗎、第三方通嗎)
- 最近誰動了什麼?(git log、deploy log)
- 跑單一 case 看錯誤訊息一致嗎
- 確認是測試壞還是 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. 略,這幾題請依個人經驗回答
-
- 講一次你找到的最有趣 bug
-
- 講一次你跟開發吵架的經驗
-
- 你寫過最自豪的 test plan
-
- 你最大的 QA 失誤是什麼?學到什麼?
-
- 介紹你最熟悉的測試框架
三、技術題(15 題)
26-30. 自動化框架
-
- Playwright / Cypress / Selenium 差異?
-
- Page Object Model 是什麼?解決什麼問題?
-
- Fixture / Hook(beforeAll / beforeEach)的用法?
-
- 怎麼處理測試之間的資料隔離?
-
- Parallel 跑測試會遇到什麼問題?
31-35. CI / CD
-
- 描述一條 CI pipeline 應該有什麼 stage
-
- Test report 怎麼整合到 PR review?
-
- 失敗的測試怎麼自動 retry?要嗎?
-
- 怎麼分 smoke 跟 full regression 在不同時機跑?
-
- Test environment 跟 prod 的差異要怎麼管理?
36-40. API / 後端
-
- REST vs GraphQL 測試差異?
-
- 怎麼測一個有 auth token 的 API?
-
- mock 第三方 API 的策略?
-
- 怎麼測 race condition?
-
- 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. 略
-
- 你怎麼跟新加入的 QA 帶?
-
- 你會怎麼影響團隊文化?
-
- 五年職涯規劃?
-
- 對 AI 時代 QA 的看法?
-
- 為什麼想離開上一份工作?
-
- 你有什麼問題想問我們?
必問面試官的 3 題(很多人忘記)
- 你們目前的 QA / Dev 比例? (太低代表 QA 壓力大)
- release 流程怎麼跑?多久一次?hot fix 流程?(看流程成熟度)
- 過去半年最棘手的 production bug 怎處理的?(聽 incident handling 成熟度)
最後
面試是雙向的。你不是去考試,是去看公司值不值得待。準備是基本,但保持「我也在挑你」的心態,反而能談到更好的待遇。