一、测试目的
本次测试旨在全面评估网页版对战五子棋系统的功能完整性、性能稳定性、用户体验以及安全性,确保该系统能够满足用户需求,提供流畅、公平、无bug的在线对战体验。
二、测试环境
-
硬件环境:
- 测试机型:联想ThinkPad T490,Intel Core i5处理器,8GB RAM,256GB SSD
- 网络环境:有线网络,100Mbps带宽
-
软件环境:
- 浏览器:Chrome(最新版本)、Firefox(最新版本)、Edge(最新版本)
- 操作系统:Windows 10、MacOS Catalina
三、测试内容与方法
该项目主要主要实现了登录,注册,匹配和对战功能
用户模块主要负责⽤⼾的注册, 登录, 分数记录功能,使⽤ MySQL 数据库存储数据,客⼾端提供⼀个登录⻚⾯+注册⻚⾯,服务器端基于 Spring + MyBatis 来实现数据库的增删改查.
匹配模块
⽤⼾登录成功, 则进⼊游戏⼤厅⻚⾯.
游戏⼤厅中, 能够显⽰⽤⼾的名字, 天梯分数, ⽐赛场数和获胜场数.
同时显⽰⼀个 “匹配按钮”.
点击匹配按钮则⽤⼾进⼊匹配队列, 并且界⾯上显⽰为 “取消匹配” .
再次点击则把⽤⼾从匹配队列中删除.
如果匹配成功, 则跳转进⼊到游戏房间⻚⾯.
⻚⾯加载时和服务器建⽴ websocket 连接. 双⽅通过 websocket 来传输 “开始匹配”, “取消匹配”, “匹配
成功” 这样的信息.
对战模块
玩家匹配成功, 则进⼊游戏房间⻚⾯.
每两个玩家在同⼀个游戏房间中.
在游戏房间⻚⾯中, 能够显⽰五⼦棋棋盘. 玩家点击棋盘上的位置实现落⼦功能.
并且五⼦连珠则触发胜负判定, 显⽰ “你赢了” “你输了”.
⻚⾯加载时和服务器建⽴ websocket 连接. 双⽅通过 websocket 来传输 “准备就绪”, “落⼦位置”, “胜
负” 这样的信息.
• 准备就绪: 两个玩家均连上游戏房间的 websocket 时, 则认为双⽅准备就绪.
• 落⼦位置: 有⼀⽅玩家落⼦时, 会通过 websocket 给服务器发送落⼦的⽤⼾信息和落⼦位置, 同时服
务器再将这样的信息返回给房间内的双⽅客⼾端. 然后客⼾端根据服务器的响应来绘制棋⼦位置.
• 胜负: 服务器判定这⼀局游戏的胜负关系. 如果某⼀⽅玩家落⼦, 产⽣了五⼦连珠, 则判定胜负并返回
胜负信息. 或者如果某⼀⽅玩家掉线(⽐如关闭⻚⾯), 也会判定对⽅获胜
四、测试结果
-
功能测试:所有功能均按预期工作,未发现严重bug。注册登录流程顺畅,匹配系统快速且公平,棋盘操作准确无误,胜负判定准确无误,聊天功能正常。
-
性能测试:页面加载迅速,游戏操作流畅,无明显卡顿现象。在高并发情况下,系统响应速度略有下降,但仍保持在可接受范围内,资源占用率合理。
-
用户体验测试:界面设计简洁美观,操作便捷,用户反馈积极。快捷键和拖拽操作得到用户好评,错误提示和操作反馈清晰明了。
import io.github.bonigarcia.wdm.WebDriverManager; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import java.time.Duration; public class InitAndEndBrowser { static WebDriver webDriver; @BeforeAll static void openGobangSystem() { WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("--remote-allow-origins=*"); webDriver = new ChromeDriver(options); webDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3)); } @AfterAll static void closeGobangSystem() { webDriver.quit(); } }
-
安全测试:用户数据在传输和存储过程中均经过加密处理,未发现数据泄露风险。系统具备基本的防作弊机制,能够有效防止常见作弊行为。漏洞扫描结果显示系统无已知安全漏洞。
public class GobangTest extends InitAndEndBrowser { //登录成功测试 @Order(2) @ParameterizedTest @CsvSource({"'zhangsan', '123'"}) void loginSuccessful(String username, String password) { webDriver.get("http://47.121.113.16:9090/login.html"); webDriver.findElement(By.cssSelector("#username")).sendKeys(username); webDriver.findElement(By.cssSelector("#password")).sendKeys(password); webDriver.findElement(By.cssSelector("#submit")).click(); //登录后,应跳转到游戏大厅页面 //检验是否有开始匹配这个按钮 String text = webDriver.findElement(By.cssSelector("#match-button")).getText(); if ("开始匹配".equals(text)) { System.out.println("测试通过"); } else { System.out.println("测试不通过"); } } //登录失败测试 @Order(1) @ParameterizedTest @CsvFileSource(resources = "loginfalied.csv") void loginFailed(String username, String password) throws InterruptedException { webDriver.get("http://47.121.113.16:9090/login.html"); webDriver.findElement(By.cssSelector("#username")).sendKeys(username); webDriver.findElement(By.cssSelector("#password")).sendKeys(password); webDriver.findElement(By.cssSelector("#submit")).click(); sleep(2000); //登录失败,会出现一个alert弹窗 Alert alert = webDriver.switchTo().alert(); if (alert != null) { System.out.println("测试通过,弹框内容: " + alert.getText()); } else { System.out.println("测试不通过"); } assertNotNull(alert); alert.dismiss(); //关闭弹窗 } //匹配按钮的显示功能测试(放在登录成功测试之后执行) @Order(3) @Test void matchButtonTest() throws InterruptedException { // webDriver.get("http://47.121.113.16:9090/login.html"); // webDriver.findElement(By.cssSelector("#username")).sendKeys("zhangsasn"); // webDriver.findElement(By.cssSelector("#password")).sendKeys("123"); // webDriver.findElement(By.cssSelector("#submit")).click(); sleep(2000); //此时按钮显示的是开始匹配,点击后看是否变成了匹配中 webDriver.findElement(By.cssSelector("#match-button")).click(); sleep(2000); String text = webDriver.findElement(By.cssSelector("#match-button")).getText(); if (text.equals("匹配中...(点击停止)")) { System.out.println("测试通过"); } else { System.out.println("测试不通过"); } } }
五、结论与建议
本次测试结果表明,网页对战五子棋系统整体表现良好,功能完善、性能稳定、用户体验佳、安全性高。建议继续优化高并发场景下的性能表现,并加强对新型作弊行为的监控与防范。同时,可以考虑增加更多游戏模式和个性化设置,以进一步提升用户粘性和满意度。