五子棋测试用例
一.项目背景
1.1 项目简介
传统棋类文化的推广
五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类文化的魅力,有助于五子棋文化在全球范围内的传承和发展。
网页技术的推动
随着HTML5、JavaScript等网页技术的不断发展,开发网页五子棋变得更加容易和可行。这些技术能够实现五子棋游戏的界面绘制、交互逻辑(如落子、判断胜负等)以及实时对战功能。例如,JavaScript可以方便地处理用户在网页上的操作事件,HTML5的canvas元素能够用于绘制五子棋棋盘和棋子。
网络基础设施的改善
高速宽带和无线网络的广泛覆盖,使得在网页上进行实时对战的五子棋游戏体验更加流畅。低延迟的网络环境确保了玩家之间的操作能够及时同步,不会出现明显的卡顿现象,这为网页五子棋的发展提供了良好的网络技术支撑。
1.2 应用技术
网页五子棋应用了多种技术:
项目使用 SpringBoot 进行搭建,采用 SSM 框架(Spring + SpringMVC + MyBatis)进行开发,使用的应用层协议 WebSocket(一种在单个TCP连接上进行全双工通信的协议,用于实现实时的网络对战功能,保证玩家之间的落子信息能够及时、准确地传输),在每个模块的编写过程中都分为了客户端开发(前端)与服务器端开发(后端),在进行前端页面编写时用到了 HTML、CSS、JS,在前后端交互部分使用了 jQuery、Ajax,同时本项目使用 MySQL 数据库(一种关系型数据库,可用于存储游戏中的结构化数据,如玩家账号、游戏积分、排行榜等信息,提供强大的事务处理和数据一致性支持)来存储用户的相关数据。
二、项目功能
2.1 用户管理功能
用户注册与登录:用户可以通过注册页面注册账号,填写用户名、密码等信息进行注册,注册成功后可在登录页面输入账号密码登录。
用户信息管理:系统能够记录用户的相关信息,如用户id、用户名、密码、天梯分数、排位总场次和胜场总场次等,并提供修改密码、查看个人信息等功能。
用户状态管理:通过session管理模块实现用户登录状态的维护,使用户在游戏过程中保持登录状态,直到用户主动退出或超时自动退出。
2.2 游戏对战功能
匹配对战:系统根据用户的天梯分数等信息进行匹配,为玩家找到合适的对手,进入游戏房间进行对战。
实时对战:在游戏房间内,玩家可以进行实时的五子棋对战,双方轮流落子,通过点击棋盘上的空位放置棋子。
胜负判断:系统能够实时检测当前落子位置在横、纵、斜四个方向是否有连续五个相同的棋子,以判断胜负。
三.测试报告
3.1 测试用例
3.2功能测试
3.2.1 登录功能测试
通过测试,我们发现登录页面上左上角的”五子棋对战“字样正常显示,页面的背景图片正常显示,页面中的登录框,以及框中的输入框、提示字样和登录正常显示。在界面测试上并未发现bug。
非正确的登录方式:
1.输入账号并不输入密码
这里提示登录失败
2.输入密码但是不输入账号
依然提示登录失败
3.账号或密码包含特殊字符是否会登录
异常登录
异常登录有两种情况,一种是用户名错误的情况,另一种是密码错误的情况,先看一下用户名错误的情况:
用户名错误时,会登录失败,页面会提示用户“登录失败!”。接下来再看看密码错误的情况:
密码错误时,依然会提示“登录失败!”,同过测试发现,登录页面对于异常登录的情况处理没有bug。
正常登录
接下来我们进行测试登录看是否可以正常跳转到匹配页面
弹窗显示登录成功,我们点击看是否会跳转到匹配页
点击后跳转匹配页面,页面显示正常,并且正常显示玩家个人信息已经分数信息.
接下来使用自动化脚本进行登录测试
3.2.2 匹配功能测试
进行匹配测试的时候还对兼容性做了小小的测试,在edge浏览器上也可以正常显示
通过测试发现,游戏房间页面左上角“五子棋对战”字样正常显示,玩家信息正常显示,由于并没有给玩家设置头像,这里的两个头像只是为了看起来更加丰富,因此头像不视为bug,棋盘正常显示,棋盘下方的提示信息也是正常显示,聊天框正常显示。在界面测试中并未发现bug。
接下来我们首先测试一下对战功能:
先手方落子显示正常,比赛结果正常
测试总结
通过测试游戏大厅页面的界面显示和匹配功能,得出以下结论:
游戏大厅页面的左上角“五子棋对战”字样正常显示,背景图片正常显示
玩家信息(用户名、分数、比赛场次、获胜场次)正常显示,
匹配功能正常,两个同级别玩家点击匹配按钮后,会匹配在一起。
通过对游戏大厅页面的界面测试和功能测试,并未在游戏大厅页面发现bug
3.3 性能测试
下面就来介绍五子棋项目性能测试的一个测试流程。这里我们使用jmeter进行测试
首先要创建一个梯度压测线程组(Stepping Thread Group),来慢慢增大我们对这两个接口的并发请求的数量
然后创建 HTTP Cookie 管理器,添加相关的用户信息
测试总结
通过测试游戏大厅页面的性能测试,得出以下结论:
单个用户进行注册、登录、游戏页面的时长和CPU占用率正常;
当少数用户用于访问页面时,加载时长任在可控范围内;
但是当大量用户同时进行匹配游戏时还是会出现卡顿,加载速度过慢的情况,该类情况后续进行优化
3.4 自动化测试
具体方法参考
自动化测试selenium(Java版)_selenium-java-CSDN博客
创建自动化测试脚本,首先创建一个工具类,封装好driver,并指定屏幕截图存放路径,使用隐式等待
package common;import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;public class ChromeUtils {public static WebDriver driver;public static WebDriver createDriver(){if (driver==null){WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();//允许Chrome浏览器接受来自任何源的远程调试连接请求options.addArguments("--remote-allow-origins=*");driver = new ChromeDriver(options);//隐式等待,等待两秒,期间会一直不断的请求元素driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));}return driver;}public ChromeUtils(String url) {driver = createDriver();driver.get(url);}public void getScreenShot(String str) throws IOException {// ./src/test/image/// /2024-07-17/// /test01-17453010.png// /test02-17453020.png// /2024-07-18/// /test01-17453030.png// /test02-17453034.pngSimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");String dirTime = sim1.format(System.currentTimeMillis());String fileTime = sim2.format(System.currentTimeMillis());//./src/test/image/2024-07-17/test01-17453020.pngString filename ="./src/test/image/"+ dirTime +"/" + str + "-" + fileTime+".png";File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(srcFile,new File(filename));}
}
登录功能的自动化测试
public void LoginError(){//账号错误driver.findElement(By.cssSelector("#username")).sendKeys("test");driver.findElement(By.cssSelector("#password")).sendKeys("123456789");driver.findElement(By.cssSelector("#submit")).click();//确认Alert alert = driver.switchTo().alert();alert.accept();//密码错误driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#username")).sendKeys("hanmeimei123");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();//确认alert.accept();driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();//包含特殊字符driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#username")).sendKeys("hanmeimei%$^*&");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();//确认alert.accept();driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();}public void LoginRight() throws InterruptedException {driver.findElement(By.cssSelector("#username")).sendKeys("hanmeimei1");driver.findElement(By.cssSelector("#password")).sendKeys("123456789");driver.findElement(By.cssSelector("#submit")).click();//确认Alert alert = driver.switchTo().alert();alert.accept();//driver.close();}public void March(){driver.findElement(By.cssSelector("#match-button"));}
}
上述脚本存在隐式等待时间问题,我们尽量做到写出更好的测试脚本,这个需要积累经验后进行优化
自动化检测登录和匹配等功能正常,无Bug;
四、测试总结
4.1 测试目标
确保五子棋游戏的基本功能正常运行,包括落子、判断胜负、悔棋等操作。
检查游戏在不同浏览器下的兼容性。
测试游戏的界面显示是否清晰、友好。
4.2 测试范围
功能测试
正常落子:测试每个可落子点是否能准确落子,并且不会出现错误提示或异常情况。
胜负判断:在不同的五子连珠情况(横、竖、斜)下,是否能正确判断胜负。
界面测试
棋盘显示:棋盘线条是否清晰,棋子显示是否正常,是否存在遮挡或显示错误的情况。
按钮功能:开始游戏、重新开始、悔棋等按钮的位置是否合理,点击响应是否及时。
游戏提示:如轮到哪方落子、胜负结果提示等是否准确显示
兼容性测试
在主流浏览器(如Chrome、Firefox、Safari、Edge)上测试游戏的运行情况,包括界面显示和功能操作。
4.3 测试结果
功能测试
正常落子:95%的可落子点都能正常落子,但发现少数边缘点在快速连续落子时会有短暂延迟。
胜负判断:在各种五子连珠情况下,胜负判断准确无误。
界面测试
棋盘显示:整体良好,但在小屏幕设备上棋盘和棋子的比例略显不协调。
按钮功能:所有按钮点击响应及时,但“重新开始”按钮在部分浏览器下的样式与设计稿有细微差异。
兼容性测试
在Chrome、Firefox和Edge浏览器上,游戏运行基本完美,只有一些小的样式差异.
4.4 缺陷及改进建议
缺陷:
少数边缘点落子延迟:可能是由于该区域的事件监听或逻辑处理存在性能问题。
小屏幕设备棋盘和棋子比例不协调:未针对小屏幕设备进行优化布局。
改进方案:
对边缘点落子的逻辑进行性能优化,减少延迟