当前位置: 首页 > news >正文

基于WebSocket和SpringBoot聊天项目ChatterBox测试报告

网页聊天室项目测试报告

一、项目概述

本项目是一个基于 Spring Boot 和 WebSocket 技术栈开发的网页聊天室应用,支持用户间实时消息交互、会话管理和好友列表功能。项目采用前后端分离架构,后端通过 WebSocket 实现实时通信,使用 MySQL 存储用户、好友、会话及消息数据,前端通过 HTML、CSS 和 JavaScript 构建用户界面。

核心技术栈

后端:Spring Boot 2.7.6、WebSocket、MyBatis、MySQL

前端:HTML5、CSS、JavaScript、jQuery

开发工具:IntelliJ IDEA、Maven,VSCode

测试工具:Postman,Fiddler,Jmeter

二、测试环境

环境项具体配置
操作系统Windows 10
JDK 版本1.8
MySQL 版本8.0
浏览器Chrome 112.0.5615.138
服务器端口9910

三、测试内容与结果

3.1 后端功能测试
3.1.1 WebSocket 连接测试

测试点:连接建立、连接关闭、异常处理

测试方法:通过前端 test.html 页面建立 WebSocket 连接,观察后端日志输出

测试结果:连接建立时,后端输出 "TestAPI 连接成功!" 和 "[WebSocketAPI] 连接成功!"
关闭页面时,后端输出 "TestAPI 连接关闭!" 和 "[WebSocketAPI] 连接关闭!"
网络中断时,后端输出 "TestAPI 连接异常!"
3.1.2 消息处理测试
测试点:消息接收、消息转发、数据库存储
测试方法:使用 test.html 页面发送消息,检查后端日志和数据库记录
测试结果:
后端能正确接收消息并输出 "TestAPI 收到消息!..."
消息能成功转发给会话内其他用户
消息内容正确存储到 message 表中,包含发送者 ID、会话 ID、内容和时间戳
3.1.3 数据库交互测试
测试点:用户数据、好友关系、会话信息的 CRUD 操作
测试方法:检查 db.sql 脚本执行结果和 MyBatis 映射是否正确
测试结果:
数据库表结构创建完整,包含 user、friend、message_session 等表
测试数据插入成功,初始用户(张三、李四等)及关系正确建立
会话与用户关联关系正确存储
3.2 前端功能测试
3.2.1 页面展示测试

测试点:页面布局、元素显示、样式效果
测试方法:访问 client.html 页面,检查 UI 渲染效果
测试结果:
页面布局分为左侧会话 / 好友列表和右侧聊天区域
会话列表和好友列表能正常展示示例数据
消息区域能显示左右区分的聊天消息
3.2.2 交互功能测试
测试点:消息输入、发送按钮、标签页切换
测试方法:在输入框填写内容并点击发送,切换会话 / 好友标签
测试结果:
发送按钮能触发消息发送逻辑
标签页切换可显示不同列表内容
WebSocket 能正确发送输入的消息内容
3.2.3 消息收发测试
测试点:消息发送、消息接收、消息展示
测试方法:使用两个浏览器窗口模拟不同用户,发送消息并观察
测试结果:
发送方消息能在控制台输出
接收方能收到消息并在控制台显示
消息内容完整,未出现乱码

四、发现的问题与改进建议

4.1 存在的问题

  1. 前端页面样式不够完善,部分元素(如用户信息、会话标题)未正确显示
  2. 好友列表和会话列表数据为静态示例,未与后端动态同步
  3. 缺少用户登录认证机制,无法区分不同用户身份
  4. 未实现消息历史记录加载功能,新打开页面无法查看历史消息
  5. 没有处理用户离线状态,离线用户无法接收消息

4.2 改进建议

  1. 完善前端 CSS 样式,优化页面布局和交互体验
  2. 实现前端与后端的数据同步,动态加载好友列表和会话信息
  3. 增加用户登录模块,通过 Session 或 Token 实现身份认证
  4. 开发历史消息加载接口,支持分页查询历史消息
  5. 添加离线消息存储机制,用户上线后可接收离线消息
  6. 增加输入合法性校验,防止 XSS 攻击和恶意内容发送

五、测试总结

本项目基本实现了网页聊天室的核心功能,包括 WebSocket 连接管理、实时消息收发和数据库存储。后端 WebSocket 处理逻辑完整,能正确处理连接建立、消息转发和连接关闭等场景;前端页面框架已搭建完成,具备基本的交互能力。

http://www.dtcms.com/a/339470.html

相关文章:

  • 怎样平衡NLP技术发展中数据质量和隐私保护的关系?
  • 中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
  • 多模态大模型应用落地:从图文生成到音视频交互的技术选型与实践
  • 5.1Pina介绍
  • 进程间的通信(管道,信号)
  • 知行社:以爱之名,共筑公益梦想
  • Podman:Mysql(使用卷)
  • 【Goland】:面向对象编程
  • Day 29 类的装饰器
  • 如何将任意文件一键转为PDF?
  • 【PHP】模拟斗地主后端编写
  • Matplotlib数据可视化实战:Matplotlib图表美化与进阶教程
  • 软件系统运维常见问题
  • idea中如何设置文件的编码格式
  • Python Day31 JavaScript 基础核心知识点详解 及 例题分析
  • 【完整源码+数据集+部署教程】太阳能板表面损伤检测图像分割系统源码和数据集:改进yolo11-DynamicHGNetV2
  • 服务器Linux防火墙怎样实现访问控制
  • Nginx前后端分离反代(VUE+FastAPI)
  • (一)八股(数据库/MQ/缓存)
  • 深入理解抽象类
  • C#三大核心特性
  • 小程序插件使用
  • Win/Linux笔记本合盖不睡眠设置指南
  • UART串口通信编程自学笔记30000字,嵌入式编程,STM32,C语言
  • 【软件安装】VScode介绍安装步骤及中文界面设置方法
  • 移动端即时通讯源码/IM聊天源码RainbowChat,纯原生体验丝滑、全源码易二开
  • NestJS 依赖注入方式全解
  • jmetergrafanainfluxdb搭建压测监控平台
  • JavaScript 性能优化实战:从分析到落地的全指南
  • Spring 的 setter 注入可以解决某些类型的循环依赖问题