一、項目背景
隨著數字音樂內容的爆炸式增長,用戶對于便捷、高效的音樂管理與播放需求日益增強。傳統的本地音樂管理方式已無法滿足多設備同步、在線分享與個性化推薦等現代需求。為此,我們設計并開發了一款基于Spring Boot框架的SoundWave,旨在為用戶提供一個輕量級、可擴展的在線音樂管理與播放平臺。
二、測試環境
硬件: Dell G15 5511
操作系統: Windows 11 家庭中文版
瀏覽器: Google Chrome 138.0.7204.169(正式版本) (64 位)測試工具: 自動化測試 Selenium,性能測試 Jmeter
自動化腳本運行環境: IntelliJ IDEA 2025.1.4
三、測試分類
1、功能測試用例與非功能測試用例
功能測試、界面測試、性能測試、兼容性測試、易用性測試、安全測試、網絡測試
2.測試內容
(1)登陸頁面
測試用例:
測試用例編號 | 操作 | 賬號 | 密碼 | 預期結果 |
1 | 輸入正常的賬號密碼 | zhangsan | 123456 | 登錄成功 |
2 | 輸入錯誤的賬號和密碼 | tt | 333 | 登錄失敗,提示錯誤 |
3 | 輸入正確的賬號和錯誤的密碼 | zhangsan | 332 | 登錄失敗,提示錯誤 |
4 | 輸入錯誤的賬號和正確的密碼 | tt | 123456 | 登錄失敗,提示錯誤 |
5 | 不填寫賬號和密碼 | 登錄失敗,提示錯誤 | ||
6 | 填寫賬號不填寫密碼 | zhangsan | 登錄失敗,提示錯誤 | |
7 | 不填寫賬號填寫密碼 | 123456 | 登錄失敗,提示錯誤 |
測試結果:
①測試用例:
結果:登錄成功
②測試用例:
結果:登錄失敗,提示錯誤信息
③測試用例:
結果:登錄失敗,提示錯誤信息
④測試用例:
結果:登錄失敗,提示錯誤信息
⑤測試用例:
結果:登錄失敗,提示錯誤信息
⑥測試用例:
結果:登錄失敗,提示錯誤信息
⑦測試用例:
結果:登錄失敗,提示錯誤信息
(2)注冊頁面
測試用例:
測試用例編號 | 操作 | 賬號 | 密碼 | 預期結果 |
1 | 輸入正常的賬號密碼 | zhangzifeng | 123456 | 注冊成功 |
2 | 輸入存在的賬號 | zhangsan | 123456 | 注冊失敗,提示錯誤 |
3 | 輸入正確的賬號和錯誤的密碼 | admin | 332 | 注冊失敗,提示錯誤 |
4 | 輸入錯誤的賬號和正確的密碼 | 1 | 123456 | 注冊失敗,提示錯誤 |
5 | 不填寫賬號和密碼 | 注冊失敗,提示錯誤 | ||
6 | 填寫賬號不填寫密碼 | zhangsan | 注冊失敗,提示錯誤 | |
7 | 不填寫賬號填寫密碼 | 123456 | 注冊失敗,提示錯誤 |
①測試用例:
結果:注冊成功,可登錄
②測試用例:
結果:注冊失敗,提示錯誤信息
③測試用例:
結果:注冊失敗,提示錯誤信息
④測試用例:
預期結果:注冊失敗
實際結果:注冊成功
⑤測試用例:
結果:注冊失敗,提示錯誤信息
⑥測試用例:
結果:注冊失敗,提示錯誤信息
⑦測試用例:
結果:注冊失敗,提示錯誤信息
(3)列表頁面
1.刪除
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 未登錄刪除一首歌 | 無法刪除 | 無法刪除 |
3 | 未登錄批量刪除>=2首歌 | 無法刪除 | 無法刪除 |
4 | 刪除一首歌 | 刪除成功 | 刪除成功 |
5 | 批量刪除>=2首歌 | 刪除成功 | 刪除成功 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:無法刪除
③測試用例:
結果:無法刪除
④測試用例:
結果:成功刪除
⑤測試用例:
結果:刪除成功
2.搜索
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 未登錄進行搜索 | 無法搜索 | 無法搜索 |
3 | 已登錄進行模糊搜索歌名 | 正常搜索 | 正常搜索 |
4 | 已登錄進行搜索歌手 | 正常搜索 | 無法搜索 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:無法搜索
③測試用例:
結果:搜索成功
④測試用例:
結果:無法搜索
3.收藏
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 未登錄進行收藏 | 無法收藏 | 無法收藏 |
3 | 已登錄進行收藏 | 成功收藏 | 成功收藏 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:無法收藏
③測試用例:
結果:收藏成功
4.播放
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 未登錄進行播放音樂 | 無法播放 | 無法播放 |
3 | 已登錄進行播放音樂 | 成功播放 | 正常播放 |
4 | 已登錄拖拽音樂進度 | 正常拖拽 | 無法拖拽 |
5 | 已登錄切換音樂 | 正常切歌 | 無法切歌 |
6 | 縮小音樂導航欄 | 正常縮放 | 正常縮放 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:無法播放音樂
③測試用例:
結果:成功播放
④測試用例:
結果:只要拖拽就重新播放
⑤測試用例:
結果:無法切歌
⑥測試用例:
結果:縮小成功
(4)收藏頁面
1.播放
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 進行播放音樂 | 成功播放 | 正常播放 |
3 | 拖拽音樂進度 | 正常拖拽 | 無法拖拽 |
4 | 切換音樂 | 正常切歌 | 無法切歌 |
5 | 縮小音樂導航欄 | 正常縮放 | 正常縮放 |
6 | 暫定音樂 | 正常暫停 | 正常暫停 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:可以播放音樂
③測試用例:
結果:無法拖拽,只要拖拽就重頭播放音樂
④測試用例:
結果:無法切換音樂
⑤測試用例:
結果:正常縮小
⑥測試用例:
結果:可以暫停
2.搜索
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 進行模糊搜索歌名 | 正常搜索 | 正常搜索 |
3 | 進行搜索歌手 | 正常搜索 | 無法搜索 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:正常搜索
③測試用例:
結果:無法搜索
3.移除收藏
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 移除收藏 | 正常移除 | 正常移除 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:移除成功
4.回到首頁
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 點返回首頁 | 跳轉首頁 | 跳轉首頁 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:跳轉成功
(5)上傳音樂
測試用例編號 | 操作 | 預期結果 | 實際結果 |
1 | 未登錄返回登錄login.html | 跳轉login.html | 未跳轉login.html,界面顯示空白 |
2 | 上傳音樂,輸入歌手名 | 上傳成功 | 上傳成功 |
3 | 上傳音樂,不輸入歌手名 | 上傳失敗 | 上傳失敗 |
4 | 不上傳音樂,輸入歌手名 | 上傳失敗 | 上傳失敗 |
5 | 上傳已有音樂,并輸入歌手名 | 上傳失敗 | 上傳失敗 |
①測試用例:
結果:未跳轉,無法進行訪問list.html
②測試用例:
結果:上傳成功
③測試用例:
結果:上傳失敗,提示輸入歌手名
④測試用例:
結果:無法上傳,無法點擊上傳按鈕
⑤測試用例:
結果:上傳失敗
四、自動化測試(Java)
五、性能測試Jmeter?(接口與梯度壓力測試)
使用JMeter工具對論壇系統的接口進行簡單的性能測試:
(1) 接口測試
1.線程組
2.HTTP請求默認值
3.HTTP Cookie管理器
4.固定定時器
5.CSV 數據文件設置
用戶不同用戶登錄
6.登錄
7.查詢全部音樂
8.查詢音樂
9.播放音樂
10.刪除音樂
11.批量刪除音樂
12.注冊
13.收藏音樂
14.上傳音樂
15.查詢全部收藏音樂
16.查詢指定收藏音樂
17.取消收藏音樂
18.查看結果樹
(2)壓力梯度測試
1.SoundWave Stepping Thread Group
2.可視化圖
3.隨之時間推移
4.吞吐量
5.響應時間
5.結論
JMeter 性能測試報告,需從?錯誤率、響應時間、吞吐量、負載變化?等維度展開,結合圖表和統計數據定位系統瓶頸:
一、核心統計數據概覽
指標 數值 分析重點 總請求數 832 - 失敗請求數 140(錯誤率 22.15%) 錯誤率過高,需排查根源 平均響應時間 1545.42 ms 長尾響應明顯(最大 37273 ms) 主要錯誤類型 500 錯誤(129 次,81.43%)、連接超時(10 次,7.14%) 服務端內部錯誤 + 網絡 / 連接池問題 二、關鍵圖表分析
1. 負載與響應趨勢(Over Time 模塊)
- Active Threads Over Time:線程數?階梯式上升(壓力逐漸增大),模擬真實場景的負載變化。
- Response Times Over Time:多個接口(如 “上傳音樂”“上傳音樂 - 0”)的?平均響應時間隨負載上升而飆升,說明系統在高并發下性能退化嚴重。
- Connect Time Over Time:連接時間隨負載增加而延長,暗示?服務端連接池飽和或網絡瓶頸。
2. 吞吐量變化(Throughput 模塊)
- Hits/Codes/Transactions Per Second:隨時間推移,成功請求數(200 碼)持續下降,失敗請求占比上升,表明系統?處理能力隨負載增加而衰減。
3. 響應時間分布(Response Times 模塊)
- Response Time Percentiles:高百分位(如 99th)響應時間極高(部分接口超 3000 ms),說明?大量請求經歷嚴重延遲(長尾效應)。
- Response Time Overview:超過 500 ms 的請求占比高,且存在錯誤請求,用戶體驗差。
4. 錯誤詳情(Dashboard 統計)
- 500 錯誤:集中在?刪除音樂、獲取收藏音樂、批量刪除音樂?等接口,推測?服務端業務邏輯異常或數據庫操作失敗。
- 連接超時(Non HTTP ConnectException):提示?
Connection timed out
,可能是?服務端連接池已滿,無法處理新連接。三、接口級性能分析
接口 失敗率 平均響應時間 典型問題 刪除音樂 56.36% 1278.27 ms 500 錯誤占比極高 獲取收藏音樂 56.76% 1099.84 ms 500 錯誤 + 連接超時 批量刪除音樂 40.00% 131.32 ms 500 錯誤為主 上傳音樂 6.25% 1918.43 ms 長尾響應(最大 37273 ms) 登錄 1.75% 1157.66 ms 偶爾出現超慢響應(21049 ms) 四、性能瓶頸與優化建議
1. 服務端穩定性問題
- 500 錯誤排查:檢查服務端日志,定位接口的業務邏輯異常(如 SQL 錯誤、參數校驗失敗)。
- 連接池優化:調整服務端連接池大小(如 Tomcat 線程池),避免高并發下連接超時。
2. 響應時間長尾問題
- 慢操作剖析:對響應時間長的接口(如上傳播音樂)進行?代碼 Profiling,排查慢 SQL、IO 阻塞或鎖競爭。
- 異步化改造:對耗時操作(如上傳播)采用異步處理,避免阻塞線程。
3. 高失敗率接口修復
- 隔離測試:針對刪除、收藏等接口,單獨壓測并檢查依賴(如數據庫、緩存)是否正常。
- 重試機制:對非冪等接口增加重試策略,降低瞬時錯誤對業務的影響。
4. 壓測策略優化
?
- 拐點分析:通過調整線程組,找到系統?吞吐量拐點(如并發多少時性能驟降),明確容量上限。
- 監控補充:壓測時增加服務端監控(CPU、內存、數據庫負載),輔助定位資源瓶頸。
綜上,系統在?高并發下穩定性不足、響應延遲明顯,需從?服務端錯誤排查、連接池優化、慢操作治理?三方面突破,結合監控和壓測迭代優化。
六、測試結果評估
1、主線功能測試通過,項目可以上線
2、項目上線后觀察線上數據