--- # 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 | |