---
# System prepended metadata

title: 軟體測試文件 (STD)

---

---
# System prepended metadata

title: 軟體測試文件 (STD)

---

# 測試文件 (STD)

- **專案名稱**：海大拍賣系統
- **撰寫日期**：
- **發展者**：游承諺、王洪賢、蕭丞佑


---

## 版次變更記錄

| 版次 | 變更項目 | 變更日期 |
|---|---|---|
| 0.1 | 初版 | 2025/12/18 |
|0.2 | 第二版 | 2025/12/23 |
| 0.3 |  |  |
| 0.4|  |  |
| 0.5 |  |  |
| 1.0 |  |  |

---

## 目錄

1. 測試目的與接受準則  
   1.1 系統範圍  
   1.2 測試接受準則
2. 測試環境  
   2.1 硬體需求  
   2.2 軟體需求  
   2.3 測試資料來源  
   2.4 測試工具與設備
3. 測試案例
4. 測試工作指派與時程  
   4.1 測試成員
5. 測試結果與分析  
   5.1 測試結果  
   5.2 缺失報告
6. 追溯表

---

## 1. 測試目的與接受準則  (Objectives and Acceptance Criteria)

### 1.1 系統範圍  (System Scope)

本系統提供使用者一個完整的購物、結帳、競標、評論、買賣溝通的線上購物平台。
本系統包含:
1. **使用者認證模組** - 註冊、登入、登出、JWT Token 認證
2. **使用者管理模組** - 個人資訊查詢、更新、密碼修改
3. **商品管理模組** - 商品 CRUD、搜尋、篩選
4. **購物車模組** - 購物車操作、商品數量調整
5. **訂單管理模組** - 訂單建立、查詢
6. **競標功能模組** - 競標商品出價、截止判定
7. **聊天功能模組** - WebSocket 即時通訊、歷史訊息查詢
8. **收藏清單模組** - 收藏商品的 CRUD 操作
9. **評論功能模組** - 商品評論、評分
10. **優惠券模組** - 優惠券、抽獎次數發放

商品推薦功能尚未完成

**系統版本資訊：**
- 後端版本：v1.0.0
- Git Tag：release-v1.0.0
- 


---

### 1.2 測試接受準則  (Test Acceptance Criteria)

測試程序需要依照本測試計畫所訂定的程序進行，所有測試結果需要能符合預期測試結果方能接受。
- 當測試案例未通過時，相關模組開發之負責人需要進行程式修改(修復 bug 或改動功能)，以能讓此案例重新通過測試。
- 重新進行測試時，測試人員需確認其他可能受影響的案例仍可正確執行。

---

## 2. 測試環境  (Testing Environment)

### 2.1 硬體需求  (Hardware Specification and Configuration)

**Server 端：**
| 項次 | 名稱 | 數量 | 規格 | 備註 |
|---|---|---|---|---|
| 1 | 本地端伺服器 | 1 | 因不同組員而有差異 | 本地開發環境 |
| 2 |雲端伺服器 | 1 | Cloudflare Tunnel | 生產環境部署 


**Client 端：**

| 項次 | 名稱 | 數量 | 規格 | 備註 |
|---|---|---|---|---|
| 1 | 測試用電腦 | 1 | 可執行現代瀏覽器的任意電腦 | 用於 API 測試 |
|2|手機|1|Android、IOS||

---

### 2.2 軟體需求  (Software Specification and Configuration)

**Server 端：**

| 項次 | 名稱 | 數量 | 規格 | 備註 |
|---|---|---|---|---|
| 1 | Spring Boot | 1 | 3.5.6 | 後端框架 |
| 2 | MongoDB | 1 | 6.0+ | 資料庫 |
| 3 |圖片CDN|1|JsDelivr||

**Client 端 (測試工具)：**

| 項次 | 名稱 | 數量 | 規格 | 備註 |
|---|---|---|---|---|
| 1 | Postman | 1 | 最新版 | API 測試 |
| 2 | Swagger | 1 | 最新版 | API 測試 |
| 3 | Chrome 瀏覽器 | 1 | 最新版 | WebSocket 測試 |
| 4 | playwright | 1 | 最新版 | 前端系統測試 |


---

### 2.3 測試資料來源  (Test Data Sources)

1.自行建立測試用之使用者帳號
2.自行建立測試用之商品資料表
3.自行建立測試用之購物車資料表
4.自行建立測試用之歷史紀錄資料表
5.自行建立測試用之訂單資料表
6.自行建立測試用之評論資料表
7.自行建立測試用之優惠券資料表
8.自行建立測試用之使用者收藏資料表

---

### 2.4 測試工具與設備  (Tools and Equipment)


| 工具名稱 | 用途 | 
| ------ | ------ |
| **JUint** |單元測試 | 
| **Playwright** |端對端測試 |
| **Jmeter** |壓力測試|
| **Postman** | API 測試 |
| **Swagger UI** | API 文件與測試 |
| **hackmd** |撰寫測試文件 |




---

## 3. 測試案例  (Test Cases)

| 欄位 | (範例/說明) |
|---|---|
| Identification | 編號 |
| Name | 名稱 |
| Reference | 對應的功能需求 |
| Severity | 重要性 |
| Instructions | 測試步驟 |
| Expected Result | 預期結果 |
| Cleanup | 回復測試前原始狀態的步驟 |

重要性:1-5(低到高)
|Test case1||
|---|---|
|Test case ID|UT-001|
|Test function name|註冊使用者|
|對應需求|FR-01|
|重要性|5|
|Instructions|1.點擊註冊 2.輸入使用者名稱 帳號密碼並註冊|
|Expected Result|註冊成功|
|Cleanup|到資料庫刪除該用戶|



|Test case2||
|---|---|
|Test case ID|UT-002|
|Test function name|同時作為買家與賣家|
|對應需求|FR-02|
|重要性|4|
|Instructions|1.登入 2.嘗試加入購物車並結帳 3.進入商品後台 4.嘗試新增商品|
|Expected Result|買家:成功結帳後出現訂單 賣家:網站首頁出現新增的商品|
|Cleanup|刪除訂單與商品|

|Test case3||
|---|---|
|Test case ID|UT-003|
|Test function name|登入、登出|
|對應需求|FR-03|
|重要性|5|
|Instructions|1.輸入帳密並點擊登入按鈕 2.點擊首頁上方登出按鈕|
|Expected Result|登入:登入成功 登出:登出成功|
|Cleanup|無|

|Test case4||
|---|---|
|Test case ID|UT-004|
|Test function name|創建商品|
|對應需求|FR-04|
|重要性|5|
|Instructions|1.點擊我的帳號 2.點擊賣家後台 3.點擊新增商品 4.填寫必要的欄位並新增|
|Expected Result|商品創建成功!|
|Cleanup|1.點擊我的帳號 2.點擊賣家後台 3.點擊商品下方刪除按鈕|

|Test case5||
|---|---|
|Test case ID|UT-005|
|Test function name|系統區分直購、拍賣商品|
|對應需求|FR-05|
|重要性|4|
|Instructions|呼叫 product.getProductType()|
|Expected Result|DIRECT 或 AUCTION|
|Cleanup|無|

|Test case6||
|---|---|
|Test case ID|UT-006|
|Test function name|修改商品|
|對應需求|FR-06|
|重要性|4|
|Instructions|1.點擊我的帳號 2.點擊賣家後台 3.點擊商品下方編輯按鈕 4.輸入必要的欄位並儲存|
|Expected Result|商品更新成功！|
|Cleanup|編輯成原本商品|

|Test case7||
|---|---|
|Test case ID|UT-007|
|Test function name|依條件搜尋商品|
|對應需求|FR-07|
|重要性|3|
|Instructions|1.進入首頁 2.在搜尋欄輸入想找的商品|
|Expected Result|對應到搜尋結果的商品列表|
|Cleanup|點擊首頁圖案|

|Test case8||
|---|---|
|Test case ID|UT-008|
|Test function name|商品篩選功能|
|對應需求|FR-08|
|重要性|4|
|Instructions|1.進入首頁 2.選擇左邊的分類|
|Expected Result|對應到該分類的商品列表|
|Cleanup|點擊分類中的"全部"|

|Test case9||
|---|---|
|Test case ID|UT-009|
|Test function name|購物車功能|
|對應需求|FR-09|
|重要性|5|
|Instructions|1.進入首頁 2.點擊右上方購物車 3.查看購物車內容|
|Expected Result|加入購物車的商品列表|
|Cleanup|點擊首頁圖案|

|Test case10||
|---|---|
|Test case ID|UT-010|
|Test function name|修改購物車內商品個數|
|對應需求|FR-10|
|重要性|5|
|Instructions|1.進入首頁 2.點擊右上方購物車 3.點擊商品旁邊的"+" "-"按鈕|
|Expected Result|商品個數與總金額隨著個數變化|
|Cleanup|恢復原本的商品個數|

|Test case 11| |
|---|---|
|Test case ID|UT-011|
|Test function name|確認購物車與結帳|
|對應需求|FR-11|
|重要性|5|
|Instructions|1.進入首頁 2.點擊右上方購物車 3.點擊"去結帳"按鈕 4.填寫買家資訊並點擊結帳|
|Expected Result|看見訂單顯示正確商品個數、總金額資訊|
|Cleanup|刪除該訂單|

|Test case 12||
|---|---|
|Test case ID|UT-012|
|Test function name|產生訂單資料|
|對應需求|FR-12|
|重要性|5|
|Instructions|1.點擊結帳 2.看見訂單資訊|
|Expected Result|看見訂單顯示正確商品個數、總金額資訊|
|Cleanup|刪除該訂單|

|Test case 13||
|---|---|
|Test case ID|UT-013|
|Test function name|買賣雙方協調交付方式|
|對應需求|FR-13|
|重要性|5|
|Instructions|1.買家登入帳號並傳訊息 2.賣家登入帳號並傳訊息 3.雙方檢查是否有收到對方訊息|
|Expected Result||
|Cleanup|無|

|Test case 14||
|---|---|
|Test case ID|UT-014|
|Test function name|競標商品有截止期限|
|對應需求|FR-14|
|重要性|4|
|Instructions|1.點擊我的帳號 2.點擊賣家後台 3.點擊商品下方新增按鈕 4.選擇"競標"類型並選擇"競標結束時間"|
|Expected Result|競標商品顯示在首頁，並在時間結束後禁止出價|
|Cleanup|刪除該商品|

|Test case 15||
|---|---|
|Test case ID|UT-015|
|Test function name|競標商品出價與顯示目前最高價|
|對應需求|FR-15|
|重要性|4|
|Instructions|1.點擊競標商品下方"加入競標" 2.點擊"立即出價"|
|Expected Result|出價成功 商品最高價同時更新|
|Cleanup|無|

|Test case 16||
|---|---|
|Test case ID|UT-016|
|Test function name|競標截止時判定得標者|
|對應需求|FR-16|
|重要性|4|
|Instructions|1.競標時間到 2.系統為最高出價者建立訂單|
|Expected Result|告訴使用者成功建立訂單|
|Cleanup|無|


|Test case 17||
|---|---|
|Test case ID|UT-017|
|Test function name|商品評論與評分|
|對應需求|FR-22|
|重要性|2|
|Instructions|1.完成某商品的訂單 2.點擊該商品 3.在下方給星星與撰寫評論|
|Expected Result|商品平均星數改變、評論列表出現剛剛加的評論|
|Cleanup|無|

|Test case 18||
|---|---|
|Test case ID|UT-018|
|Test function name|顯示商品平均評分與評論|
|對應需求|FR-23|
|重要性|3|
|Instructions|點擊該商品並查看|
|Expected Result|正確顯示評分與評論|
|Cleanup|點擊首頁|

|Test case 19||
|---|---|
|Test case ID|UT-019|
|Test function name|顯示賣家評價與總評論數|
|對應需求|FR-24|
|重要性|2|
|Instructions|1.點擊商品 2.查看下方賣家資訊|
|Expected Result|正確顯示賣家評分、評論數|
|Cleanup|點擊首頁圖案|

|Test case 20||
|---|---|
|Test case ID|UT-020|
|Test function name|不定期給予優惠券|
|對應需求|FR-25|
|重要性|2|
|Instructions|1.檢查是否為特殊節日 2.點擊我的帳號 3.點擊優惠券|
|Expected Result|查看是否獲得優惠券|
|Cleanup|無|

|Test case 21||
|---|---|
|Test case ID|UT-021|
|Test function name|查詢使用者資訊|
|對應需求|FR-26|
|重要性|5|
|Instructions|1.登入系統 2.呼叫 GET /api/user/me 查詢當前使用者資訊|
|Expected Result|返回使用者詳細資訊，包含使用者名稱、Email、暱稱、地址、電話、平均評分、評分數量及正在販售的商品列表|
|Cleanup|無|

|Test case 22||
|---|---|
|Test case ID|UT-022|
|Test function name|更新使用者個人資訊|
|對應需求|FR-26|
|重要性|4|
|Instructions|1.登入系統 2.呼叫 PUT /api/user/update 並提供新的暱稱、地址、電話等資訊 3.確認更新結果|
|Expected Result|使用者資訊更新成功，返回更新後的使用者資料|
|Cleanup|恢復原本的使用者資訊|

|Test case 23||
|---|---|
|Test case ID|UT-023|
|Test function name|修改使用者密碼|
|對應需求|FR-26|
|重要性|5|
|Instructions|1.登入系統 2.呼叫 PUT /api/user/password 並提供舊密碼與新密碼 3.使用新密碼重新登入|
|Expected Result|密碼修改成功，可使用新密碼成功登入|
|Cleanup|將密碼改回原本的密碼|

|Test case 24||
|---|---|
|Test case ID|UT-024|
|Test function name|查詢公開使用者資訊|
|對應需求|FR-27|
|重要性|3|
|Instructions|1.呼叫 GET /api/user/public/{userId} 查詢指定使用者的公開資訊|
|Expected Result|返回該使用者的公開資訊（不含敏感資料如 Email、電話）及其販售商品|
|Cleanup|無|

|Test case 25||
|---|---|
|Test case ID|UT-025|
|Test function name|新增商品至收藏清單|
|對應需求|FR-28|
|重要性|3|
|Instructions|1.登入系統 2.呼叫 POST /api/favorites 並提供 userId 和 productId 3.查詢收藏清單|
|Expected Result|商品成功加入收藏清單，可在收藏清單中看到該商品|
|Cleanup|從收藏清單中移除該商品|

|Test case 26||
|---|---|
|Test case ID|UT-026|
|Test function name|查詢使用者收藏清單|
|對應需求|FR-29|
|重要性|3|
|Instructions|1.登入系統 2.呼叫 GET /api/favorites/{userId} 查詢收藏清單|
|Expected Result|返回使用者的完整收藏清單，包含商品詳細資訊及賣家資訊|
|Cleanup|無|

|Test case 27||
|---|---|
|Test case ID|UT-027|
|Test function name|從收藏清單移除商品|
|對應需求|FR-29|
|重要性|3|
|Instructions|1.登入系統 2.先新增一個商品至收藏清單 3.呼叫 DELETE /api/favorites/{userId}/remove/{productId} 移除該商品 4.查詢收藏清單確認|
|Expected Result|商品成功從收藏清單中移除|
|Cleanup|無|

|Test case 28||
|---|---|
|Test case ID|UT-028|
|Test function name|清空收藏清單|
|對應需求|FR-29|
|重要性|2|
|Instructions|1.登入系統 2.確認收藏清單有商品 3.呼叫 DELETE /api/favorites/{userId}/clear 清空收藏清單 4.查詢收藏清單確認|
|Expected Result|收藏清單被清空，totalItems 為 0|
|Cleanup|無|

|Test case 29||
|---|---|
|Test case ID|UT-029|
|Test function name|WebSocket 即時訊息傳送|
|對應需求|FR-13|
|重要性|5|
|Instructions|1.用戶 A 和用戶 B 建立 WebSocket 連線至 /ws 2.用戶 A 發送訊息到 /app/chat (包含 senderId, recipientId, content) 3.確認用戶 B 收到即時通知|
|Expected Result|用戶 B 在 /user/{recipientId}/queue/messages 收到即時訊息通知，訊息同時儲存至資料庫|
|Cleanup|刪除測試訊息|

|Test case 30||
|---|---|
|Test case ID|UT-030|
|Test function name|查詢聊天歷史記錄|
|對應需求|FR-30|
|重要性|4|
|Instructions|1.登入系統 2.呼叫 GET /api/messages/{senderId}/{recipientId} 查詢兩個用戶之間的聊天記錄|
|Expected Result|返回兩個用戶之間的所有歷史訊息，按時間排序|
|Cleanup|無|

|Test case 31||
|---|---|
|Test case ID|UT-031|
|Test function name|聊天訊息持久化儲存|
|對應需求|FR-31|
|重要性|5|
|Instructions|1.用戶 A 透過 WebSocket 發送訊息給用戶 B 2.查詢資料庫確認訊息已儲存 3.用戶 B 離線後重新上線，查詢歷史訊息|
|Expected Result|訊息成功儲存至 MongoDB，即使用戶離線後重新上線仍可查詢到完整歷史訊息|
|Cleanup|刪除測試訊息|

|Test case 32||
|---|---|
|Test case ID|UT-032|
|Test function name|聊天室自動建立|
|對應需求|FR-32|
|重要性|3|
|Instructions|1.用戶 A 首次發送訊息給用戶 B 2.系統自動建立 ChatRoom 3.確認 ChatRoom 包含雙方 userId 和 chatId|
|Expected Result|系統自動建立聊天室，並為雙方建立聊天關係|
|Cleanup|刪除測試聊天室|

|Test case 33||
|---|---|
|Test case ID|UT-033|
|Test function name|JWT Token 認證|
|對應需求|FR-33|
|重要性|5|
|Instructions|1.呼叫 POST /api/auth/login 取得 JWT Token 2.使用 Token 呼叫需要認證的 API (如 /api/user/me) 3.使用錯誤或過期的 Token 呼叫 API|
|Expected Result|有效 Token 可正常訪問受保護的 API，無效 Token 返回 401 Unauthorized|
|Cleanup|無|

|Test case 34||
|---|---|
|Test case ID|UT-034|
|Test function name|資料遷移 - 為舊使用者設定預設抽獎次數|
|對應需求|系統維護|
|重要性|4|
|Instructions|1.建立沒有 remainingDrawTimes 欄位的舊使用者資料 2.建立已有 remainingDrawTimes 的新使用者資料 3.執行 Runner 資料遷移 4.驗證舊使用者被設定為預設值 10 5.驗證新使用者保持原值不變|
|Expected Result|舊使用者自動獲得 remainingDrawTimes=10，新使用者的值保持不變|
|Cleanup|刪除測試用戶資料|

|Test case 35||
|---|---|
|Test case ID|UT-035|
|Test function name|資料遷移冪等性測試|
|對應需求|系統維護|
|重要性|3|
|Instructions|1.建立沒有 remainingDrawTimes 欄位的舊使用者資料 2.執行第一次 Runner 資料遷移 3.記錄遷移後的抽獎次數 4.執行第二次資料遷移 5.比較兩次遷移結果|
|Expected Result|多次執行遷移產生相同結果，不會重複更新或改變已設定的值|
|Cleanup|刪除測試用戶資料|

|Test case 36||
|---|---|
|Test case ID|UT-036|
|Test function name|新使用者預設抽獎次數|
|對應需求|FR-25|
|重要性|3|
|Instructions|1.使用 User.builder() 建立新使用者 2.檢查新建使用者的 remainingDrawTimes 欄位|
|Expected Result|新建使用者自動具有 remainingDrawTimes=10 的預設值|
|Cleanup|無|

|Test case 37||
|---|---|
|Test case ID|UT-037|
|Test function name|查詢使用者競標歷史|
|對應需求|FR-19|
|重要性|2|
|Instructions|1. 呼叫 GET /api/history/bid/user/{userId}，使用存在競標紀錄的使用者 ID2. 驗證回傳 HTTP 200，內容為 bidHistory 列表|
|Expected Result|回傳該使用者所有競標歷史，列表非空，且每筆 userID 皆等於請求的 userId|
|Cleanup|無|

|Test case 38||
|---|---|
|Test case ID|UT-038|
|Test function name|查詢使用者瀏覽歷史|
|對應需求|FR-19|
|重要性|3|
|Instructions|1. 呼叫 GET /api/history/browse/user/{userId}，使用存在競標紀錄的使用者 ID2. 驗證回傳 HTTP 200，內容為 browseHistory 列表|
|Expected Result|回傳該使用者所有瀏覽歷史，列表非空，且每筆 userID 皆等於請求的 userId|
|Cleanup|無|

|Test case 39||
|---|---|
|Test case ID|UT-039|
|Test function name|新增使用者瀏覽歷史|
|對應需求|FR-18|
|重要性|3|
|Instructions|1. 呼叫 POST /api/history/browse，新增使用者瀏覽紀錄|
|Expected Result|回傳200並寫入資料庫|
|Cleanup|無|

|Test case 40||
|---|---|
|Test case ID|UT-040|
|Test function name|新增使用者購買歷史|
|對應需求|FR-18|
|重要性|3|
|Instructions|1. 呼叫 POST /api/history/purchase，新增使用者瀏覽紀錄|
|Expected Result|回傳200並寫入資料庫|
|Cleanup|無|

|Test case 41||
|---|---|
|Test case ID|UT-041|
|Test function name|新增使用者評論歷史|
|對應需求|FR-18|
|重要性|3|
|Instructions|1. 呼叫 POST /api/history/review，新增使用者瀏覽紀錄|
|Expected Result|回傳200並寫入資料庫|
|Cleanup|無|

|Test case 42||
|---|---|
|Test case ID|UT-042|
|Test function name|新增使用者競標歷史|
|對應需求|FR-18|
|重要性|3|
|Instructions|1. 呼叫 POST /api/history/bid，新增使用者瀏覽紀錄|
|Expected Result|回傳200並寫入資料庫|
|Cleanup|無|

|Test case 43||
|---|---|
|Test case ID|UT-043|
|Test function name|RAG 搜尋商品列表|
|對應需求|FR-34|
|重要性|2|
|Instructions|1. 呼叫 POST {RAG_API}/api/search，搜尋輸入框 .search-input 輸入關鍵字，點擊 RAG 搜尋按鈕 .rag-btn，觸發 handleRagSearch|
|Expected Result|回傳商品 ragIds 查詢參數，EX:ID 為 P001、P002|
|Cleanup|無|


---
## 系統測試
| Test case  1|  |
|---|---|
| Identification | ST-001 |
| Name | 註冊新使用者 |
| Reference | FR-01 |
| Severity | 3 |
| Instructions | 依序輸入帳號、email、密碼、確認密碼 |
| Expected Result | alert("註冊成功")、畫面跳轉到首頁 |
| Cleanup | 從資料庫中刪除 |

| Test case  |  |
|---|---|
| Identification | ST-002 |
| Name | 註冊已存在的使用者 |
| Reference | FR-01 |
| Severity | 1 |
| Instructions | 依序輸入帳號、email、密碼、確認密碼 |
| Expected Result | alert("使用者已存在") |
| Cleanup | 無須撤銷 |

| Test case  |  |
|---|---|
| Identification | ST-003 |
| Name | 使用者登入 |
| Reference | FR-03 |
| Severity | 3 |
| Instructions | 依序輸入帳號、email、密碼、確認密碼 |
| Expected Result | 登入成功並跳轉到首頁 |
| Cleanup | 無須撤銷 |

| Test case  |  |
|---|---|
| Identification | ST-004 |
| Name | 不存在的使用者登入 |
| Reference | FR-03 |
| Severity | 1 |
| Instructions | 依序輸入帳號、email、密碼、確認密碼 |
| Expected Result | alert("帳號或密碼錯誤") |
| Cleanup | 無須撤銷 |

| Test case  |  |
|---|---|
| Identification | ST-005 |
| Name | Header圖標回首頁 |
| Reference | NFR-01 |
| Severity | 4 |
| Instructions | 按下按鈕 |
| Expected Result | 跳轉到首頁並刷新頁面 |
| Cleanup | 回上頁 |

| Test case  |  |
|---|---|
| Identification | ST-006 |
| Name | Header搜尋 |
| Reference | FR-07 |
| Severity | 4 |
| Instructions | 搜尋欄輸入關鍵字 |
| Expected Result | 更新 URL、跳轉到首頁並顯示搜尋結果 |
| Cleanup | 回上頁 |

| Test case  |  |
|---|---|
| Identification | ST-007 |
| Name | Header我的帳號按鈕 |
| Reference | FR-26 |
| Severity | 2 |
| Instructions | 按下按鈕 |
| Expected Result | 跳轉到我的帳號頁面 |
| Cleanup | 回上頁 |

| Test case  |  |
|---|---|
| Identification | ST-008 |
| Name | Header我的最愛按鈕 |
| Reference | FR-29 |
| Severity | 2 |
| Instructions | 按下按鈕 |
| Expected Result | 跳轉到我的最愛頁面 |
| Cleanup | 回上頁 |

| Test case  |  |
|---|---|
| Identification | ST-009 |
| Name | Header購物車按鈕 |
| Reference | FR-11 |
| Severity | 5 |
| Instructions | 按下按鈕 |
| Expected Result | 跳轉到購物車頁面 |
| Cleanup | 回上頁 |


| Test case  |  |
|---|---|
| Identification | ST-010 |
| Name | Header訊息按鈕 |
| Reference | FR-13 |
| Severity | 5 |
| Instructions | 按下按鈕 |
| Expected Result | 跳轉到訊息頁面 |
| Cleanup | 回上頁 |

| Test case  |  |
|---|---|
| Identification | ST-011 |
| Name | Header登出按鈕 |
| Reference | FR-13 |
| Severity | 3 |
| Instructions | 按下按鈕 |
| Expected Result | 清除使用者TOKEN及資訊 |
| Cleanup | 重新登入 |

| Test case  |  |
|---|---|
| Identification | ST-012 |
| Name | title 正確顯示 |
| Reference | NFR-01 |
| Severity | 1 |
| Instructions | 無 |
| Expected Result | title顯示haidavidloman拍賣網站 |
| Cleanup | 無須撤銷 |

| Test case  |  |
|---|---|
| Identification | ST-013 |
| Name | 首頁顯示商品列表 |
| Reference | FR-17 |
| Severity | 3 |
| Instructions | 進到首頁 |
| Expected Result | 首頁顯示最新上架商品與熱門商品 |
| Cleanup | 無須撤銷 |

| Test case  |  |
|---|---|
| Identification | ST-014 |
| Name | 首頁分類篩選功能 |
| Reference | FR-07、FR-08 |
| Severity | 3 |
| Instructions | 無 |
| Expected Result | 首頁顯示最新篩選後的商品列表 |
| Cleanup | 無須撤銷 |

| Test case  |  |
|---|---|
| Identification | ST-015 |
| Name | 首頁翻頁功能 |
| Reference | NFR-01 |
| Severity | 2 |
| Instructions | 按翻頁按鈕 |
| Expected Result | 翻頁刷新顯示商品列表 |
| Cleanup | 回上頁|

| Test case  |  |
|---|---|
| Identification | ST-016 |
| Name | 競標商品頁面顯示商品資訊 |
| Reference | FR-15 |
| Severity | 5 |
| Instructions | 進入競標商品頁面 |
| Expected Result | 顯示商品資訊 |
| Cleanup | 返回上頁 |

| Test case  |  |
|---|---|
| Identification | ST-17 |
| Name | 競標商品出價 |
| Reference | FR-15 |
| Severity | 4 |
| Instructions | 1.輸入出價金額 2.按下出價按鈕 |
| Expected Result | 若出價金額合裡則顯示出價成功否則顯示"請輸入有效金額" |
| Cleanup |無 |

| Test case  |  |
|---|---|
| Identification | ST-18 |
| Name | 競標商品倒計時顯示 |
| Reference | FR-16 |
| Severity | 3 |
| Instructios | 無 |
| Expected Result | 計時顯示動態更新 |
| Cleanup | 無 |

| Test case  |  |
|---|---|
| Identification | ST-18 |
| Name | 競標商品收藏/取消收藏 |
| Reference | FR-28 |
| Severity | 2 |
| Instructions | 按下收藏按鈕 |
| Expected Result | 加至收藏訂單 |
| Cleanup | 刪除收藏 |

| Test case  |  |
|---|---|
| Identification | ST-19 |
| Name | 競標已結束時無法出價 |
| Reference | FR-16 |
| Severity | 4 |
| Instructions | 競標已結束時按下出價按鈕 |
| Expected Result | 顯示已結束 |
| Cleanup | 無 |

| Test case  |  |
|---|---|
| Identification | ST-20 |
| Name | 直購商品頁面顯示商品資訊 |
| Reference | FR-17 |
| Severity | 5 |
| Instructions | 點擊直購商品卡片 |
| Expected Result | 直購商品資訊正確顯示 |
| Cleanup |無 |

| Test case  |  |
|---|---|
| Identification | ST-21 |
| Name | 直購商品調整購買數量 |
| Reference | FR-17 |
| Severity | 4 |
| Instructions | 點旁邊的+-按鈕 |
| Expected Result | 購買數量調整功能正常 |
| Cleanup |無 |

| Test case  |  |
|---|---|
| Identification | ST-22 |
| Name | 直購商品加入購物車 |
| Reference | FR-09 |
| Severity | 5 |
| Instructions | 按下加入購物車按鈕 |
| Expected Result |  |
| Cleanup | 將該商品從購物車移除|

| Test case  |  |
|---|---|
| Identification | ST-23 |
| Name | 直購商品立即購買 |
| Reference | FR-09 |
| Severity | 2 |
| Instructions | 按下立即購買按鈕 |
| Expected Result |  |
| Cleanup | 無|

| Test case  |  |
|---|---|
| Identification | ST-24 |
| Name | 直購商品收藏/取消收藏 |
| Reference | FR-28 |
| Severity | 2 |
| Instructions | 按下收藏按鈕 |
| Expected Result | 商品被加入收藏列表 |
| Cleanup | |

| Test case  |  |
|---|---|
| Identification | ST-25 |
| Name | 庫存為 0 時無法加入購物車 |
| Reference | FR-09 |
| Severity | 4 |
| Instructions | 當商品庫存數為0時 點擊加入購物車 |
| Expected Result | 加入失敗 |
| Cleanup |無 |

| Test case |  |
|---|---|
| Identification | ST-26 |
| Name | 顯示最愛列表和收藏數量 |
| Reference | FR-29 |
| Severity | 3 |
| Instructions | 打開最愛頁面 |
| Expected Result | 顯示最愛列表和數量 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-27 |
| Name | 搜尋最愛商品 |
| Reference | FR-29 |
| Severity | 3 |
| Instructions | 在最愛頁搜尋商品 |
| Expected Result | 搜尋結果正確顯示 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-28 |
| Name | 排序 - 價格由低到高 |
| Reference | FR-08 |
| Severity | 3 |
| Instructions | 選擇價格由低到高排序 |
| Expected Result | 商品按價格升序排列 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-29 |
| Name | 排序 - 價格由高到低 |
| Reference | FR-08 |
| Severity | 3 |
| Instructions | 選擇價格由高到低排序 |
| Expected Result | 商品按價格降序排列 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-30 |
| Name | 篩選 - 直購商品 |
| Reference | FR-08 |
| Severity | 3 |
| Instructions | 選擇直購商品篩選 |
| Expected Result | 只顯示直購商品 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-31 |
| Name | 篩選 - 競標商品 |
| Reference | FR-08 |
| Severity | 3 |
| Instructions | 選擇競標商品篩選 |
| Expected Result | 只顯示競標商品 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-32 |
| Name | 從最愛移除商品 |
| Reference | FR-29 |
| Severity | 3 |
| Instructions | 點擊移除最愛按鈕 |
| Expected Result | 商品從最愛移除 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-33 |
| Name | 加入購物車 |
| Reference | FR-09 |
| Severity | 4 |
| Instructions | 點擊加入購物車按鈕 |
| Expected Result | 商品成功加入購物車 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-34 |
| Name | 清除全部收藏 |
| Reference | FR-29 |
| Severity | 3 |
| Instructions | 點擊清除全部收藏 |
| Expected Result | 所有最愛商品被移除 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-35 |
| Name | 空白狀態提示 |
| Reference | FR-29 |
| Severity | 3 |
| Instructions | 最愛列表為空 |
| Expected Result | 顯示空白提示訊息 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-36 |
| Name | 顯示使用者基本資訊與評分 |
| Reference | FR-26 |
| Severity | 3 |
| Instructions | 進入使用者個人檔案頁 |
| Expected Result | 顯示使用者基本資訊與評分 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-37 |
| Name | 切換編輯模式並取消 |
| Reference | FR-26 |
| Severity | 3 |
| Instructions | 點擊編輯後再點擊取消 |
| Expected Result | 編輯表單關閉 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-38 |
| Name | 功能選單導向－優惠券 |
| Reference | FR-26 |
| Severity | 3 |
| Instructions | 點擊優惠券功能按鈕 |
| Expected Result | 導向優惠券頁面 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-39 |
| Name | 功能選單導向－歷史紀錄 |
| Reference | FR-26 |
| Severity | 3 |
| Instructions | 點擊歷史紀錄功能按鈕 |
| Expected Result | 導向歷史紀錄頁面 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-40 |
| Name | 功能選單導向－賣家後台 |
| Reference | FR-26 |
| Severity | 3 |
| Instructions | 點擊賣家後台功能按鈕 |
| Expected Result | 導向賣家後台頁面 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-41 |
| Name | 修改密碼觸發提示視窗 |
| Reference | FR-26 |
| Severity | 2 |
| Instructions | 點擊修改密碼按鈕 |
| Expected Result | 顯示提示視窗且停留原頁 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-42 |
| Name | 優惠券頁面基本區塊顯示 |
| Reference | FR-26 |
| Severity |3 |
| Instructions | 進入優惠券頁面 |
| Expected Result | 基本區塊正常顯示 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-43 |
| Name | 抽獎按鈕狀態與可用性 |
| Reference | FR-26 |
| Severity | 4 |
| Instructions | 查看並點擊抽獎按鈕 |
| Expected Result | 按鈕狀態正確並可操作 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-44 |
| Name | 回到個人頁面功能 |
| Reference | FR-26 |
| Severity | 4 |
| Instructions | 點擊返回個人頁面按鈕 |
| Expected Result | 成功返回個人頁面 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-45 |
| Name | 歷史紀錄頁面顯示 |
| Reference | FR-19 |
| Severity | 3 |
| Instructions | 進入歷史紀錄頁面 |
| Expected Result | 頁面成功顯示 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-46 |
| Name | 顯示標籤切換 |
| Reference | FR-19 |
| Severity | 3 |
| Instructions | 檢視歷史紀錄標籤 |
| Expected Result | 標籤正常顯示 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-47 |
| Name | 切換到訂單紀錄標籤 |
| Reference | FR-19 |
| Severity | 3 |
| Instructions | 點擊訂單紀錄標籤 |
| Expected Result | 顯示訂單紀錄 |
| Cleanup | 無 |


| Test case |  |
|---|---|
| Identification | ST-48 |
| Name | 切換到瀏覽紀錄標籤 |
| Reference | FR-19 |
| Severity | 3 |
| Instructions | 點擊瀏覽紀錄標籤 |
| Expected Result | 顯示瀏覽紀錄 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-49 |
| Name | 展開訂單詳情 |
| Reference | FR-11 |
| Severity | 3 |
| Instructions | 點擊訂單詳情按鈕 |
| Expected Result | 顯示訂單詳細資訊 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-50 |
| Name | 確認訂單付款 |
| Reference | FR-11|
| Severity | 3 |
| Instructions | 點擊訂單付款按鈕 |
| Expected Result | 訂單付款完成 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-51 |
| Name | 結帳填寫購買人資料 |
| Reference | FR-11 |
| Severity | 1 |
| Instructions | 在資料欄輸入購買人資料 |
| Expected Result | 能夠輸入，若不輸入就結帳會收到提醒 |
| Cleanup 無 |

| Test case |  |
|---|---|
| Identification | ST-52 |
| Name | 結帳選擇優惠券 |
| Reference | FR-11 |
| Severity | 2 |
| Instructions | 按下優惠券選項 |
| Expected Result | 顯示使用者擁有的優惠券 |
| Cleanup | 無 |

| Test case |  |
|---|---|
| Identification | ST-53 |
| Name | 結帳頁與賣家溝通按鈕 |
| Reference | FR-13 |
| Severity | 3 |
| Instructions | 按下與賣家溝通按鈕 |
| Expected Result | 跳轉到聊天室頁面並建立聊天室與web socket連線 |
| Cleanup |返回首頁 |


---
## 效能測試:

### 下圖為100個thread的測試結果

![100useravg](https://hackmd.io/_uploads/H1vyee_Xbl.png)


### 詳表

![100user](https://hackmd.io/_uploads/S1-_0ku7-e.png)

### 下圖為100個thread的測試結果，加上min max 90%線等的結果

![100userDetail](https://hackmd.io/_uploads/SyYO1l_7-e.png)


### 下圖為1000的thread的結果

![1000useravg](https://hackmd.io/_uploads/rySt1x_Qbe.png)


### 詳表

![1000user](https://hackmd.io/_uploads/HyovyxdQWx.png)


### 下圖為1000個thread的測試結果，加上min max 90%線等的結果

![1000userDetail](https://hackmd.io/_uploads/rJJ21ldQZg.png)






## 4. 測試工作指派與時程  (Personnel and Schedule)

### 4.1 測試成員  (Personnel)

| 姓名 | 職責 |
|---|---|
| 王洪賢 | 撰寫測試文件、單元測試|
| 游承諺 | 撰寫測試文件、單元測試、系統測試 |
| 蕭丞佑 | 撰寫測試文件、單元測試|
| 蘇奕勳 | 撰寫測試文件、CI自動測試流程與部署|

---

## 5. 測試結果與分析  (Test Results and Analysis)


### 5.1 測試結果  (Test Results)

| 測試案例編號 | 測試結果 (Pass/Fail) | 註解 |
|---|---|---|
| UT-001 | PASSED |  |
| UT-002 | PASSED |  |
| UT-003 | PASSED |  |
| UT-004 | PASSED |  |
| UT-005 | PASSED |  |
| UT-006 | PASSED |  |
| UT-007 | PASSED |  |
| UT-008 | PASSED |  |
| UT-009 | PASSED |  |
| UT-010 | PASSED |  |
| UT-011 | PASSED |  |
| UT-012 | PASSED |  |
| UT-013 | PASSED |  |
| UT-014 | PASSED |  |
| UT-015 | PASSED |  |
| UT-016 | PASSED |  |
| UT-017 | FAILED | 沒有出現剛剛加的評論 |
| UT-018 | FAILED | 沒有列該商品的評論 |
| UT-019 | PASSED |  |
| UT-020 | PASSED |  |
| UT-021 | PASSED | 使用者資訊查詢功能正常|
| UT-022 | PASSED | 使用者資訊更新功能正常|
| UT-023 | PASSED | 密碼修改功能正常 |
| UT-024 | PASSED | 公開使用者資訊查詢正常|
| UT-025 | PASSED | 新增收藏功能正常 |
| UT-026 | PASSED | 查詢收藏清單功能正常 |
| UT-027 | PASSED | 移除收藏功能正常 |
| UT-028 | PASSED | 清空收藏清單功能正常 |
| UT-029 | PASSED | WebSocket 即時訊息傳送功能正常 |
| UT-030 | PASSED | 聊天歷史記錄查詢功能正常 |
| UT-031 | PASSED | 訊息持久化儲存功能正常 |
| UT-032 | PASSED | 聊天室自動建立功能正常 |
| UT-033 | PASSED | JWT Token 認證功能正常 |
| UT-034| PASSED | |
| UT-035 | PASSED | 資料遷移冪等性測試通過 |
| UT-036| PASSED | 新使用者預設值設定正常 |
|UT-037| PASSED | 有顯示競標紀錄 |
|UT-038| PASSED | 有顯示瀏覽紀錄 |
|UT-039| PASSED |  |
|UT-040| PASSED |  |
|UT-041| PASSED |  |
|UT-042| PASSED |  |
|UT-043| PASSED |  |
| ST-001 | PASSED |  |
| ST-002 | PASSED |  |
| ST-003 | PASSED |  |
| ST-004 | PASSED |  |
| ST-005 | PASSED |  |
| ST-006 | PASSED |  |
| ST-007 | PASSED |  |
| ST-008 | PASSED |  |
| ST-009 | PASSED |  |
| ST-0010 | PASSED |  |
| ST-0011 | PASSED |  |
| ST-0012 | PASSED |  |
| ST-0013 | PASSED |  |
| ST-0014 | PASSED |  |
| ST-0015 | PASSED |  |
| ST-0016 | PASSED |  |
| ST-0017 | PASSED |  |
| ST-0018 | PASSED |  |
| ST-0019 | PASSED |  |
| ST-0020 | PASSED |  |
| ST-0021 | PASSED |  |
| ST-0022 | PASSED |  |
| ST-0023 | PASSED |  |
| ST-0024 | PASSED |  |
| ST-0025 | PASSED |  |
| ST-0026 | PASSED |  |
| ST-0027 | PASSED |  |
| ST-0028 | PASSED |  |
| ST-0029 | PASSED |  |
| ST-0030 | PASSED |  |
| ST-0031 | PASSED |  |
| ST-0032 | PASSED |  |
| ST-0033 | PASSED |  |
| ST-0034 | PASSED |  |
| ST-0035 | PASSED |  |
| ST-0036 | PASSED |  |
| ST-0037 | PASSED |  |
| ST-0038 | PASSED |  |
| ST-0039 | PASSED |  |
| ST-0040 | PASSED |  |
| ST-0041 | PASSED |  |
| ST-0042 | PASSED |  |
| ST-0043 | PASSED |  |
| ST-0044 | PASSED |  |
| ST-0045 | PASSED |  |
| ST-0046 | PASSED |  |
| ST-0047 | PASSED |  |
| ST-0048 | PASSED |  |
| ST-0049 | PASSED |  |
| ST-0050 | PASSED |  |
| ST-0051 | PASSED |  |
| ST-0052 | PASSED |  |
| <b>RATE</b> | <b>94.73 %</b> | 90/95 通過 |


---

### 5.2 缺失報告  (Defect Tracking)


| 缺失標號 | 缺失嚴重性 | 缺失說明 | 測試案例編號 | 缺失負責人 | 修復狀態 | 修復說明 |
|---|---|---|---|---|---|---|
|001 | Medium | 舊使用者資料遷移失敗，remainingDrawTimes 未正確設定為預設值 | UT-036 | 開發團隊 | Open | 需檢查 Runner 中資料遷移邏輯 |
|002 | Medium | 評論完有更新星星數，但是下方沒有出現剛剛完成的評論 | 017 | 開發團隊 | Closed |  |
| 003 | Medium | 沒有抓到該商品先前的評論，即使有評論也顯示"目前還沒有評論，成為第一個評論者吧！" | UT-018 | 開發團隊 | Closed |  |
| 004| High | 輸入存在的userID，且該user有競標過卻回傳error500 | UT-037 |開發團隊 | Open |  |
| 005 | High | 輸入存在的userID，且該user有瀏覽過商品過卻回傳error500 | UT-038 | 開發團隊 |Open |  |

---

## 6. 追溯表  (Traceability Matrix)


| Req. No. | Test Case # | Verification |
|---|---|---|
| FR-01 | UT-001 | <span style="color:">Verified</span> |
|FR-01| ST-001 | <span style="color:">Verified</span> |  |
|FR-01| ST-002 | <span style="color:">Verified</span> |  |
| FR-02 | UT-002 | <span style="color:">Verified</span> |
| FR-03 | UT-003 | <span style="color:">Verified</span> |
|FR-03| ST-003 | <span style="color:">Verified</span> |  |
|FR-03| ST-004 | <span style="color:">Verified</span> |  |
| FR-04 | UT-004 | <span style="color:">Verified</span> |
| FR-05 | UT-005 | <span style="color:">Verified</span> |
| FR-06 | UT-006| <span style="color:">Verified</span> |
| FR-07 | UT-007 | <span style="color:">Verified</span> |
| FR-08 | UT-008 | <span style="color:">Verified</span> |
| FR-09 | UT-009 | <span style="color:">Verified</span> |
| FR-10 | UT-010 | <span style="color:">Verified</span> |
| FR-11 | UT-011 | <span style="color:">Verified</span> |
| FR-12 | UT-012 | <span style="color:">Verified</span> |
| FR-13 | UT-013 | <span style="color:">Verified</span> |
| FR-13 | UT-029 | <span style="color:">Verified</span> |
| FR-14 | UT-014 | <span style="color:">Verified</span> |
| FR-15 | UT-015 | <span style="color:">Verified</span> |
| FR-16 | UT-016 | <span style="color:">Verified</span> |
| FR-17 |  |  |
| FR-18 | UT-039 | <span style="color:">Verified</span> |
| FR-18 | UT-040 | <span style="color:">Verified</span> |
| FR-18 | UT-041 | <span style="color:">Verified</span> |
| FR-18 | UT-042 | <span style="color:">Verified</span> |
| FR-19 | UT-037 | <span style="color:">Verified</span> |
| FR-19 | UT-038 | <span style="color:">Verified</span> |
| FR-20 |  |  |
| FR-21 |  |  |
| FR-22 | UT-017 | <span style="color:">Verified</span> |
| FR-23 | UT-018 | <span style="color:">Verified</span> |
| FR-24 | UT-019 | <span style="color:">Verified</span> |
| FR-25 | UT-020 | <span style="color:">Verified</span> |
| FR-26 | UT-021 | <span style="color:">Verified</span> |
| FR-26 | UT-022 | <span style="color:">Verified</span> |
| FR-26 | UT-023 | <span style="color:">Verified</span> |
| FR-27 | UT-024 | <span style="color:">Verified</span> |
| FR-28 | UT-025 | <span style="color:">Verified</span> |
| FR-29 | UT-026 | <span style="color:">Verified</span> |
| FR-29 | UT-027 | <span style="color:">Verified</span> |
| FR-29 | UT-028 | <span style="color:">Verified</span> |
| FR-30 | UT-030 | <span style="color:">Verified</span> |
| FR-31 | UT-031 | <span style="color:">Verified</span> |
| FR-32 | UT-032 | <span style="color:">Verified</span> |
| FR-33 | UT-033 | <span style="color:">Verified</span> |
|FR-34| UT-043 | Verified |  |
|NFR-01| ST-005 | <span style="color:">Verified</span> |  |
|FR-07| ST-006 | <span style="color:">Verified</span> |  |
|FR-26| ST-007 | <span style="color:">Verified</span> |  |
|FR-29| ST-008 | <span style="color:">Verified</span> |  |
|FR-11| ST-009 | <span style="color:">Verified</span> |  |
|FR-13| ST-010 | Verified |  |
|FR-13| ST-011 | Verified |  |
|NFR-01| ST-012 | Verified |  |
|FR-17| ST-013 | Verified |  |
|NFR-01| ST-015 | Verified |  |

