文章目录
本项目为 WebSocket 实时对战系统,业务流程依赖双人在线匹配、实时对战与消息推送,交互具有强实时性与异步性,不适合开展 WebUI 自动化测试。本次测试以手动功能测试、接口测试、性能测试为主。
一、项目背景
项目概述:基于 C++ 开发的在线五子棋对战系统,采用 WebSocket 实现实时通信,MySQL 存储用户数据,实现登录、匹配、实时对战、聊天等核心功能
项目技术栈:C++11、WebSocket++、MySQL、Linux (Ubuntu)、HTML/CSS/JS
项目当前说明:前端未实现注册入口,通过数据库手动创建用户,不影响核心功能使用
二、项目功能
2.1 核心功能清单
- 用户登录验证
- 在线玩家匹配(单人 / 双人匹配、取消匹配)
- 双人实时对战(落子、胜负判定、中途退出处理)
- 房间内实时聊天
- 用户数据统计(分数、场次、胜场更新)
2.2 测试用例思维导图

三、测试计划
测试范围:覆盖功能、界面、兼容性、易用性、安全、性能六大维度,全流程核心功能。
测试目标:验证系统功能正确性、稳定性、安全性,满足用户使用需求。
测试环境:
- 操作系统:Ubuntu 20.04
- 浏览器:Chrome、Edge
- 数据库:MySQL 8.0.42
- 测试工具:Xmind、浏览器开发者工具、Postman、JMeter
四、测试工具
Xmind:思维导图工具,梳理测试范围、设计测试用例,形成测试框架
浏览器(Chrome/Edge):手动 UI 功能测试、WebSocket 通信验证、界面 / 兼容性测试
Postman:登录、用户信息等 HTTP 接口功能测试
JMeter:性能测试工具,模拟多用户并发,验证登录接口响应、服务并发稳定性
五、功能测试(手动 UI 测试 + Postman 接口测试)
手动 UI 测试:
1.登录模块
正常登录:


点击确定之后,跳转到游戏大厅。
异常登陆:
1.用户名错误

2.密码错误

3.用户名密码错误

4.空账户或空密码登录



2.匹配模块
进入游戏大厅:

点击确定取消。

单人匹配:

没有匹配上,一直等待。
双人匹配:
登录xiaohei的账号,两人都点击开始匹配,匹配成功。点击确定进入游戏房间。

取消匹配:
单人没匹配上的时候可以点击按钮取消匹配。双人直接匹配成功,不能取消匹配。

3. 对战模块
正常落子:

重复落子:

非法落子校验:

连成五子判胜:


中途退出判负:

4.聊天模块:
发送正常消息:


空消息校验:
预期结果:输入框为空时,点击发送禁止发送,不生成空占位行,同时给用户明确提示(如 "不能发送空消息!")
实际表现:空内容直接发送成功,生成空白占位行,污染聊天列表,影响用户阅读体验,属于功能逻辑缺陷 + 界面显示问题


修复:打开game_room.html文件找到这部分代码,我们发现在发送聊天消息的 cb_div.onclick 函数里,没有做非空校验,直接把输入框的值发出去了,哪怕是空字符串。

核心修改:
- 用
trim()去除输入内容的首尾空格,避免只发空格的情况 - 加
if(!inputMsg)判断,空内容直接拦截,弹出提示,不发送请求

该Bug 属于轻微缺陷,不影响核心对战功能,只影响聊天体验。
修复后效果:达到预期

5.数据统计模块
这是游戏开始前两方当前分数。


一轮对局结束后
胜利后分数更新:

失败后分数更新:

Postman接口测试:
-
覆盖接口 :
/login(登录接口)、/info(用户信息接口) -
测试内容:
- 正常场景:验证正常登录、登录后获取用户信息的参数合法性、返回数据正确性与业务逻辑一致性
- 异常场景:验证 SQL 注入、错误登录、未登录越权访问等非法请求的拦截逻辑
-
测试结果:
正常场景下两个接口均返回符合预期的结果,业务逻辑正常;错误登录、未登录访问、SQL 注入等非法请求均被系统正常拦截,无越权风险。整体用例执行通过率 100%,接口功能稳定、安全校验有效。
/login正常登录:

/info正常访问:

/login注入拦截:

/info未登录拦截:

六、界面测试
-
页面布局合理,按钮位置清晰,操作区域分布规范。
-
棋盘、棋子显示正常,无遮挡、无错位、无样式错乱。
-
聊天框、用户信息、战绩数据展示正常。
-
文字提示存在错误:黑白双方回合切换时,页面下方 "轮到己方走棋" 与 "轮到对方走棋" 提示与实际回合不一致,黑棋走棋时提示异常。
执黑棋方:

执白棋方:

预期结果:
当轮到黑棋走棋时,黑棋页面下方提示框应显示 "轮到己方走棋";
当轮到白棋走棋时,白棋页面下方提示框应显示 "轮到己方走棋"。
双方提示文字需与当前走棋回合保持一致,提示信息准确无误。
实际表现:
轮到黑棋走棋时,黑棋页面下方提示框仍然显示 "轮到对方走棋";
而白棋页面下方提示框却错误显示 "轮到己方走棋"。
提示文字与当前实际走棋方不一致,回合提示信息错误。
修复:还是在
game_room.html文件找到这部分代码

关键修改:
is_me = info.uid != room_info.uid;(自己走棋后,is_me变为false,提示对方回合;对方走棋后,is_me变为true,提示自己回合,彻底解决颠倒问题)

该bug属于中等程度的业务逻辑错误,不影响核心对战功能(落子、胜负判断正常),但会误导用户回合状态,影响使用体验,属于需要修复的问题。
修复后效果:达到预期
执白棋方:

执黑棋方:


执白棋方:

-
整体界面美观度良好,操作区域明确,符合对战类页面交互习惯。
七、兼容性测试
-
Chrome 浏览器:全部功能正常
-
Edge 浏览器:全部功能正常
-
不同分辨率显示正常,无变形、无错位


八、易用性测试
-
操作流程简单,新手可快速上手:系统操作路径清晰,登录、匹配、对战、聊天等核心功能流程简洁,无复杂操作,新手可快速理解并使用。
-
提示信息清晰,操作反馈明显:大部分操作提示明确,但存在两处影响体验的问题:① 回合提示文字显示错误,黑白棋回合提示颠倒,易误导用户;② 空消息发送无拦截与提示,生成空白占位行,影响聊天体验。但后面已经进行修复,并进行回归测试,达到预期通过。
-
下棋、聊天、退出操作便捷:落子、发送消息、退出房间等操作入口明确,交互响应及时,操作便捷性良好。
-
整体流程顺畅,体验良好:核心对战流程流畅,无卡顿、无阻塞,仅存在两处轻微体验问题,整体用户体验符合预期。
九、安全性测试
-
未登录无法进入游戏
没登录的情况下,直接输游戏地址或者访问大厅页面,会被强制跳回登录页,不会让你直接进入游戏。防止了越权访问。

-
不能越权操作、不能非法落子
不是自己的回合、已经有棋子的位置,都点不出子。系统能正常拦截这些情况,不会出现 "你回合别人下""空位置重复落子" 的问题。
-
密码错误提示正常,无明显漏洞
密码输错会有明确提示,不会泄露登录信息,也没有明文显示密码等敏感内容。后端密码也是 MD5 加密存储,比较安全。


-
输入合法性校验(基本达标)
登录场景做了基础校验,试了 SQL 注入,没注入成功,整体安全正常。
聊天输入那里有个小问题:空消息可以发送 ,属于输入校验没做到位,但不影响游戏运行,已经作为小缺陷记录。

十、性能测试
1.登录响应时间
打开 Postman,用之前的/login接口,连续点击Send 5 次 ,记录每次的Time(响应时间,单位 ms)





5 次响应时间分别为 39ms、25ms、53ms、34ms、23ms,平均 34.8ms,远小于 100ms,与预期一致。
2.落子实时延迟
打开浏览器,进入游戏房间,和另一个用户(或自己开两个窗口)对战;按F12打开开发者工具→Network面板,勾选WS(WebSocket),连续点击落子5 次,记录每次落子到对方棋盘同步的时间(看 WebSocket 消息的时间差,或直接肉眼计时)
A窗口Socket 消息面板:

B窗口Socket 消息面板:

我们用A 窗口(uid=1)发消息,B 窗口(uid=2)收消息的时间差来算延迟:
| 落子次数 | A 发消息时间 | B 收消息时间 | 延迟(ms) |
|---|---|---|---|
| 1 | 01:46:09.195 | 01:46:09.197 | 2ms |
| 2 | 01:46:15.746 | 01:46:15.746 | 0ms(同步) |
| 3 | 01:46:21.706 | 01:46:21.706 | 0ms(同步) |
| 4 | 01:46:27.623 | 01:46:27.623 | 0ms(同步) |
| 5 | 01:46:35.549 | 01:46:35.549 | 0ms(同步) |
平均延迟为0.4ms(实际测试中,本地服务器的延迟几乎为 0,远小于 50ms 的预期,性能拉满!)
3.多用户并发稳定性测试(JMeter 压测)
3.1 测试概述
本次性能测试基于 Apache JMeter 5.6.3,采用 阶梯线程组(Stepping Thread Group) 模拟 30 个用户并发访问,通过 CSV 数据文件读取真实数据库用户账号,结合同步定时器保证并发同步性,完整覆盖「登录 + 获取用户信息」核心业务流程,全面验证系统在高并发场景下的稳定性与性能表现。
3.2 测试配置
测试计划整体结构:

阶梯线程组配置:总线程数 30,每 3 秒递增 5 个线程,持续压测 60 秒,压测结束后每 1 秒递减 2 个线程,模拟真实用户逐步登录的场景。

BeanShell后置处理程序设置:添加 BeanShell 后置处理程序解决响应乱码。

HTTP Cookie管理器设置:HTTP Cookie 管理器自动保存登录态,保证接口调用的连续性。

CSV数据文件设置:通过user.csv读取数据库中 2 个真实用户账号,循环压测,模拟真实用户登录场景。


同步定时器配置:同步定时器设置模拟用户组数量为 2,超时时间 0,确保核心业务请求同步并发执行。

login接口:

info接口:

3.2 测试结果分析:
响应时间结果:响应时间随压测时间线性上升,峰值约 850ms,表明系统在高并发下随负载增加逐渐稳定响应,整体处于合理区间,满足五子棋实时交互需求。

吞吐量:压测初期 TPS 峰值达到 450+/sec,随后快速回落并稳定在低位,说明系统在压测启动瞬间处理能力最强,后期进入平稳运行状态,整体吞吐量达标。

活跃的线程数量:线程数阶梯上升至 30 并稳定维持,压测结束后下降,曲线完美匹配阶梯线程组配置,说明压测过程中线程调度正常,预期负载与实际执行一致。

聚合报告:

JMeter测试报告:


3.3 测试结论
本次针对五子棋系统开展的 30 用户高并发 JMeter 压测,全面验证了系统在多用户同时在线场景下的稳定性与性能表现。
测试结果显示,系统总体异常率仅 0.25%,登录核心接口实现 100% 无失败,仅少量查看信息接口出现高并发下的正常连接抖动,无系统崩溃、宕机等严重问题;平均响应时间稳定在 687ms,90% 分位响应时间仅 10ms,完全满足五子棋游戏的实时交互需求,同时系统吞吐量达 38.4/sec,具备稳定的并发处理能力。
综合各项指标,被测五子棋系统在高并发场景下错误率极低、响应时间优秀、运行稳定,完全符合设计要求与实际使用场景,本次性能测试通过。
十一、测试总结
本次对在线五子棋对战系统进行了功能、接口、界面、兼容性、易用性、安全、性能 全方位测试,覆盖登录、匹配、实时对战、聊天、数据统计等核心流程。
功能与接口运行稳定,登录、对战、胜负判定、分数更新等逻辑正常;测试中发现的聊天空消息发送、回合提示文字错误两处 Bug 均已修复并通过回归测试。接口安全校验严格,可有效拦截非法请求与注入攻击。
界面与兼容性表现良好,主流浏览器及多分辨率下显示正常;系统操作简单、反馈清晰,易用性较好。安全方面具备未登录拦截、非法落子校验、密码加密等防护机制,整体安全可靠。
性能上,登录接口响应快,WebSocket 实时落子延迟极低,30 用户并发压测下系统稳定、错误率低,可满足多人在线对战需求。
综合各项测试结果,本系统功能完整、运行稳定、安全可用、性能达标,满足项目设计与实际使用要求,整体测试通过。