测试用例
抽奖系统测试报告
项目背景
- 项目名称:lottery-system(抽奖系统),基于 Spring Boot 3.5.4、MyBatis、Redis、RabbitMQ 与邮件服务实现活动、用户、奖品管理及抽奖流程。
- 主要特性:支持密码/邮箱验证码登录、活动/奖品/用户 CRUD、抽奖与中奖名单分享,异步通知及缓存加速。
项目结构
- 后端代码:
src/main/java/com/fgs/democontroller:登录、活动、奖品、用户、抽奖等接口。service:业务实现与状态管理、MQ 接收、验证码/图片等服务。dao:MyBatis DO/Mapper,含加密类型处理器。common:统一返回体、异常、拦截器、配置、工具类(JWT、Redis、Mail、Captcha 等)。
- 前端静态页:
src/main/resources/static(login/admin/create-activity/prizes-list/draw 等页面及样式资源)。 - 配置:
src/main/resources/application.yml(MySQL、Redis、RabbitMQ、SMTP 等),logback-spring.xml。 - 自动化测试:
src/test/java/com/fgs/demo下若干单元/集成测试类(启动、自定义工具、DAO、服务等)。
测试环境
- 硬件/操作系统:Windows 10(本机),建议 8GB+ 内存。
- 软件版本:JDK 17;Maven 3.9+;MySQL 8.x(库名
lottery_system);Redis(默认 127.0.0.1:6380);RabbitMQ(默认 139.159.216.200:5672);SMTP(QQ 邮箱,SSL 465)。 - 运行配置:
spring.profiles.active=dev;数据源账户默认root/1302743585,需按实际环境修改;图片根路径D:/PIC。 - 启动步骤:
mvn clean package→java -jar target/lottery-system-0.0.1-SNAPSHOT.jar或 IDE 直接运行LotterySystemApplication。
功能测试
手动测试(按页面/功能)
测试用例
- 登录页
- 密码登录:正确账号密码应跳转管理员页;缺失密码/账号时提示必填;状态均未执行。
- 验证码登录:正确邮箱+验证码应登录并清理 Redis;邮箱格式校验与验证码错误提示;状态未执行。
- 活动页
- 列表与翻页:正常展示排序,翻页边界提示;未执行。
- 新建活动:昵称唯一校验、必填校验、人员/奖品数量校验;未执行。
- 奖品页
- 列表与翻页:正常展示与边界提示;未执行。
- 新建奖品:昵称唯一与必填校验;未执行。
- 用户页
- 用户管理:列表展示、创建用户(唯一/格式校验)、按 ID 搜索等;仅“按 ID 搜索”用例标记通过,其余未执行。
- 抽奖页
- 抽奖流程:开始抽奖、查看中奖名单、分享结果;未执行。
- 用例来源:
docs/test-cases.md,状态字段默认“未执行”,后续执行需更新实际结果与状态。
自动化测试
- 现有测试类(未在本报告内执行):
LotterySystemApplicationTests:应用上下文加载。- 工具/组件:
JacksonTest、EncryptTest、RedisTest、MailTest、logTest。 - 业务/服务:
drawPrizeTest(抽奖服务)、UserTest、VerificationCodeServiceImplTest、sqlTest等。
- 建议执行:
mvn test;记录通过率、失败原因与日志。
性能测试
- 当前未执行性能测试。建议场景:
- 抽奖高并发(启动/开奖写库与缓存一致性)。
- 活动/奖品列表分页接口 QPS 与响应时间。
- Redis/RabbitMQ 连接池与线程池饱和度(配置见
async.executor.thread)。 - 数据库写入压力(批量创建用户/活动/奖品)。
- 建议指标:P95/P99 延迟、错误率、CPU/内存、数据库 QPS、Redis 命中率、MQ 吞吐。
安全性测试
- 当前未执行安全性测试。建议检查:
- 鉴权与会话:JWT token 有效期、过期与伪造校验;登录错误次数限制;验证码暴力破解防护。
- 输入与存储:参数校验绕过、SQL 注入、XSS;敏感配置(DB/SMTP 密码)外置化与加密。
- 传输与接口:HTTPS/HTTP 限制,敏感接口权限(活动/奖品/用户 CRUD、抽奖操作)。
- 审计与日志:关键操作日志留存,异常不泄露敏感信息。
结论与后续计划
- 当前仅完成用例设计与部分自动化样例,尚未批量执行;功能、性能、安全结果为空,需要按环境执行后回填。
- 后续行动:完善测试数据与初始化脚本;在目标环境跑通
mvn test与手动用例;补充性能/安全测试报告;对未通过用例跟进缺陷修复并回归。