基于SpringBoot的抽奖系统测试报告
一、编写目的
本报告为抽奖系统测试报告,本项目可用于团体抽奖活动,包括了用户注册,用户登录,修改奖项以及抽奖等功能。
二、项目背景
抽奖系统采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。
前端主要有三个页面构成:登录页、注册页、抽奖页,以上模拟实现了较复杂的抽奖系统。其结合后端实现了以下的主要功能:登录、增加抽奖活动、进行抽奖活动以及退出登录等功能。
由于本项目没有设计普通用户注册功能,所以所有的抽奖用户又管理人员登录之后再对普通用户进行添加。
该在线抽奖系统可以实现个人用户简单的获奖记录,时间、标题、内容以及发布者等都可以进行详细地查看。
三、相关模块
1.登录模块:登录时用Session获取用户表,在获取用户id来使后端将用户信息存储在Session中,在登录时通过获取用户对应的账号以及密码进行校验,如果都匹配则给予token令牌放行,登录通过,如果校验失败则需要重新输入登录信息,再次进行登录校验。
2.抽奖模块:用户通过请求发送数据到后端,后端获取抽奖人员id并通过RequestMapping注解来处理前端的请求并返回响应。
3奖项模块:通过后端实现了新增奖项,修改奖项,删除奖项等功能,在修改奖项采用了批量更新,使用的方法是Mybaits批量操作,提升了效率。
四、测试环境
硬件配置
内存:8.00 GB
软件配置
Windows11,Chrome浏览器(功能测试)
拦截统一:通过拦截器对http请求进行统一拦截并采用统一的响应数据格式。
五、测试功能
该在线抽奖系统主要实现了以下几个功能:登录,活动中心设置,抽奖页面设置。
登录功能:
管理员登录页面实现了注册功能,由于该活动由管理员来进行,普通账户注册功能也是在管理员后台进行信息填写实现注册。登录成功后就会跳转到活动中心页面。在右上角有退出登录按键,但是在未登录情况下强制访问页面会提示用户未登录,强制返回到登录页。
活动中心页面:
活动中心页面分为三个模块:活动管理、奖品管理、人员管理
活动管理:
可以查看所有活动,包括已经结束以及正在进行中的活动,可以新建抽奖活动。
奖品管理:
可以在奖项列表页面查看奖品数量,在新建活动奖品页面添加奖品。
人员管理:
可以在人员列表页面查看人员信息,在人员注册页面填写信息注册参与活动的普通用户
抽奖页面设置:
在抽奖页面点击“开始”按钮就会开始抽奖,此时就可以看到人员名称正在翻滚,随后产生一个中奖结果。在所有的奖项进行完毕之后,后续的活动状态则会转变为已经完成,页面也会变成中奖名单以及分享结果链接,分享结果链接则是直接展现中奖页面
六、测试过程
功能测试:
测试用例如下图
实际执行测试的部分操作步骤/截图
1.正常登录
2.用户注册测试
3.跳转到注册页面进行注册
4.登录成功进入活动中心页面
5.新建抽奖活动
圈选奖品
圈选参与人员
创建活动
创建成功
6.查看活动列表
7.查看奖品列表
点击下一页,查看其他的奖品
8.创建奖品测试
上传图片
创建奖品
查看奖品列表
9.抽奖人员注册测试(普通用户注册测试)
填写信息
查看人员列表页
10.抽奖活动模块测试
进入抽奖页面
完成抽奖,查看该奖品的中奖人员
点击下一步,测试下一个奖项的进行状态
完成所有奖品的抽奖行为之后,查看中奖名单
点击分享链接,然后新建浏览器页面粘贴进行访问,查看中奖名单
查看活动状态转换
自动化代码编写:
根据脑图进行测试用例的编写,可以按照每个页面一个测试类的方式来组织。
首先,需要单独创建一个公共属性类,以方便进行代码复用。
接下来,在各个测试类中进行测试用例的编写。为了便于运行以及修改,可以使用测试套件。此外,启动和现场截图是频繁进行复用的操作,因此可以单独创建一个类进行存储,并在需要的时候进行调用。
在编写测试用例时,需要注意添加隐式等待,以确保页面能够正确加载和显示。这样可以有效避免因页面未完全加载导致的测试失败情况。
总之,按照脑图的规划,可以将测试用例按照页面进行分组,结合测试套件和公共属性类,以及单独存储启动和现场截图的类,来进行测试用例的编写和组织。
1. 添加相关依赖pom.xml
<dependencies>
<!-- 添加selenium依赖-->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
<!-- 保存屏幕截图需要用到的包-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- 添加junit5依赖-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
2. 新建包并在包下创建测试类以及公共类
以下是所建立的是common公共包和Tests测试包:
1公共类
创建驱动、保存现场截图
注意:在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。
注意文件名的动态获取,注意时间格式的设置。
2登录页面测试
创建驱动,并打开页面
测试页面是否正常打开
测试正常登录:多参数测试
测试用户注册:多参数测试
注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败
3奖项页测试
测试奖项页是否可以正常打开
测试奖品是否可以正确添加
测试强制访问后台页面,顺便测试了“退出”按钮
测试抽奖页是否可以正常打开
测试抽奖页的开始按钮是否可以正常使用
测试抽奖页的抽奖行为是否正常
4抽奖页测试
测试抽奖结果是否正确
测试抽奖结果分享链接能否正确访问
测试活动状态转换是否正确
性能测试:
使用Jmeter进行简单性能测试:针对登录、查看活动列表、人员列表,奖品页面等功能进行简单的性能测试。
对项目功能进行性能测试
七、项目源码
@Test@Order(1)void LoginSuccess() throws InterruptedException {//打开登录界面EdgeOptions options = new EdgeOptions();options.addArguments("--remote-allow-origins=*");EdgeDriver driver = new EdgeDriver(options);driver.get("http://62.234.43.231:8539/login.html");//输入账号密码driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.findElement(By.cssSelector("#username")).sendKeys("13721899916");driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.findElement(By.cssSelector("#password")).sendKeys("dudududu");//提交按钮driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.findElement(By.cssSelector("#submit")).click();//跳转到列表//获取urldriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);String cur_url = driver.getCurrentUrl();driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);Assertions.assertEquals("http://127.0.0.1:9090/blogin.html",cur_url);//如果url是测试通过driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);String cur_admin = driver.findElement(By.cssSelector("#username")).getText();Assertions.assertEquals("admin",cur_admin);//展示admin}@Testvoid BlogList(){EdgeOptions options = new EdgeOptions();options.addArguments("--remote-allow-origins=*");EdgeDriver driver = new EdgeDriver(options);driver.get("http://127.0.0.1:9090/activities-list.html");