基于SpringBoot的抽奖系统测试报告

发布于:2025-05-12 ⋅ 阅读:(19) ⋅ 点赞:(0)

 一、编写目的

本报告为抽奖系统测试报告,本项目可用于团体抽奖活动,包括了用户注册,用户登录,修改奖项以及抽奖等功能。 

二、项目背景

抽奖系统采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。

前端主要有三个页面构成:登录页、注册页、抽奖页,以上模拟实现了较复杂的抽奖系统。其结合后端实现了以下的主要功能:登录、增加抽奖活动、进行抽奖活动以及退出登录等功能。
由于本项目没有设计普通用户注册功能,所以所有的抽奖用户又管理人员登录之后再对普通用户进行添加。
该在线抽奖系统可以实现个人用户简单的获奖记录,时间、标题、内容以及发布者等都可以进行详细地查看。 

三、相关模块

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();
        //跳转到列表
        //获取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");


网站公告

今日签到

点亮在社区的每一天
去签到