Java多用户一对一网页聊天室-测试报告

一、项目概述

1、项目背景

本项目是一个基于 WebSocket 的多用户一对一聊天室。用户可以通过浏览器注册/登录,选择在线用户进行私聊,实现消息的实时收发。系统采用 Java 作为后端语言,使用 WebSocket 实现通信,前端使用 HTML/CSS/JavaScript 构建页面。

2、需求分析

(1)功能需求

用户管理:支持新用户注册、已注册用户登录,用户名唯一。

好友列表:展示所有好友,支持点击用户开始聊天。

会话列表:展示所有会话,展示会话对象及最新消息。

一对一私聊:用户 A 可选择用户 B,发送文本消息,用户 B 实时接收并显示。

消息记录:聊天记录保存到数据库,支持查看历史消息。

离线消息:当目标用户不在线时,消息暂存,待用户上线后补发。

消息展示:每条消息显示发送者、接收者、发送时间(服务器时间)。

(2)非功能需求

响应时间:消息从发送到对方接收的延迟应小于 200ms(局域网/本机测试)。

并发支持:支持至少 20 个用户同时在线并发聊天,服务器不崩溃。

安全性:防止 XSS 注入,消息内容需转义。

兼容性:主流浏览器(Chrome / Edge)下功能正常,页面布局不严重错乱。

二、测试环境与范围

1、测试环境

配置项 详情
操作系统 Windows 11
后端 Java 17, Spring Boot 4.0.6, WebSocket
前端 HTML / CSS / JavaScript
浏览器 Chrome 148.0.7778.179, Edge 148.0.3967.83
数据库(若有) MySQL 5.7
开发工具 IntelliJ IDEA

2、测试范围

(1)已测功能

用户注册(成功、重复用户名、含特殊字符的用户名)

用户登录(正确密码、错误密码)

一对一消息发送与接收(文本、空消息、超长消息)

消息顺序的正确性

浏览器兼容性(Chrome、Edge)

(2)未测功能

群聊(项目未实现)

文件/图片发送

消息已读/未读回执

大规模压力测试(>100 并发连接)

数据库持久化性能测试

移动端 App 测试(仅网页)

三、设计测试用例与执行

四、接口测试

使用 Postman 对后端核心 API 进行了功能验证。测试覆盖用户注册、登录、创建会话、发送消息等接口。共设计 10 个接口测试用例,包括正常场景和异常场景(如参数缺失、格式错误等)。

五、测试过程中发现并修复的问题

1、XSS 漏洞(安全性测试)

问题描述:发送 <script>alert('XSS')</script> 时,对方页面会执行脚本。

修复措施:将消息显示从 innerHTML 改为 textContent,并对特殊字符进行转义。

javascript 复制代码
//把历史消息加进来
function addMessage(messageShowDiv,message){
    //判断消息是自己发的还是好友发的
    let selfName=document.querySelector('.main .left .user').innerHTML;
    let messageDiv=document.createElement('div');
    if(selfName==message.fromName){
        messageDiv.className='message message-right';
    }else{
        messageDiv.className='message message-left';
    }

    //转义,防止恶意脚本
    let boxDiv = document.createElement('div');
    boxDiv.className = 'box';
    let h4 = document.createElement('h4');
    h4.textContent = message.fromName;
    let p = document.createElement('p');
    p.textContent = message.content;   
    boxDiv.appendChild(h4);
    boxDiv.appendChild(p);
    messageDiv.appendChild(boxDiv);

    // messageDiv.innerHTML='<div class="box">'
    //                     +'<h4>'+message.fromName+'</h4>'
    //                     +'<p>'+message.content+'</p>'
    //                     +'</div>';
    messageShowDiv.appendChild(messageDiv);
}

2、空消息和超长消息未拦截(功能测试)

问题描述:用户可以发送空白(仅空格)或超过 200 字符的消息。

修复措施:前端增加校验,空白消息提示"不能发送空消息",超长消息提示"消息长度不能超过200字符"。

javascript 复制代码
// 1. 空消息或只含空白字符(空格、换行等)
        if (rawMessage.trim() == '') {
            alert('不能发送空消息');
            return;
        }

        // 2. 超长消息(超过200个字符)
        if (rawMessage.length > 200) {
            alert('消息长度不能超过200个字符');
            return;
        }

3、表情符号导致连接断开(功能测试)

问题描述:发送 Emoji 表情后,WebSocket 连接异常关闭。

修复措施:前端检测表情符号并拦截,提示"暂不支持发送表情"。

javascript 复制代码
// 3. 检测是否包含表情符号(Emoji)
        function containsEmoji(str) {
            for (let ch of str) {
                if (ch.codePointAt(0) > 0xFFFF) {
                    return true;
                }
            }
            return false;
        }
        if (containsEmoji(rawMessage)) {
            alert('暂不支持发送表情符号,请使用文字');
            return;
        }

六、测试结论与后续优化

1、测试结论

本次测试对"Java 多用户一对一网页聊天室"项目进行了全面的功能、界面、性能、可靠性、安全性及接口测试,共执行 40 条测试用例 ,通过率 100%

核心功能:用户注册/登录、一对一私聊、消息实时收发均正常。

异常处理:空消息、超长消息、表情符号等非法输入已被正确拦截。

安全性:XSS 漏洞已修复,特殊字符正常显示。

性能:单对消息延迟 < 50ms,模拟多用户在线服务器稳定。

可靠性:断网重连后消息不丢失,服务器重启后手动刷新可恢复。

2、后续优化

自动重连:实现服务器重启后的自动重连机制,减少用户手动刷新。

离线消息:增加离线消息存储和上线拉取功能。

消息已读未读:添加已读回执,提升用户体验。

自动化测试:将 Postman 用例集成到 CI 中,并补充前端 Selenium 自动化回归测试。

性能压测:使用 JMeter 模拟 100+ 并发用户,进一步验证服务器承载能力。

相关推荐
唐青枫16 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马18 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户37215742613518 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户37215742613518 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq2 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js