動作
Task #32
進行中PID測試腳本-用戶
是由 Eric Pan 於 約 2 個月 前加入. 於 約 1 個月 前更新.
開始日期:
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 筆用戶資料分頁查詢效能
動作