基于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>

  1. 新建包并在包下创建测试类以及公共类

以下是所建立的是common公共包和Tests测试包:

1公共类

创建驱动、保存现场截图

注意:在保存现场截图的时候命名是按时间来进行文件夹的划分,然后图片的名称要体现出测试类的类名,方便进行问题的追溯。

注意文件名的动态获取,注意时间格式的设置。

2登录页面测试

创建驱动,并打开页面

测试页面是否正常打开

测试正常登录:多参数测试

测试用户注册:多参数测试

注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败

3奖项页测试

测试奖项页是否可以正常打开

测试奖品是否可以正确添加

测试强制访问后台页面,顺便测试了"退出"按钮

测试抽奖页是否可以正常打开

测试抽奖页的开始按钮是否可以正常使用

测试抽奖页的抽奖行为是否正常

4抽奖页测试

测试抽奖结果是否正确

测试抽奖结果分享链接能否正确访问

测试活动状态转换是否正确

性能测试:

使用Jmeter进行简单性能测试:针对登录、查看活动列表、人员列表,奖品页面等功能进行简单的性能测试。

对项目功能进行性能测试

七、项目源码

java 复制代码
   @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();
        //跳转到列表
        //获取url
        driver.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
 
    }
    @Test
    void 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");
相关推荐
源码云商1 小时前
基于Spring Boot + Vue的母婴商城系统( 前后端分离)
java·spring boot·后端
冼紫菜4 小时前
【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案
java·开发语言·mybatis
练习本5 小时前
Android系统架构模式分析
android·java·架构·系统架构
心灵宝贝7 小时前
IDEA 安装 SpotBugs 插件超简单教程
java·macos·intellij-idea
幼稚诠释青春7 小时前
Java学习笔记(对象)
java·开发语言
你怎么知道我是队长7 小时前
Go语言标识符
后端·golang
小羊学伽瓦8 小时前
【Java基础】——JVM
java·jvm
老任与码8 小时前
Spring AI(2)—— 发送消息的API
java·人工智能·spring ai
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧8 小时前
MyBatis快速入门——实操
java·spring boot·spring·intellij-idea·mybatis·intellij idea