487 lines
22 KiB
Markdown
487 lines
22 KiB
Markdown
# Ether 物业管理系统 - 测试计划
|
||
|
||
**文档版本**: v1.0
|
||
**创建日期**: 2026-05-18
|
||
**适用范围**: Ether PMS 全系统测试
|
||
|
||
---
|
||
|
||
## 一、测试策略
|
||
|
||
### 1.1 测试目标
|
||
|
||
- 确保所有已实现功能的API接口正确性,API测试通过率 >= 95%
|
||
- 确保核心业务流程端到端可用,E2E测试通过率 >= 90%
|
||
- 建立TDD开发规范,新功能必须先写测试再实现
|
||
- 为6大业务域建立完整的测试用例体系
|
||
- 覆盖5条跨域业务流程的端到端验证
|
||
|
||
### 1.2 测试范围
|
||
|
||
**6大业务域**:
|
||
|
||
| 业务域 | 模块 | 核心功能 | 已实现需求数 |
|
||
|--------|------|---------|-------------|
|
||
| 身份与权限域 | module-auth | 用户/角色/权限/部门/认证/审计 | 37 |
|
||
| 空间与项目域 | module-mdm | 项目/空间节点/巡检标准 | 23 |
|
||
| 设备与资产域 | module-asset | 设备台账/扩展表/健康评分/故障/归属 | 28 |
|
||
| 运营与服务域 | module-wo + module-mdm | 工单/维保/巡检/备件/能耗 | 36 |
|
||
| 财务与收费域 | module-finance(待建) | 收费项目/账单/支付/退款 | 0 |
|
||
| 前端交互域 | ether-admin | 登录/权限/项目切换/各模块页面 | 14 |
|
||
|
||
**5条跨域业务流程**:
|
||
|
||
1. 业主报修全流程(认证 -> 空间定位 -> 工单创建 -> 派单 -> 执行 -> 验收)
|
||
2. 设备全生命周期管理(采购 -> 安装 -> 运行监控 -> 维保 -> 报废)
|
||
3. 预防性维保调度流程(计划 -> 周期调度 -> 任务生成 -> 执行 -> 验收 -> 设备联动)
|
||
4. 巡检异常处理流程(模板 -> 签到 -> 异常上报 -> 工单 -> 处理 -> 复检)
|
||
5. 能耗计费流程(计量点 -> 抄表 -> 费用计算 -> 账单 -> 缴费)
|
||
|
||
### 1.3 测试层级
|
||
|
||
| 测试层级 | 工具 | 目标 | 执行频率 |
|
||
|---------|------|------|---------|
|
||
| 单元测试 | JUnit 5 + Mockito | Service层业务逻辑、算法验证 | 每次提交 |
|
||
| API接口测试 | Shell curl脚本 | REST API正确性、状态码、响应格式 | 每日构建 |
|
||
| E2E端到端测试 | Playwright + TypeScript | 用户操作流程、跨域业务闭环 | 每日构建 |
|
||
|
||
### 1.4 TDD开发规范
|
||
|
||
**强制要求**:所有新功能开发必须遵循TDD流程。
|
||
|
||
```
|
||
1. 红(Red) - 先编写失败的测试用例
|
||
2. 绿(Green) - 编写最小代码使测试通过
|
||
3. 重构(Refactor) - 优化代码结构,保持测试通过
|
||
```
|
||
|
||
**TDD准入规则**:
|
||
- 新增功能必须先编写测试用例,无测试用例的PR不予合并
|
||
- Bug修复必须先编写复现测试,验证修复后测试通过
|
||
- 重构必须确保既有测试全部通过
|
||
|
||
---
|
||
|
||
## 二、测试环境
|
||
|
||
### 2.1 后端测试环境
|
||
|
||
| 项目 | 配置 |
|
||
|------|------|
|
||
| 框架 | Spring Boot 3.x Test |
|
||
| 单元测试 | JUnit 5 + Mockito |
|
||
| 集成测试 | Spring Boot Test + @WebMvcTest / @SpringBootTest |
|
||
| 数据库 | H2内存数据库(单元测试) / PostgreSQL Testcontainers(集成测试) |
|
||
| 后端地址 | http://localhost:8080 |
|
||
| 认证方式 | JWT Token (Authorization: Bearer {token}) |
|
||
|
||
### 2.2 前端测试环境
|
||
|
||
| 项目 | 配置 |
|
||
|------|------|
|
||
| 单元测试 | Vitest |
|
||
| E2E测试 | Playwright |
|
||
| 管理后台地址 | http://localhost:5175 |
|
||
| 浏览器 | Chromium (CI) / Chrome (本地) |
|
||
|
||
### 2.3 测试数据管理
|
||
|
||
**测试数据准备**:
|
||
- 每个测试脚本开头通过API创建所需测试数据
|
||
- 使用固定的测试账号:admin / admin123
|
||
- 测试项目使用固定编码前缀:TEST-
|
||
- 测试数据命名规范:[TEST]-[模块]-[功能]-[序号]
|
||
|
||
**测试数据清理**:
|
||
- 每个测试脚本结尾删除创建的测试数据
|
||
- 使用唯一标识避免数据冲突
|
||
- API测试使用独立项目隔离数据
|
||
|
||
---
|
||
|
||
## 三、API接口测试
|
||
|
||
### 3.1 测试框架选型
|
||
|
||
| 方案 | 选定 | 说明 |
|
||
|------|------|------|
|
||
| Shell curl脚本 | 是 | 轻量级,无额外依赖,适合CI环境 |
|
||
| Postman Collection | 否 | 需要GUI,不适合自动化CI |
|
||
| Newman | 备选 | 可从Postman Collection导出运行 |
|
||
|
||
### 3.2 测试脚本组织
|
||
|
||
```
|
||
04-TESTING/api/
|
||
auth/ - 认证授权域API测试
|
||
test-auth.sh
|
||
space/ - 空间与项目域API测试
|
||
test-space.sh
|
||
asset/ - 设备与资产域API测试
|
||
test-asset.sh
|
||
ops/ - 运营与服务域API测试
|
||
test-ops.sh
|
||
finance/ - 财务与收费域API测试
|
||
test-finance.sh
|
||
run-all.sh - 执行全部API测试
|
||
run-module.sh - 执行指定模块API测试
|
||
```
|
||
|
||
### 3.3 测试脚本规范
|
||
|
||
每个API测试脚本必须包含:
|
||
|
||
1. **前置条件** - 登录获取Token、创建依赖数据
|
||
2. **请求** - curl发送HTTP请求,携带正确的Header
|
||
3. **断言** - 检查HTTP状态码、响应JSON字段
|
||
4. **清理** - 删除测试创建的数据
|
||
|
||
**脚本结构**:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
BASE_URL="http://localhost:8080/api"
|
||
TOKEN=""
|
||
|
||
login() { ... }
|
||
|
||
test_XXX() {
|
||
local response=$(curl -s -w "\n%{http_code}" ...)
|
||
local body=$(echo "$response" | head -n -1)
|
||
local status=$(echo "$response" | tail -n 1)
|
||
assert_eq "$status" "200" "test_XXX"
|
||
}
|
||
|
||
cleanup() { ... }
|
||
|
||
login
|
||
test_XXX
|
||
cleanup
|
||
print_summary
|
||
```
|
||
|
||
### 3.4 测试脚本目录结构
|
||
|
||
```
|
||
04-TESTING/api/
|
||
auth/test-auth.sh - 认证授权域API测试
|
||
space/test-space.sh - 空间与项目域API测试
|
||
asset/test-asset.sh - 设备与资产域API测试
|
||
ops/test-ops.sh - 运营与服务域API测试
|
||
finance/test-finance.sh - 财务与收费域API测试
|
||
run-all.sh - 执行全部API测试
|
||
run-module.sh - 执行指定模块API测试
|
||
```
|
||
|
||
---
|
||
|
||
## 四、E2E端到端测试
|
||
|
||
### 4.1 测试框架选型
|
||
|
||
| 项目 | 配置 |
|
||
|------|------|
|
||
| 框架 | Playwright |
|
||
| 语言 | TypeScript |
|
||
| 运行器 | Playwright Test |
|
||
| 浏览器 | Chromium |
|
||
| 设计模式 | Page Object Model |
|
||
|
||
### 4.2 测试场景设计
|
||
|
||
**5条跨域业务流程**:
|
||
|
||
| 编号 | 流程名称 | 涉及域 | 关键步骤 |
|
||
|------|---------|--------|---------|
|
||
| E2E-CROSS-001 | 业主报修全流程 | auth+space+ops | 登录->选项目->定位设备->创建工单->派单->执行->完成->验收 |
|
||
| E2E-CROSS-002 | 设备全生命周期 | asset+ops | 创建设备->关联空间->录入扩展表->健康评分->创建维保->完成->报废 |
|
||
| E2E-CROSS-003 | 预防性维保调度 | ops+asset | 创建维保计划->创建维保任务->分配->执行->完成->验收->设备联动 |
|
||
| E2E-CROSS-004 | 巡检异常处理 | ops+asset | 创建巡检模板->执行巡检->上报异常->创建工单->处理->复检 |
|
||
| E2E-CROSS-005 | 能耗计费流程 | ops+finance | 创建计量点->抄表录入->费用计算->生成账单->缴费 |
|
||
|
||
**各域核心操作**:
|
||
|
||
| 域 | 测试场景 |
|
||
|----|---------|
|
||
| auth | 登录/登出/Token刷新/密码修改/角色分配 |
|
||
| space | 项目创建/空间树构建/节点CRUD |
|
||
| asset | 设备创建/扩展表管理/健康评分查询 |
|
||
| ops | 工单全流程/维保任务/备件出入库 |
|
||
| finance | 收费项目/账单生成/支付登记 |
|
||
|
||
### 4.3 Page Object模式设计
|
||
|
||
```
|
||
pages/
|
||
LoginPage.ts - 登录页:用户名/密码输入、登录按钮、错误提示
|
||
DashboardPage.ts - 仪表盘:菜单导航、项目选择器、数据概览
|
||
WorkOrderPage.ts - 工单页:列表/创建/详情/派单/执行/完成/验收
|
||
EquipmentPage.ts - 设备页:列表/创建/详情/健康评分
|
||
SpacePage.ts - 空间页:空间树/节点管理
|
||
MaintenancePage.ts - 维保页:计划列表/任务列表
|
||
```
|
||
|
||
### 4.4 测试脚本目录结构
|
||
|
||
```
|
||
04-TESTING/e2e/
|
||
specs/
|
||
auth/
|
||
login.spec.ts - 登录流程E2E测试
|
||
space/
|
||
project.spec.ts - 项目管理E2E测试
|
||
asset/
|
||
equipment.spec.ts - 设备管理E2E测试
|
||
ops/
|
||
work-order.spec.ts - 工单管理E2E测试
|
||
finance/
|
||
billing.spec.ts - 财务管理E2E测试
|
||
cross-domain/
|
||
owner-repair.spec.ts - 业主报修全流程E2E测试
|
||
equipment-lifecycle.spec.ts - 设备全生命周期E2E测试
|
||
maintenance-schedule.spec.ts - 预防性维保调度E2E测试
|
||
fixtures/
|
||
test-data.json - 测试数据
|
||
pages/
|
||
LoginPage.ts - 登录页Page Object
|
||
DashboardPage.ts - 仪表盘Page Object
|
||
playwright.config.ts - Playwright配置
|
||
run-all.sh - 执行全部E2E测试
|
||
run-module.sh - 执行指定模块E2E测试
|
||
```
|
||
|
||
---
|
||
|
||
## 五、测试用例清单
|
||
|
||
### 5.1 身份与权限域
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-AUTH-001 | 用户登录-正常 | 用户已存在 | POST /api/auth/login {username, password} | 200, 返回token/userId/roles | P0 |
|
||
| TC-AUTH-002 | 用户登录-密码错误 | 用户已存在 | POST /api/auth/login {username, wrong_pwd} | 401, 返回错误信息 | P0 |
|
||
| TC-AUTH-003 | 用户登录-锁定 | 连续5次失败 | 连续5次错误密码登录 | 账户锁定10分钟 | P0 |
|
||
| TC-AUTH-004 | Token刷新 | 已登录 | POST /api/auth/refresh | 200, 返回新Token | P0 |
|
||
| TC-AUTH-005 | 获取当前用户 | 已登录 | GET /api/auth/me | 200, 返回用户信息 | P0 |
|
||
| TC-AUTH-006 | 用户登出 | 已登录 | POST /api/auth/logout | 200 | P0 |
|
||
| TC-AUTH-007 | 创建用户 | 管理员已登录 | POST /api/auth/users {username, password, userType} | 201, 返回用户ID | P0 |
|
||
| TC-AUTH-008 | 查询用户列表 | 管理员已登录 | GET /api/auth/users?page=0&size=10 | 200, 返回分页数据 | P0 |
|
||
| TC-AUTH-009 | 更新用户 | 用户已存在 | PUT /api/auth/users/{id} {realName, phone} | 200, 返回更新后数据 | P0 |
|
||
| TC-AUTH-010 | 删除用户 | 用户已存在 | DELETE /api/auth/users/{id} | 200 | P1 |
|
||
| TC-AUTH-011 | 修改密码 | 用户已登录 | PUT /api/auth/users/{id}/password | 200 | P0 |
|
||
| TC-AUTH-012 | 弱密码拒绝 | 管理员已登录 | POST创建用户 password=123456 | 400, 拒绝弱密码 | P0 |
|
||
| TC-AUTH-013 | 创建角色 | 管理员已登录 | POST /api/auth/roles {code, name, type} | 201 | P0 |
|
||
| TC-AUTH-014 | 角色权限分配 | 角色/权限已存在 | POST /api/auth/roles/{id}/permissions | 200 | P0 |
|
||
| TC-AUTH-015 | 创建权限 | 管理员已登录 | POST /api/auth/permissions {code, name, type} | 201 | P0 |
|
||
| TC-AUTH-016 | 部门树查询 | 部门已存在 | GET /api/auth/depts/tree | 200, 返回树形结构 | P1 |
|
||
| TC-AUTH-017 | 部门删除约束 | 部门有子部门 | DELETE /api/auth/depts/{id} | 400, 拒绝删除 | P0 |
|
||
| TC-AUTH-018 | 项目成员管理 | 项目/用户已存在 | 添加/查询/移除项目成员 | 各操作返回正确结果 | P0 |
|
||
| TC-AUTH-019 | 住户认证流程 | 住户已存在 | UNVERIFIED->PENDING->VERIFIED | 状态正确流转 | P1 |
|
||
| TC-AUTH-020 | 审计日志查询 | 操作已产生日志 | GET /api/auth/audit-logs | 200, 返回日志列表 | P1 |
|
||
|
||
### 5.2 空间与项目域
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-SPACE-001 | 创建项目 | 管理员已登录 | POST /api/mdm/projects {code, name, projectType} | 201, 返回项目ID | P0 |
|
||
| TC-SPACE-002 | 查询项目列表 | 项目已存在 | GET /api/mdm/projects | 200, 返回分页数据 | P0 |
|
||
| TC-SPACE-003 | 项目状态流转 | 项目状态PENDING | PUT /api/mdm/projects/{id}/status {status: ACTIVE} | 200 | P0 |
|
||
| TC-SPACE-004 | 项目删除检查 | 项目有应收费用 | GET /api/mdm/projects/{id}/delete-check | canDelete=false | P0 |
|
||
| TC-SPACE-005 | 项目配置管理 | 项目已存在 | GET/PUT /api/mdm/projects/{id}/config | 配置正确读写 | P1 |
|
||
| TC-SPACE-006 | 创建空间节点 | 项目已存在 | POST /api/mdm/space-nodes {name, nodeType} | 201 | P0 |
|
||
| TC-SPACE-007 | 获取空间树 | 节点已创建 | GET /api/mdm/space-nodes/project/{id}/tree | 200, 返回树形结构 | P0 |
|
||
| TC-SPACE-008 | 空间节点删除检查 | 节点有子节点 | GET /api/mdm/space-nodes/{id}/delete-check | 返回子节点数 | P0 |
|
||
| TC-SPACE-009 | 空间节点级联删除 | 节点有子节点 | DELETE /api/mdm/space-nodes/{id}/cascade | 200, 子节点全部删除 | P0 |
|
||
| TC-SPACE-010 | 巡检标准项CRUD | 管理员已登录 | 创建/查询/更新/删除巡检标准项 | 各操作返回正确结果 | P0 |
|
||
| TC-SPACE-011 | 巡检模板管理 | 标准项已存在 | 创建/查询/更新/复制巡检模板 | 各操作返回正确结果 | P1 |
|
||
|
||
### 5.3 设备与资产域
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-ASSET-001 | 创建设备 | 项目/空间已存在 | POST /api/asset/equipment {equipmentCode, name, type} | 201 | P0 |
|
||
| TC-ASSET-002 | 按项目查询设备 | 设备已存在 | GET /api/asset/equipment/by-project/{projectId} | 200, 返回设备列表 | P0 |
|
||
| TC-ASSET-003 | 按空间查询设备 | 设备已关联空间 | GET /api/asset/equipment/by-space/{spaceNodeId} | 200, 返回设备列表 | P0 |
|
||
| TC-ASSET-004 | 设备批量删除 | 多个设备已存在 | POST /api/asset/equipment/batch-delete {ids} | 200 | P1 |
|
||
| TC-ASSET-005 | 电梯扩展表管理 | 电梯设备已存在 | GET/PUT /api/asset/equipment/{id}/elevator | 扩展表正确读写 | P0 |
|
||
| TC-ASSET-006 | 暖通扩展表管理 | 暖通设备已存在 | GET/PUT /api/asset/equipment/{id}/hvac | 扩展表正确读写 | P0 |
|
||
| TC-ASSET-007 | 消防扩展表管理 | 消防设备已存在 | GET/PUT /api/asset/equipment/{id}/fire | 扩展表正确读写 | P0 |
|
||
| TC-ASSET-008 | 能源计量扩展表管理 | 能源设备已存在 | GET/PUT /api/asset/equipment/{id}/energy | 扩展表正确读写 | P0 |
|
||
| TC-ASSET-009 | 设备Excel导入 | 准备xlsx文件 | POST /api/asset/equipment/import | 返回successCount/failCount | P1 |
|
||
| TC-ASSET-010 | 设备Excel导出 | 设备已存在 | GET /api/asset/equipment/export?projectId={id} | 返回xlsx文件 | P1 |
|
||
| TC-ASSET-011 | 健康评分查询 | 设备已存在 | GET /api/asset/equipment/{id}/health | 200, 返回健康度/等级 | P1 |
|
||
| TC-ASSET-012 | 故障记录 | 设备已存在 | POST /api/asset/equipment/{id}/failures | 201, 自动计算时长 | P0 |
|
||
| TC-ASSET-013 | 归属主体CRUD | 管理员已登录 | 创建/查询/更新/删除归属主体 | 各操作返回正确结果 | P1 |
|
||
| TC-ASSET-014 | 设备统计 | 设备已存在 | GET /api/asset/equipment/statistics/by-type | 200, 返回统计数据 | P1 |
|
||
|
||
### 5.4 运营与服务域
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-OPS-001 | 创建工单 | 项目/设备已存在 | POST /api/wo/work-orders {title, source, type} | 201, workNo自动生成 | P0 |
|
||
| TC-OPS-002 | 工单派单 | 工单状态PENDING | POST /api/wo/work-orders/{id}/assign | 200, 状态变ASSIGNED | P0 |
|
||
| TC-OPS-003 | 工单开始执行 | 工单状态ASSIGNED | POST /api/wo/work-orders/{id}/start | 200, 状态变IN_PROGRESS | P0 |
|
||
| TC-OPS-004 | 工单完成 | 工单状态IN_PROGRESS | POST /api/wo/work-orders/{id}/complete | 200, 状态变COMPLETED | P0 |
|
||
| TC-OPS-005 | 工单验收 | 工单状态COMPLETED | POST /api/wo/work-orders/{id}/verify {rating} | 200, 状态变VERIFIED | P0 |
|
||
| TC-OPS-006 | 工单取消-待分配 | 工单状态PENDING | POST /api/wo/work-orders/{id}/cancel | 200, 状态变CANCELLED | P1 |
|
||
| TC-OPS-007 | 工单取消-已完成 | 工单状态COMPLETED | POST /api/wo/work-orders/{id}/cancel | 400, 拒绝取消 | P0 |
|
||
| TC-OPS-008 | 工单统计 | 工单已存在 | GET /api/wo/work-orders/statistics | 200, 返回统计数据 | P1 |
|
||
| TC-OPS-009 | 创建维保任务 | 设备已存在 | POST /api/wo/maintenance-tasks {equipmentId, type} | 201 | P0 |
|
||
| TC-OPS-010 | 维保任务状态流转 | 任务状态PENDING | assign->start->complete->verify | 状态正确流转 | P0 |
|
||
| TC-OPS-011 | 维保任务自动优先级 | 创建紧急维修任务 | POST创建type=EMERGENCY | priority自动为URGENT | P0 |
|
||
| TC-OPS-012 | 维保任务完成后设备联动 | 任务关联设备 | 完成维保任务 | 设备维保商/下次巡检日期更新 | P0 |
|
||
| TC-OPS-013 | 备件入库 | 备件已存在 | POST /api/ops/spare-parts/in-stock | 200, currentStock增加 | P0 |
|
||
| TC-OPS-014 | 备件出库 | 备件库存充足 | POST /api/ops/spare-parts/out-stock | 200, currentStock减少 | P0 |
|
||
| TC-OPS-015 | 备件出库-库存不足 | 备件库存不足 | POST出库数量>库存 | 400, 拒绝出库 | P0 |
|
||
| TC-OPS-016 | 低库存预警 | 备件currentStock<safeStock | GET /api/ops/spare-parts/low-stock | 返回低库存备件列表 | P1 |
|
||
| TC-OPS-017 | 能耗抄表录入 | 计量点已存在 | POST /api/ops/energy/consumption | 201, 自动计算消耗量和费用 | P0 |
|
||
| TC-OPS-018 | 能耗抄表-读数递减 | 上次读数100 | POST currentReading=50 | 400, 拒绝递减读数 | P0 |
|
||
| TC-OPS-019 | 维保计划管理 | 管理员已登录 | 创建/查询/更新维保计划 | 各操作返回正确结果 | P1 |
|
||
| TC-OPS-020 | 巡检模板管理 | 管理员已登录 | 创建/查询/更新/复制巡检模板 | 各操作返回正确结果 | P1 |
|
||
|
||
### 5.5 财务与收费域
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-FIN-001 | 创建收费项目 | 模块已实现 | POST /api/finance/fee-items | 201 | P0 |
|
||
| TC-FIN-002 | 查询收费项目 | 收费项目已存在 | GET /api/finance/fee-items | 200 | P0 |
|
||
| TC-FIN-003 | 生成账单 | 收费项目/业主已存在 | POST /api/finance/fee-bills/generate | 201 | P0 |
|
||
| TC-FIN-004 | 账单状态流转 | 账单已存在 | UNPAID->PARTIAL_PAID->PAID | 状态正确流转 | P0 |
|
||
| TC-FIN-005 | 线下收款登记 | 账单已存在 | POST /api/finance/fee-payments | 201 | P0 |
|
||
| TC-FIN-006 | 退款申请 | 支付已完成 | POST /api/finance/fee-refunds | 201 | P1 |
|
||
| TC-FIN-007 | 滞纳金计算 | 账单逾期 | 自动计算滞纳金 | 金额正确 | P1 |
|
||
|
||
### 5.6 前端交互域
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-FE-001 | 登录页面-正常登录 | 系统可访问 | 输入用户名密码->点击登录 | 跳转至仪表盘 | P0 |
|
||
| TC-FE-002 | 登录页面-错误密码 | 系统可访问 | 输入错误密码->点击登录 | 显示错误提示 | P0 |
|
||
| TC-FE-003 | 项目选择 | 已登录 | 点击项目选择器->选择项目 | 页面数据刷新 | P0 |
|
||
| TC-FE-004 | 权限控制 | 不同角色用户 | 访问无权限页面/按钮 | 隐藏或禁用 | P0 |
|
||
| TC-FE-005 | 用户管理页面 | 管理员已登录 | 列表/创建/编辑/删除用户 | 各操作正常 | P0 |
|
||
| TC-FE-006 | 设备管理页面 | 管理员已登录 | 列表/创建/详情/导入 | 各操作正常 | P0 |
|
||
| TC-FE-007 | 工单管理页面 | 管理员已登录 | 列表/创建/派单/执行/验收 | 各操作正常 | P0 |
|
||
|
||
### 5.7 跨域业务流程
|
||
|
||
| 用例ID | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|
||
|--------|------|---------|---------|---------|--------|
|
||
| TC-CROSS-001 | 业主报修全流程 | 业主/设备/维保人员已存在 | 登录->选项目->创建工单->派单->执行->完成->验收 | 工单状态PENDING->VERIFIED | P0 |
|
||
| TC-CROSS-002 | 设备全生命周期 | 项目/空间已存在 | 创建设备->关联空间->录入扩展表->健康评分->维保->报废 | 设备状态ACTIVE->SCRAPPED | P0 |
|
||
| TC-CROSS-003 | 预防性维保调度 | 设备/维保计划已存在 | 创建计划->创建任务->分配->执行->完成->验收 | 任务完成+设备信息更新 | P0 |
|
||
| TC-CROSS-004 | 巡检异常处理 | 巡检模板/设备已存在 | 创建模板->执行巡检->上报异常->创建工单->处理 | 异常问题解决 | P0 |
|
||
| TC-CROSS-005 | 能耗计费流程 | 计量点/收费项目已存在 | 创建计量点->抄表->费用计算->生成账单->缴费 | 账单状态PAID | P0 |
|
||
|
||
---
|
||
|
||
## 六、测试执行与报告
|
||
|
||
### 6.1 单模块测试执行
|
||
|
||
```bash
|
||
# API测试
|
||
./04-TESTING/api/run-module.sh auth
|
||
./04-TESTING/api/run-module.sh space
|
||
./04-TESTING/api/run-module.sh asset
|
||
./04-TESTING/api/run-module.sh ops
|
||
./04-TESTING/api/run-module.sh finance
|
||
|
||
# E2E测试
|
||
./04-TESTING/e2e/run-module.sh auth
|
||
./04-TESTING/e2e/run-module.sh space
|
||
./04-TESTING/e2e/run-module.sh asset
|
||
./04-TESTING/e2e/run-module.sh ops
|
||
./04-TESTING/e2e/run-module.sh finance
|
||
./04-TESTING/e2e/run-module.sh cross-domain
|
||
```
|
||
|
||
### 6.2 全量测试执行
|
||
|
||
```bash
|
||
# API全量测试
|
||
./04-TESTING/api/run-all.sh
|
||
|
||
# E2E全量测试
|
||
./04-TESTING/e2e/run-all.sh
|
||
```
|
||
|
||
### 6.3 串联测试执行
|
||
|
||
跨域流程测试需要按顺序执行,确保数据依赖正确:
|
||
|
||
```bash
|
||
# 业主报修全流程
|
||
./04-TESTING/e2e/run-module.sh cross-domain
|
||
```
|
||
|
||
### 6.4 测试报告生成
|
||
|
||
**API测试报告**:
|
||
- 脚本执行后自动输出测试摘要(PASS/FAIL/总计/通过率)
|
||
- 详细日志输出到 04-TESTING/reports/api-{module}-{date}.log
|
||
|
||
**E2E测试报告**:
|
||
- Playwright HTML报告:04-TESTING/reports/e2e-report/
|
||
- 执行命令:`npx playwright test --reporter=html`
|
||
- 报告内容:通过率、失败截图、执行耗时
|
||
|
||
**报告指标**:
|
||
- 总用例数 / 通过数 / 失败数 / 跳过数
|
||
- 通过率 = 通过数 / 总用例数 * 100%
|
||
- 失败分析:按失败原因分类(断言失败/超时/环境问题)
|
||
|
||
### 6.5 测试报告输出目录
|
||
|
||
```
|
||
04-TESTING/reports/
|
||
api-auth-YYYYMMDD.log
|
||
api-space-YYYYMMDD.log
|
||
api-asset-YYYYMMDD.log
|
||
api-ops-YYYYMMDD.log
|
||
api-finance-YYYYMMDD.log
|
||
e2e-report/
|
||
index.html
|
||
trace/
|
||
screenshots/
|
||
```
|
||
|
||
---
|
||
|
||
## 七、测试准入准出标准
|
||
|
||
### 7.1 准入标准
|
||
|
||
代码提交测试必须满足以下条件:
|
||
|
||
| 准入项 | 要求 |
|
||
|--------|------|
|
||
| 代码审查 | PR必须经过至少1人审查通过 |
|
||
| 单元测试 | 新增/修改代码必须有对应单元测试 |
|
||
| 编译通过 | mvn clean install -DskipTests 无错误 |
|
||
| 类型检查 | npx vue-tsc --noEmit 无错误 |
|
||
| API文档 | 新增/修改接口必须更新API文档 |
|
||
|
||
### 7.2 准出标准
|
||
|
||
版本发布必须满足以下条件:
|
||
|
||
| 准出项 | 要求 |
|
||
|--------|------|
|
||
| API测试通过率 | >= 95% |
|
||
| E2E测试通过率 | >= 90% |
|
||
| P0缺陷 | 0个 |
|
||
| P1缺陷 | 0个 |
|
||
| P2缺陷 | 不超过5个(需有修复计划) |
|
||
| 单元测试覆盖率 | 核心Service层 >= 80% |
|
||
| 性能测试 | 关键接口响应时间 < 500ms |
|
||
|
||
**缺陷优先级定义**:
|
||
|
||
| 级别 | 定义 | 修复时限 |
|
||
|------|------|---------|
|
||
| P0 | 系统崩溃/数据丢失/安全漏洞 | 4小时内 |
|
||
| P1 | 核心功能不可用/业务流程阻断 | 24小时内 |
|
||
| P2 | 功能异常但有规避方案 | 3个工作日内 |
|
||
| P3 | UI显示问题/体验优化 | 下个迭代 |
|