專案

一般

配置概況

動作

Task #32

進行中

PID測試腳本-用戶

是由 Eric Pan約 2 個月 前加入. 於 約 1 個月 前更新.

狀態:
關閉
優先權:
Low
被分派者:
開始日期:
2025-09-08
完成日期:
完成百分比:

100%

預估工時:
OS版本:
windows, linux
網路環境:
內網
現場IP位置:

localhost

硬體設備規格:

DELLPrecision 5820 Tower intel(R)Xeon(R)w-2233 CPU,3.6GHz, RAM:128G Windows 11專業版工作站。x64位元

是由 Eric Pan約 2 個月 前更新

  • 主旨PID測試腳本 變更為 PID測試腳本-用戶

用戶系統測試 TODO 清單

測試環境準備

  • 建立測試資料庫
  • 準備測試用戶資料
  • 設定測試環境變數
  • 初始化測試 fixtures

一、用戶登入測試 (POST /api/v1/users/login)

✅ 正常流程

  • TEST-001: 使用正確 email 和密碼成功登入
  • TEST-002: 返回有效的 JWT access_token
  • TEST-003: 返回 token_type 為 "bearer"
  • TEST-004: Token 可以成功解碼並包含用戶 ID
  • TEST-005: 登入後可以使用 Token 訪問受保護的端點

❌ 異常流程

  • TEST-006: 使用錯誤密碼登入失敗(401)
  • TEST-007: 使用不存在的 email 登入失敗(401)
  • TEST-008: 未啟用的帳號(is_active=false)登入失敗(400)
  • TEST-009: 空白 email 登入失敗(422)
  • TEST-010: 空白密碼登入失敗(422)
  • TEST-011: 無效 email 格式登入失敗(422)
  • TEST-012: SQL 注入測試(email: ' OR '1'='1)
  • TEST-013: 已刪除用戶(deleted_at 不為空)無法登入

🔐 Token 相關

  • TEST-014: 過期 Token 訪問受保護端點失敗(401)
  • TEST-015: 偽造 Token 訪問受保護端點失敗(401)
  • TEST-016: 格式錯誤的 Token 訪問失敗(401)
  • TEST-017: 無 Token 訪問受保護端點失敗(401)

二、獲取當前用戶資訊 (GET /api/v1/users/me)

✅ 正常流程

  • TEST-018: 使用有效 Token 成功獲取個人資訊
  • TEST-019: 返回完整用戶資料結構
  • TEST-020: 返回正確的用戶 ID
  • TEST-021: 返回正確的 username 和 email
  • TEST-022: 返回用戶角色(role)
  • TEST-023: 返回用戶關聯的站點列表(sites)
  • TEST-024: 站點資訊包含 site_id、site_name、permission_level
  • TEST-025: 不返回敏感資訊(如 hashed_password)

❌ 異常流程

  • TEST-026: 無 Token 時返回 401
  • TEST-027: 無效 Token 時返回 401
  • TEST-028: 過期 Token 時返回 401
  • TEST-029: 用戶被停用後(is_active=false)Token 失效

三、更新個人資訊 (PUT /api/v1/users/me)

✅ 正常流程

  • TEST-030: 成功更新 full_name
  • TEST-031: 成功更新 phone_number
  • TEST-032: 同時更新多個欄位成功
  • TEST-033: 只更新一個欄位,其他欄位保持不變
  • TEST-034: 更新後返回完整的更新後資料
  • TEST-035: 空請求體不會清空現有資料

❌ 異常流程

  • TEST-036: 嘗試更新 email 失敗(不允許)
  • TEST-037: 嘗試更新 username 失敗(不允許)
  • TEST-038: 嘗試更新 role 失敗(不允許)
  • TEST-039: 嘗試更新 is_active 失敗(不允許)
  • TEST-040: 無效的電話號碼格式更新失敗
  • TEST-041: 超長字串更新失敗(如 full_name > 255)
  • TEST-042: 特殊字符注入測試

四、修改密碼 (PUT /api/v1/users/me/password)

✅ 正常流程

  • TEST-043: 使用正確舊密碼成功修改
  • TEST-044: 修改後返回成功訊息
  • TEST-045: 修改後可以使用新密碼登入
  • TEST-046: 修改後舊密碼無法登入
  • TEST-047: 修改後原有 Token 仍然有效

❌ 異常流程

  • TEST-048: 錯誤的舊密碼修改失敗(400)
  • TEST-049: 新密碼與舊密碼相同失敗(400)
  • TEST-050: 新密碼為空失敗(422)
  • TEST-051: 新密碼太短失敗(< 8 字符)
  • TEST-052: 新密碼太長失敗(> 128 字符)
  • TEST-053: 新密碼缺少必要複雜度失敗
  • TEST-054: current_password 欄位缺失(422)
  • TEST-055: new_password 欄位缺失(422)

五、管理員用戶操作

📋 獲取用戶列表 (GET /api/v1/users)

  • TEST-056: 管理員成功獲取用戶列表
  • TEST-057: 分頁功能正常(page=1, items_per_page=10)
  • TEST-058: 搜尋功能正常(search 參數)
  • TEST-059: 返回 total_count 正確
  • TEST-060: 返回 has_more 正確
  • TEST-061: 不返回已刪除用戶
  • TEST-062: 一般用戶無法訪問(403)

📋 創建新用戶 (POST /api/v1/users)

  • TEST-063: 管理員成功創建新用戶
  • TEST-064: 必填欄位驗證(username, email, password)
  • TEST-065: email 唯一性驗證
  • TEST-066: username 唯一性驗證
  • TEST-067: 創建時分配站點成功(site_id)
  • TEST-068: 創建時設定角色成功
  • TEST-069: 創建後自動建立通知設定
  • TEST-070: 一般用戶無法創建新用戶(403)

📋 更新其他用戶 (PUT /api/v1/users/{user_id})

  • TEST-071: 管理員成功更新其他用戶資料
  • TEST-072: 更新用戶角色成功
  • TEST-073: 更新用戶狀態成功(is_active)
  • TEST-074: 更新不存在的用戶失敗(404)
  • TEST-075: 一般用戶無法更新其他用戶(403)

📋 刪除用戶 (DELETE /api/v1/users/{user_id})

  • TEST-076: 管理員成功軟刪除用戶
  • TEST-077: 刪除後 deleted_at 不為空
  • TEST-078: 刪除後用戶無法登入
  • TEST-079: 刪除不存在的用戶失敗(404)
  • TEST-080: 已刪除的用戶重複刪除失敗(404)
  • TEST-081: 一般用戶無法刪除其他用戶(403)
  • TEST-082: 無法刪除自己的帳號

六、權限與安全測試

🔒 角色權限

  • TEST-083: ADMIN 角色可以訪問所有用戶端點
  • TEST-084: ENGINEER 角色可以訪問自己的資料
  • TEST-085: USER 角色只能訪問基本功能
  • TEST-086: 未登入用戶只能訪問 login 端點

🛡️ 安全測試

  • TEST-087: 密碼在資料庫中已加密(hashed)
  • TEST-088: API 響應不包含 hashed_password
  • TEST-089: Token 有效期限測試
  • TEST-090: 並發登入測試
  • TEST-091: 暴力破解防護(多次失敗登入)
  • TEST-092: XSS 注入測試(在 full_name 等欄位)
  • TEST-093: CSRF 防護測試

七、整合測試

🔄 完整用戶流程

  • TEST-094: 註冊 → 登入 → 獲取資訊 → 更新資料 → 修改密碼 → 重新登入
  • TEST-095: 創建用戶 → 分配站點 → 驗證權限 → 刪除用戶
  • TEST-096: 多用戶同時操作測試

⚡ 效能測試

  • TEST-097: 登入 API 回應時間 < 500ms
  • TEST-098: 獲取用戶資訊 API 回應時間 < 200ms
  • TEST-099: 100 個並發登入請求
  • TEST-100: 1000 筆用戶資料分頁查詢效能

是由 Jamie Lin約 2 個月 前更新

  • 狀態需求確認 變更為 設計中
  • 完成百分比0 變更為 30

是由 Jamie Lin約 1 個月 前更新

  • 狀態設計中 變更為 開發中

是由 Jamie Lin約 1 個月 前更新

  • 狀態開發中 變更為 測試中

是由 Jamie Lin約 1 個月 前更新

  • 狀態測試中 變更為 預備上線

是由 Jamie Lin約 1 個月 前更新

  • 狀態預備上線 變更為 已上線/驗收中

是由 Jamie Lin約 1 個月 前更新

  • 狀態已上線/驗收中 變更為 關閉
  • 完成百分比30 變更為 100
動作

匯出至 Atom PDF