测试报告文档:幸运之轮系统
一、测试背景
本项目为基于 Spring Boot 开发的企业级抽奖系统,支持用户管理、奖品配置、抽奖活动管理与中奖结果通知等功能模块。系统使用 MySQL 存储核心数据,Redis 进行缓存优化,RabbitMQ 实现异步解耦。本文档从功能测试、接口测试、性能测试、安全性测试和自动化测试五个维度出发,对项目进行全面测试。
二、测试环境
操作系统:Windows 10 / CentOS 7 测试浏览器:Chrome 123、edge JDK版本:JDK 17 数据库:MySQL 6.0 缓存:Redis 4.0 消息队列:RabbitMQ 3.11 项目框架:Spring Boot 3.x 测试工具:Postman、JMeter、Selenium、XMind、Junit
三、测试范围
用户注册与登录模块 奖品管理模块 用户管理模块 抽奖活动配置与执行模块 中奖结果与通知模块
四、测试用例设计(部分核心功能)
1. 登录测试
用例编号 测试项 输入 预期结果 TC-001 正确登录 正确手机号+正确密码 返回登录成功,JWT Token 生效 TC-002 密码错误 正确手机号+错误密码 返回登录失败,提示“密码错误” TC-003 手机号为空 空+任意密码 返回“手机号不能为空” TC-004 密码为空 正确手机号+空 返回“密码不能为空” TC-005 未注册用户登录 随机手机号+任意密码 返回“用户不存在”
2. 新增奖品测试
用例编号 测试项 输入参数 预期结果 TC-101 正常添加奖品 奖品名:耳机,数量:5,等级:3 返回“添加成功”,数据库新增记录 TC-102 数量为负值 数量:-1 返回“奖品数量不能为负” TC-103 奖品名为空 空名+任意数量 返回“奖品名称不能为空” TC-104 奖品等级非法 奖品等级:10 返回“奖品等级需为1~5之间”
3. 新增用户测试
用例编号 测试项 输入参数 预期结果 TC-201 正常新增用户 手机号:13900000001,昵称:张三 返回“新增成功”,数据写入成功 TC-202 手机号格式错误 手机号:123456 返回“手机号格式非法” TC-203 昵称为空 手机号正确,昵称为空 返回“昵称不能为空”
4. 新增抽奖活动测试
用例编号 测试项 输入参数 预期结果 TC-301 正常添加活动 活动名:年会抽奖,时间正常 返回“活动创建成功”,状态为未开始 TC-302 活动名为空 空 返回“活动名称不能为空” TC-303 活动时间非法 开始时间 > 结束时间 返回“活动时间设置有误”
5. 抽奖执行测试
用例编号 测试项 输入参数 预期结果 TC-401 正常抽奖 登录用户、活动进行中 返回中奖信息/未中奖提示 TC-402 非活动时间抽奖 活动未开始或已结束 返回“活动未开始/已结束” TC-403 已中奖重复抽奖 用户已中奖再次抽奖 返回“您已中奖,无法再次抽奖”
五、接口测试
使用 Postman 对以下接口进行验证:
/user/register
注册接口/user/login
登录接口/prize/add
添加奖品/activity/create
新增活动/lottery/draw
发起抽奖
接口测试内容包括:
正确响应结构(code/msg/data) 鉴权 token 是否校验成功 请求参数边界与异常输入处理
六、性能测试
工具:JMeter
抽奖接口 /lottery/draw
并发用户数:100, 500, 1000 响应时间控制在 300ms 以内 TPS 保持在 200+,99% 响应时间 < 500ms
七、安全性测试
未登录访问 /admin/**
路由 → 返回未授权 非管理员用户调用后台新增接口 → 拦截 明文提交手机号/密码 → 校验数据库是否加密存储
八、自动化测试脚本(Selenium + Java 示例)
WebDriver driver = new ChromeDriver ( ) ;
driver. get ( "http://localhost:8080/login" ) ; WebElement phoneInput = driver. findElement ( By . id ( "phone" ) ) ;
WebElement passwordInput = driver. findElement ( By . id ( "password" ) ) ;
WebElement loginButton = driver. findElement ( By . id ( "login-button" ) ) ; phoneInput. sendKeys ( "13900000001" ) ;
passwordInput. sendKeys ( "test123456" ) ;
loginButton. click ( ) ; Thread . sleep ( 2000 ) ;
WebElement userNameDisplay = driver. findElement ( By . id ( "nickname" ) ) ;
Assert . assertEquals ( "张三" , userNameDisplay. getText ( ) ) ;
driver. quit ( ) ;
九、缺陷记录(示例)
编号 问题描述 严重程度 状态 001 抽奖页面刷新后状态丢失 高 已修复 002 奖品数量为负仍可提交 中 已修复 003 非法手机号可注册 高 已修复
十、测试结论
本次测试覆盖主要功能模块,接口响应结构规范,系统在中高并发下保持稳定,具备良好的安全机制与错误处理能力。建议上线前补充异常恢复测试和缓存穿透场景验证。