【测试报告】抽奖系统
一、测试目的
- 验证系统功能完整性,确保核心业务流程(用户管理、活动创建、抽奖逻辑、中奖通知)正常运行。
- 检查系统在高并发场景下的稳定性与性能表现。
- 验证数据一致性、安全性及异常处理机制。
- 确保接口响应符合预期,满足业务需求。
二、测试环境
环境项 | 配置 |
---|---|
操作系统 | CentOS 7.9 / Windows 10 |
编程语言 | Java 17 |
后端框架 | Spring Boot 3.0 |
数据库 | MySQL 8.0.33 |
缓存 | Redis 7.0.8 |
消息队列 | RabbitMQ 3.11.2 |
中间件 | Nginx 1.20.1 |
测试工具 | Postman、JMeter、Selenium |
三、测试方法
-
功能测试
- 覆盖用户注册 / 登录、活动创建、奖品管理、抽奖流程、中奖通知等核心功能。
- 使用 Postman 验证接口逻辑(如
/register
、/draw-prize
)。
-
接口测试
- 验证接口返回格式(如
CommonResult<T>
)、参数校验(如@Validated
)。 - 测试接口幂等性(如重复提交抽奖请求)。
- 验证接口返回格式(如
-
性能测试
- 使用 JMeter 模拟高并发场景(500 + 用户同时抽奖),监控响应时间、吞吐量。
-
安全测试
- 验证 JWT 认证机制(拦截器强制登录)、敏感数据加密(AES 加密手机号)。
- 检查 SQL 注入、XSS 攻击防护。
-
异常处理测试
- 模拟网络中断、参数缺失、重复操作等异常场景,验证系统容错能力。
四、关键测试用例
测试项 | 测试步骤 | 预期结果 | 实际结果 |
---|---|---|---|
用户注册 | 1. 填写合法信息提交 2. 重复提交相同邮箱 / 手机号 | 1. 返回成功响应 2. 提示 “邮箱 / 手机号已被使用” | 符合预期 |
管理员登录 | 1. 使用密码 / 验证码登录 2. 未携带 token 访问受限页面 | 1. 成功获取 token 2. 跳转至登录页 | 符合预期 |
活动创建 | 1. 关联奖品和人员 2. 提交空奖品或人员列表 | 1. 活动创建成功 2. 提示 “奖品 / 人员信息不能为空” | 符合预期 |
抽奖流程 | 1. 发起抽奖请求 2. 刷新页面后重试 | 1. 异步返回成功 2. 避免重复抽奖 | 符合预期 |
中奖通知 | 1. 中奖后检查短信 / 邮件 2. 修改通知模板参数 | 1. 收到通知 2. 内容包含正确信息 | 符合预期 |
高并发抽奖 | 使用 JMeter 模拟 500 用户并发请求 | 系统无崩溃,响应时间 < 500ms | 响应时间平均 420ms,无异常 |
异常回滚 | 1. 抽奖过程中终止 MQ 服务 2. 检查数据库状态 | 1. 消息转入死信队列 2. 数据回滚至初始状态 | 符合预期 |
五、缺陷记录
缺陷编号 | 缺陷描述 | 严重程度 | 修复状态 | 修复方案 |
---|---|---|---|---|
L-001 | 活动创建时未校验奖品库存与中奖人数匹配 | 中 | 已修复 | 添加参数校验逻辑,确保prizeAmount >= winnerList.size() |
L-002 | 高并发下 Redis 缓存未及时更新,导致抽奖结果展示延迟 | 高 | 已修复 | 优化缓存更新策略,增加失效时间(TTL) |
L-003 | 抽奖页面未限制管理员操作,普通用户可通过 URL 访问 | 中 | 已修复 | 在拦截器中增加身份校验(identity=ADMIN ) |
六、测试结论
- 功能完整性:核心功能(用户管理、活动创建、抽奖流程)运行稳定,接口响应符合设计预期。
- 性能表现:支持 500 + 用户并发抽奖,响应时间平均 420ms,系统无内存泄漏或崩溃。
- 安全性:JWT 认证、敏感数据加密、异常回滚机制有效保障系统安全。
- 改进建议:
- 增加自动化测试覆盖率(单元测试、集成测试)。
- 优化数据库索引(如
activity_prize
表的activity_id
字段)。 - 完善监控报警机制(如 MQ 消息积压监控)。
测试人员:王千羽
测试日期:2025-02-17