【项目实战】在线五子棋对战项目测试报告

文章目录

本项目为 WebSocket 实时对战系统,业务流程依赖双人在线匹配、实时对战与消息推送,交互具有强实时性与异步性,不适合开展 WebUI 自动化测试。本次测试以手动功能测试、接口测试、性能测试为主。

一、项目背景

项目概述:基于 C++ 开发的在线五子棋对战系统,采用 WebSocket 实现实时通信,MySQL 存储用户数据,实现登录、匹配、实时对战、聊天等核心功能

项目技术栈:C++11、WebSocket++、MySQL、Linux (Ubuntu)、HTML/CSS/JS

项目当前说明:前端未实现注册入口,通过数据库手动创建用户,不影响核心功能使用

二、项目功能

2.1 核心功能清单

  1. 用户登录验证
  2. 在线玩家匹配(单人 / 双人匹配、取消匹配)
  3. 双人实时对战(落子、胜负判定、中途退出处理)
  4. 房间内实时聊天
  5. 用户数据统计(分数、场次、胜场更新)

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 函数里,没有做非空校验,直接把输入框的值发出去了,哪怕是空字符串。

核心修改:

  1. trim() 去除输入内容的首尾空格,避免只发空格的情况
  2. if(!inputMsg) 判断,空内容直接拦截,弹出提示,不发送请求

该Bug 属于轻微缺陷,不影响核心对战功能,只影响聊天体验。

修复后效果:达到预期

5.数据统计模块

这是游戏开始前两方当前分数。


一轮对局结束后

胜利后分数更新:

失败后分数更新:

Postman接口测试:

  • 覆盖接口/login(登录接口)、/info(用户信息接口)

  • 测试内容:

    1. 正常场景:验证正常登录、登录后获取用户信息的参数合法性、返回数据正确性与业务逻辑一致性
    2. 异常场景:验证 SQL 注入、错误登录、未登录越权访问等非法请求的拦截逻辑
  • 测试结果:

    正常场景下两个接口均返回符合预期的结果,业务逻辑正常;错误登录、未登录访问、SQL 注入等非法请求均被系统正常拦截,无越权风险。整体用例执行通过率 100%,接口功能稳定、安全校验有效。

/login正常登录:

/info正常访问:

/login注入拦截:

/info未登录拦截:

六、界面测试

  1. 页面布局合理,按钮位置清晰,操作区域分布规范。

  2. 棋盘、棋子显示正常,无遮挡、无错位、无样式错乱。

  3. 聊天框、用户信息、战绩数据展示正常。

  4. 文字提示存在错误:黑白双方回合切换时,页面下方 "轮到己方走棋" 与 "轮到对方走棋" 提示与实际回合不一致,黑棋走棋时提示异常。

    执黑棋方:

    执白棋方:

    预期结果:

    当轮到黑棋走棋时,黑棋页面下方提示框应显示 "轮到己方走棋"

    当轮到白棋走棋时,白棋页面下方提示框应显示 "轮到己方走棋"

    双方提示文字需与当前走棋回合保持一致,提示信息准确无误。

    实际表现:

    轮到黑棋走棋时,黑棋页面下方提示框仍然显示 "轮到对方走棋"

    而白棋页面下方提示框却错误显示 "轮到己方走棋"

    提示文字与当前实际走棋方不一致,回合提示信息错误。

    修复:还是在game_room.html文件找到这部分代码

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

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

    修复后效果:达到预期

    执白棋方:

    执黑棋方:

    执白棋方:

  5. 整体界面美观度良好,操作区域明确,符合对战类页面交互习惯。

七、兼容性测试

  1. Chrome 浏览器:全部功能正常

  2. Edge 浏览器:全部功能正常

  3. 不同分辨率显示正常,无变形、无错位

八、易用性测试

  1. 操作流程简单,新手可快速上手:系统操作路径清晰,登录、匹配、对战、聊天等核心功能流程简洁,无复杂操作,新手可快速理解并使用。

  2. 提示信息清晰,操作反馈明显:大部分操作提示明确,但存在两处影响体验的问题:① 回合提示文字显示错误,黑白棋回合提示颠倒,易误导用户;② 空消息发送无拦截与提示,生成空白占位行,影响聊天体验。但后面已经进行修复,并进行回归测试,达到预期通过。

  3. 下棋、聊天、退出操作便捷:落子、发送消息、退出房间等操作入口明确,交互响应及时,操作便捷性良好。

  4. 整体流程顺畅,体验良好:核心对战流程流畅,无卡顿、无阻塞,仅存在两处轻微体验问题,整体用户体验符合预期。

九、安全性测试

  1. 未登录无法进入游戏

    没登录的情况下,直接输游戏地址或者访问大厅页面,会被强制跳回登录页,不会让你直接进入游戏。防止了越权访问。

  2. 不能越权操作、不能非法落子

    不是自己的回合、已经有棋子的位置,都点不出子。系统能正常拦截这些情况,不会出现 "你回合别人下""空位置重复落子" 的问题。

  3. 密码错误提示正常,无明显漏洞

    密码输错会有明确提示,不会泄露登录信息,也没有明文显示密码等敏感内容。后端密码也是 MD5 加密存储,比较安全。

  4. 输入合法性校验(基本达标)

    登录场景做了基础校验,试了 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 用户并发压测下系统稳定、错误率低,可满足多人在线对战需求。

综合各项测试结果,本系统功能完整、运行稳定、安全可用、性能达标,满足项目设计与实际使用要求,整体测试通过。

相关推荐
momo7 小时前
POSTMAN
测试工具·postman
实名上网宋凯宣7 小时前
postman怎么用?
测试工具·postman
llilian_1611 小时前
国产铷原子钟 铷频标挑选指南 铷原子频标 国产铷钟
大数据·网络·功能测试·单片机·嵌入式硬件·测试工具
软件测试媛1 天前
性能测试、负载测试、压力测试的全面解析
压力测试
TechExplorer3651 天前
Postman 9.12 安装、汉化、禁用更新
测试工具·lua·postman
Saniffer_SH1 天前
【市场洞察】一叶知秋 - 从2026年开年Quarch公司PCIe 6.0测试工具销售状况说起
服务器·人工智能·嵌入式硬件·测试工具·fpga开发·自动化·压力测试
llilian_161 天前
铷原子频率标准 以时频基准破局,为计量校准赋能 时基铷钟
网络·功能测试·单片机·嵌入式硬件·测试工具·算法
llilian_161 天前
频率计生产厂家 高精度通用频率计核心参数设置指南 双频率计 无线频率计
功能测试·单片机·嵌入式硬件·硬件工程
泽众云测试1 天前
性能测试平台POneV2.0.6新版本-支持Jmeter脚本自动转化快速启用压测
jmeter·性能测试平台·pone性能测试平台