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+ 并发用户,进一步验证服务器承载能力。

相关推荐
人道领域1 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
Jasonakeke1 小时前
SpringBoot自动配置原理揭秘
java·spring boot·后端
xiaoshuaishuai81 小时前
C# AvaloniaUI动态显示图片
开发语言·c#
日光明媚2 小时前
一步生成视频!One-Forcing:DMD + 零成本 GAN,训练 200 步超越多步 SOTA
android·开发语言·kotlin
2301_803538952 小时前
Java读取Word图片的两种实用方法
java·开发语言·word
C+-C资深大佬2 小时前
SSM 框架(Spring + SpringMVC + MyBatis)
java·spring·mybatis
帅次3 小时前
Android 17 开发者实战:核心更新与应用场景落地指南
android·java·ios·android studio·iphone·android jetpack·webview
Ramble_Naylor3 小时前
东方通(TongWeb)SpringBoot开发指导
java·spring boot
大鹏说大话3 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库