通过 VITE_AUTO_FILL_TEST 环境变量控制,在 .env.test 中启用, 使测试环境构建后登录框也能自动填充测试账号,方便测试人员使用。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
测试执行结果报告
执行时间:2026-03-24
一、测试发现的问题及修复
共发现 4 个 Bug,全部已修复
| 编号 | 严重度 | 问题描述 | 根因 | 修复方式 |
|---|---|---|---|---|
| BUG-01 | 致命 | 创建活动时 visibility/targetCities/ageMin/ageMax 字段未写入数据库,创建后全是默认值 designated |
contests.service.ts 的 create 方法中遗漏了新增字段的赋值 |
在 create data 中添加 visibility, targetCities, ageMin, ageMax 字段赋值 |
| BUG-02 | 致命 | 创建 targeted 类型活动时 DTO 校验报错 "visibility must be one of the following values: public, designated, internal" |
Visibility 枚举中缺少 TARGETED = 'targeted' |
在 create-contest.dto.ts 的 Visibility 枚举中添加 TARGETED |
| BUG-03 | 高 | 公众端登录用户访问活动列表时,targeted 活动不根据用户画像过滤(返回 0 条) | @Public() 装饰器让 JwtAuthGuard 完全跳过 JWT 解析,导致 req.user 始终为空 |
重写 JwtAuthGuard:@Public() 接口有 Bearer token 时仍解析 JWT(但不强制要求) |
| BUG-04 | 高 | 报名 targeted 活动返回 404 "活动不存在或未公开" | registerActivity 方法中活动查询条件硬编码 visibility: 'public',未包含 targeted |
改为 visibility: { in: ['public', 'targeted'] } |
同步修复:update 接口
| 问题 | 修复 |
|---|---|
| 编辑活动时 visibility/targetCities/ageMin/ageMax 不会更新 | 在 update 方法中添加这 4 个字段的处理逻辑 |
二、数据库测试结果
| 编号范围 | 测试项数 | 通过 | 失败 | 说明 |
|---|---|---|---|---|
| DB-01 ~ DB-12 | 12 | 12 | 0 | 表结构、约束、默认值全部正确 |
| DB-13 ~ DB-18 | 6 | 6 | 0 | 租户、角色、权限数据完整 |
| DB-19 ~ DB-23 | 5 | 5 | 0 | 菜单分配正确 |
| 合计 | 23 | 23 | 0 |
三、后端 API 测试结果
| 编号范围 | 模块 | 测试项数 | 通过 | 修复后通过 |
|---|---|---|---|---|
| API-01 ~ API-10 | 公众认证 | 8(已测) | 8 | - |
| API-11 ~ API-20 | 子女管理 | 6(已测) | 6 | - |
| API-21 ~ API-30 | 活动浏览 | 5(已测) | 3 | 5(修复 BUG-03 后) |
| API-31 ~ API-35 | 定向推送 | 3(已测) | 0 | 3(修复 BUG-03 后) |
| API-36 ~ API-48 | 活动报名 | 7(已测) | 5 | 7(修复 BUG-04 后) |
| API-57 ~ API-60 | 我的数据 | 2(已测) | 2 | - |
| API-61 ~ API-64 | 公众用户管理 | 2(已测) | 2 | - |
| API-65 ~ API-69 | 管理端认证 | 4(已测) | 4 | - |
| 已测合计 | 37 | 30 | 37 |
待执行的 API 测试
以下测试项因需要特定数据状态(报名通过后才能测提交),留到全链路测试中覆盖:
- API-49~56: 作品提交(需要报名通过状态)
- API-04, API-06, API-07: 注册边界(密码太短、手机号、手机号重复)
- API-15~20: 子女详情/更新/删除完整测试
四、已修复文件清单
| 文件 | 修改内容 |
|---|---|
backend/src/contests/contests/dto/create-contest.dto.ts |
Visibility 枚举添加 TARGETED |
backend/src/contests/contests/contests.service.ts |
create 方法添加 visibility/targetCities/ageMin/ageMax;update 方法添加同样 4 个字段 |
backend/src/auth/guards/jwt-auth.guard.ts |
@Public() 接口有 token 时尝试解析 JWT(不强制) |
backend/src/public/public.service.ts |
registerActivity 活动查询条件支持 targeted |
五、待执行测试
前端测试(FE-01 ~ FE-92)
需要在浏览器中手动执行,建议按以下顺序:
- 公众端登录/注册(FE-01~09)
- 活动大厅(FE-10~15)
- 活动详情按钮状态(FE-16~35)
- 个人中心 + 子女管理(FE-36~48)
- 管理端登录(FE-57~61)
- 超管端(FE-62~80)
- 广东省图端(FE-81~86)
- 评委端(FE-87~92)
- 响应式(FE-53~56)
全链路测试(4.1 ~ 4.4)
需要按照测试方案中的步骤跨端执行完整业务流程。
六、测试环境
| 项目 | 值 |
|---|---|
| 后端 | http://localhost:3234 |
| 前端 | http://localhost:3000 |
| 数据库 | mysql://root@localhost:3306/lesingle-creation-test |
| 测试活动 | ID=1(公开), ID=2(仅内部), ID=3(定向广州6-12岁) |
| 测试用户 | testuser01(广州,有子女), beijing_user(北京), demo(默认) |