Mars's Blog

開發及測試要點

一、說明

軟體開發/維護,離開不了測試,產品品質不但直接影響用戶體驗,更代表著企業形像、信譽,極為重要。

二、RD開發及測試要點

  • 必需知道「原由」 (故事)
  • 必需有明確「開發目標」 (驗收標準/案例)
  • 必需拆解出「工作項目」
  • 每個「工作項目」應有對應的「測試項目」
  • 測試項目應需有明確敘述
    • 環境: 如有前置環境,請描述如何建構測試環境
    • 5W1H: 對象(What)、目的(Why)、位置(Where)、時間/步驟(When)、人員(Who)、方法(How)
    • 對與錯: 測試正確性時,什麼狀況為「正確」;測試錯誤狀態時,什麼狀況為「錯誤」
  • 所有改動的影響,必需親自測試一次
    • QA難以測試的,需在RD內部做「白箱測試」
    • 需大量資料比對的,需編寫測試工具
  • 故事 <=> 驗收標準(案例) <=> 工作項目 <=> 測試項目
  • 白箱測試:測試者了解程式內部結構與邏輯,針對程式碼路徑、條件分支、邏輯判斷進行測試(如:單元測試)

實務範例:登入功能測試

  • 故事:使用者需要登入系統查看個人資料
  • 驗收標準(案例):使用帳號密碼登入(包含多種情境與驗證機制)
    • AC1:使用者輸入正確的帳號與密碼,系統驗證通過後建立 Session,並自動導向至首頁(Dashboard),顯示「歡迎回來」訊息
    • AC2:使用者連續輸入錯誤密碼 3 次後,帳號暫時鎖定 15 分鐘,並顯示「帳號已被鎖定,請稍後再試」
  • 工作項目(以 AC1 為例):
    • 前端:實作登入表單(帳號、密碼欄位、送出按鈕)
    • 後端:實作登入 API(POST /api/login)
    • 後端:實作帳號密碼驗證邏輯(資料庫查詢、密碼 hash 比對)
    • 後端:實作 Session 管理(建立、驗證)
    • 前端:實作登入成功後導向首頁並顯示歡迎訊息
  • 測試項目(以 AC1 為例):
    • 輸入正確帳號與密碼,驗證登入成功且導向首頁
    • 驗證登入後 Session 正確建立且包含使用者資訊
    • 驗證首頁顯示「歡迎回來」訊息

三、QA測試要點

  • 必需知道「原由」 (故事)
  • 必需有明確「測試目標」 (驗收標準/案例)
  • 需了解「原由」、「測試目標」、「工作項目」、「測試項目」之間的關係
  • 精確測試與模糊測試
    • 精確測試
      • 必需要求RD條列測試項目,如果測試複雜,還要步驟化環境建置
      • 必需要求RD說明改動影響
        • 功能、頁面、按鈕、表單欄位、錯誤訊息、流程
    • 模糊測試
      • 自行評估可能影響並設計測試項目
      • 請「限時」測試

        精確測試必需100%完成,模糊測試取重點完成

  • 評估本案對使用者影響或使用者可能遇到的狀況

QA是RD與User間的橋樑,不但需要求程式正確性,還需注意使用者體驗
QA的全名為Quality Assurance engineer,即品質保證工程師,其中最核心的任務並非是測試,而是保證產品交付的品質

四、測試分類

  • 邏輯行為正確性
    • 步驟(Create, Read, Update, Delete, Search, Export, Import)
  • 資料正確性
    • 資料內容、計算規則、計算數值
  • 畫面正確性
    • 前端顯示內容、版面、順序、習慣
  • 錯誤訊息
    • 錯誤訊息處理&顯示
  • 自動化測試
    • 前端自動化測試
      • 行為測試(BDD) - 工具:
        • Selenium:支援多瀏覽器,生態系統成熟,適合大型專案
        • Cypress:執行快速、除錯方便,適合現代前端框架
        • Playwright:微軟開發,支援多瀏覽器自動化,API 簡潔
    • 後端自動化測試
      • 單元測試(unit test) - 工具:
        • PHPUnit:PHP 的標準單元測試框架(使用教學
        • Jest:JavaScript/Node.js 測試框架,配置簡單
        • JUnit:Java 的主流單元測試框架
      • 功能測試(function test)

測試策略:測試金字塔

建議的測試比例與重點:

  • 單元測試(70%):快速、成本低,測試最小可測試單位(函式、方法)
  • 整合測試(20%):測試模組間的互動與資料流
  • E2E 測試(10%):模擬使用者操作,測試完整流程,執行較慢但最接近真實情境

五、參考

六、Log

  • 2019-04: Mars Hung編寫於HackMD
  • 2019-08-01: Mars Hung重製成md檔