Gobang Arena · 五子棋实时对战平台项目测试报告

发布时间:2026/9/14 22:09:37
Gobang Arena · 五子棋实时对战平台项目测试报告 目录项目背景1. 项目简介2. 项目功能说明1注册功能2登录功能3游戏大厅页面4匹配房间页面5胜负结算返回游戏大厅页面3. 测试目的4. 测试范围项目相关信息测试步骤1冒烟测试确定系统能正常运转跑通主干功能2功能测试结合Xmind中的测试用例对每个模块进行验证3接口测试前后端分离使用Postman测试后端的接口是否都是正常的4性能测试使用JMeter验证系统在高并发下的稳定性5兼容性测试保证不同用户在不同环境下的体验使用多个浏览器同时查看6回归测试测试过程中出现的bug解决之后对于其他功能是否会产生影响项目背景1. 项目简介本项目是基于B/S架构的网页版五子棋对战平台项目项目完成后部署在云服务器上。前端采用 HTML5 Canvas绘制棋盘通过WebSocket协议与后端进行全双工的长连接后端是基于Spring BootMyBatis框架使用ConcurrentHashMap维护用户状态与房间的映射并采用MySQL数据库持久化用户积分与场数信息。2. 项目功能说明1注册功能用户使用未注册过的用户名和密码注册用户信息注册成功后跳转到对应的游戏大厅页面未注册的用户不允许登录2登录功能用户使用已经注册过的用户名和密码登录登录成功后跳转到游戏大厅页面未登录状态下不允许进入游戏大厅和匹配房间且强制登录3游戏大厅页面右上角显示用户名称中间显示用户总场数、获胜场数和天梯积分点击切换账号跳转到登录页面重新登录点击开始匹配原按钮处显示点击取消匹配成功匹配后跳转到游戏房间页面4匹配房间页面对战双方有一人未进入游戏房间时棋盘显示为空且显示游戏等待开始优先进入房间并建立WebSocket连接的用户先落子显示轮到你落子了另一用户显示轮到对方落子了落子方点击棋盘落子先手默认白子下方显示切换为轮到对方落子了到对手落子并显示落子信息同步5胜负结算返回游戏大厅页面任意一方五子连珠横向/纵向/斜向游戏结束判定输赢胜方天梯积分100胜利场数和总场数各加一败方天梯积分-100胜利场数不变总场数1任意一方出现异常掉线判定对手胜利并销毁房间自动回到游戏大厅3. 测试目的本次测试旨在测试五子棋平台的核心业务流程用户注册登录、房间匹配、实时落子、胜负结算是否正常运行并检测在高并发情况项目的稳定性以及排查WebSocket长连接可能出现断线、落子信息不同步等问题。4. 测试范围用户模块用户注册、登录、鉴权、个人信息查询对战模块匹配队列、游戏房间创建与销毁、WebSocket重连、落子信息推送、胜负判定数据更新模块对战结束之后总场数、获胜场数、天梯积分数据及时更新非功能测试接口并发压力测试、浏览器兼容性、网络异常断线处理等项目相关信息项目代码GitHub - Vitala-Dill/Codes-for-WebSocket-Based-GobangBattle · GitHub访问链接http://111.231.171.47:8080/login.html测试步骤1冒烟测试确定系统能正常运转跑通主干功能使用两个浏览器注册用户信息使用注册成功的用户名和密码登录平台进入到游戏大厅页面右上角显示用户名中间显示用户的总场数、胜利场数和天梯积分中间显示点击匹配两名积分相近的玩家点击匹配随机进入同一个房间先进入房间并建立WebSocket连接的玩家落子先手下白子另一个玩家落黑子任意一方五子连珠胜利另一方失败胜方天梯积分100败者天梯积分-100场数和胜利场数更新胜负判定后返回游戏大厅。2功能测试结合Xmind中的测试用例对每个模块进行验证这里对于用户登录模块可以使用Web自动化测试来完成编写自动化脚本1添加自动化框架依赖dependencies dependency groupIdio.github.bonigarcia/groupId artifactIdwebdrivermanager/artifactId version6.1.0/version /dependency !-- 安装selenium库 -- dependency groupIdorg.seleniumhq.selenium/groupId artifactIdselenium-java/artifactId version4.30.0/version /dependency dependency groupIdorg.slf4j/groupId artifactIdslf4j-simple/artifactId version2.0.16/version /dependency /dependencies2编写自动化脚本import io.github.bonigarcia.wdm.WebDriverManager; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public class AutoTest { //Chrome浏览器使用 WebDriver chromeDriver1 null; WebDriver chromeDriver2 null; //测试登录网址 void testLogin() throws InterruptedException { //打开浏览器 WebDriverManager.chromedriver().setup(); //增加浏览器配置创建驱动对象时强制指定允许访问所有的链接 ChromeOptions options new ChromeOptions(); options.addArguments(--remote-allow-origins*); //防止出现同样的cookie使用无痕模式 options.addArguments(--incognito); chromeDriver1 new ChromeDriver(options); //输入登录网址 chromeDriver1.get(http://111.231.171.47:8080/login.html); //选择用户名输入框输入用户名 chromeDriver1.findElement(By.cssSelector(#username)).sendKeys(ffy); //选择密码输入框输入密码 chromeDriver1.findElement(By.cssSelector(#password)).sendKeys(123); //找到提交按钮点击登录按钮 chromeDriver1.findElement(By.cssSelector(#submit)).click(); Thread.sleep(2000); //切换到弹窗并点击确定 chromeDriver1.switchTo().alert().accept(); Thread.sleep(2000); //调用另一个方法开启多用户登录 testMultiUsersLogin(); chromeDriver1.quit(); chromeDriver2.quit(); } void testMultiUsersLogin() throws InterruptedException { WebDriverManager.chromedriver().setup(); //增加浏览器配置创建驱动对象时强制指定允许访问所有的链接 ChromeOptions options new ChromeOptions(); options.addArguments(--remote-allow-origins*); //防止出现同样的cookie使用无痕模式 options.addArguments(--incognito); chromeDriver2 new ChromeDriver(options); //输入登陆网址 chromeDriver2.get(http://111.231.171.47:8080/login.html); //选择用户名输入框输入用户名 chromeDriver2.findElement(By.cssSelector(#username)).sendKeys(pizza); //选择密码输入框输入密码 chromeDriver2.findElement(By.cssSelector(#password)).sendKeys(123456); //找到提交按钮点击登录按钮 chromeDriver2.findElement(By.cssSelector(#submit)).click(); Thread.sleep(2000); //切换到弹窗并点击确定 chromeDriver2.switchTo().alert().accept(); Thread.sleep(2000); } public static void main(String[] args) throws InterruptedException { AutoTest autoTest new AutoTest(); autoTest.testLogin(); } }3接口测试前后端分离使用Postman测试后端的接口是否都是正常的4性能测试使用JMeter验证系统在高并发下的稳定性使用JMeter压力测试用户登录和WebSocket连接发送匹配请求、进入到对战房间对战1添加对应的插件2添加需要使用的组件HTTP请求、WebSocket的组件3模拟多个用户并发发送匹配请求需要多个用户信息需要注意的是先完成单个用户的流程测试然后逐步增加用户数量进行压力测试测试项目的压力边界是多少最多能多少个用户并发访问添加HTTP Cookie管理器用来管理每次登录得到的Cookie模拟的是多个用户使用SQL语句创建50个用户并新建users.csv文件保存用户信息用户名和密码在jmeter中添加CSV Data Set Config元件并选择新建的users.csv添加变量名username,password,userId配置登录接口POST http://ip:8080/user/loginBody中填写username${username}password${password}使用的是CSV文件中的变量名增加一个响应断言验证用户登陆成功用户成功登录后就进入了游戏大厅进行WebSocket连接添加WebSocket Open Connection路径就是ws://ip:8080/match添加同步定时器设置同时模拟50个用户超时时间设置为5000毫秒添加发送匹配请求的websocket也就是WebSocket request-response Sampler连接使用的是上面游戏大厅里的连接并发送startMatch请求数据匹配成功后Matcher会给每个用户发送matchSuccess请求所以需要添加读取推送消息的WebSocket Single Read Sampler元件然后添加ws连接现在是进入到了对战房间里建立对战连接进入房间后需要添加WebSocket request-response Sampler模拟落子发送的请求体是包含了落子消息和落子位置聚合报告生成压力测试报告响应时间百分比/响应时间分布5兼容性测试保证不同用户在不同环境下的体验使用多个浏览器同时查看在Microsoft Edge152.0.4191.66 (正式版本) (64 位)、Chrome版本 152.0.7977.84正式版本、联想浏览器版本 9.0.6.2081正式版本 64 位上测试显示6回归测试测试过程中出现的bug解决之后对于其他功能是否会产生影响通常在功能更新等之后对其它功能进行测试看更新后对其它功能是否产生影响因此每次更新都需要对旧功能进行测试测试人员就自己编写脚本进行自动化测试简化这部分重复工作这就是网页五子棋对战项目的测试流程冒烟测试、功能测试、接口测试、性能测试、兼容性测试和回归测试对于测试有很多种测试的分类根据需求使用即可。