今天,我們面臨的挑戰是如何設計出一套完善的測試案例,來檢查 Linear 的登入流程 是否運作正常。這是我們日常測試中經常會遇到的場景,我們需要從不同角度來驗證登入流程的穩定性與安全性。不過,這次我們不會急著討論理論模型,先從頭開始,看看怎麼一步步分析並設計出符合需求的測試案例。
無論是驗證 email 格式、測試密碼的安全性,還是模擬多次登入失敗,這些步驟都至關重要。挑戰在於,如何在有限的時間內,設計出一組完整且覆蓋關鍵點的測試。
假如你負責測試 Linear 的登入流程,會如何設計測試案例來確保系統的正常運作?別急著想任何理論模型,從需求出發,根據你的直覺設計出一個初步的測試計畫吧!
Martin Fowler 在 2012 年提出的「測試金字塔」原則。這個方法強調測試案例應該合理地分布在不同層級,以達到最佳的測試策略。透過這樣的分布,我們可以確保自動化測試在不同層面發揮其最大效用,平衡穩定性與靈活性。測試金字塔包含三個層級:
單元測試是測試金字塔的基礎,專注於覆蓋程式碼中的「最小單位」。對於登入流程,我們可以透過一些細微的測試來驗證某些特定功能是否正確運作。
範例:檢查 email 格式是否合法
測試目標 | 測試案例 | 預期結果 |
---|---|---|
測試 email 格式驗證 | 測試正確和錯誤的 email 格式 | 正確 email 格式通過驗證,錯誤 email 被拒絕 |
目的:單元測試的目的是檢查登入功能中的最小邏輯單位,如 email 格式是否符合標準。這類測試不會涉及到資料庫或伺服器,只是單獨測試特定的函式。
通常系統可能是透過 API 溝通,但也有可能是用 IPC,或是其他不同的協定或架構,我會先用最常見的 API 測試來練習不同系統間在應用層的測試,在練習不同平台 (Web、Machine、Cloud) 的應用程式,並且確認各個服務或模組之間的邏輯能正確運作。
範例:登入 API 的回應是否正確
測試目標 | 測試案例 | 預期結果 |
---|---|---|
測試成功登入 | 用正確 email 和密碼進行登入 | API 返回狀態 200,並生成會話 |
目的:應用層測試的重點在於確保登入 API 能夠在正確的輸入下正常運作,並返回正確的結果。這些測試會涉及系統內部邏輯和模組之間的交互,但不會涉及完整的用戶端操作。
端點到端點測試模擬用戶的實際操作,測試整個系統的完整流程。在 Linear 登入流程中,這意味著要從輸入 email 和密碼,直到成功登入為止,確保每個步驟都正常進行。
範例:模擬用戶的登入流程
測試目標 | 測試案例 | 預期結果 |
---|---|---|
測試完整登入流程 | 模擬用戶從輸入 email、密碼到登入成功 | 用戶登入後跳轉至首頁,顯示個人資訊 |
目的:端點到端點測試的重點在於驗證整個登入流程是否順暢無誤,這包括了前端與後端的互動、API 調用,以及系統整體的運行狀況。
在這次的練習中,我們從功能需求出發,逐步拆解 Linear 的登入流程,並最終引入了測試金字塔的概念來組織這些測試。透過這個模型,我們可以更有效地分配測試資源,確保每一層的測試都能達到最佳效益。希望這個實例能幫助你在日常工作中更好地組織測試工作,並讓你在面對不同測試場景時,能夠靈活應用這些策略。