ether-docs/06-TESTING/reports/INTEGRATION_TEST_CASE_DESIG...

647 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ether 集成测试用例详细设计
**文档版本**: v1.0
**创建日期**: 2026-02-14
**关联文档**: [集成测试方案](./集成测试方案.md)
---
## 一、业务流程集成测试用例
### 1.1 工单管理模块集成测试
#### TC-INT-WORK-001: 工单完整生命周期测试
**测试目标**: 验证工单从创建到关闭的完整流程正确性
**前置条件**:
- 已登录项目管理员账号
- 项目已创建并选中
- 已创建测试用户(处理人)
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建工单 | 类型:REPAIR, 标题:"空调维修", 优先级:HIGH | 工单创建成功,状态:CREATED生成工单编号 |
| 2 | 验证流程记录 | - | 生成一条流程记录,操作:创建 |
| 3 | 分配工单 | 处理人ID:assignee-001 | 分配成功,状态:ASSIGNED |
| 4 | 验证流程记录 | - | 生成一条流程记录,操作:分配 |
| 5 | 接受工单 | - | 接受成功,状态:ACCEPTED |
| 6 | 开始处理 | - | 开始成功,状态:IN_PROGRESS |
| 7 | 完成工单 | 结果描述:"已更换压缩机" | 完成成功,状态:COMPLETED |
| 8 | 验收通过 | 评分:5, 评价:"处理及时" | 验收成功,状态:CLOSED |
| 9 | 验证最终状态 | - | 状态:CLOSED关闭时间已记录 |
**验证点**:
- [ ] 工单编号格式正确: WO-YYYYMMDD-序号
- [ ] 每次状态变更都生成流程记录
- [ ] 流程记录包含操作人、操作时间、操作内容
- [ ] 工单各时间字段正确记录(创建时间、分配时间、完成时间、关闭时间)
- [ ] 通知消息正确发送
---
#### TC-INT-WORK-002: 工单转派流程测试
**测试目标**: 验证工单转派功能正确性
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建并分配工单 | 处理人:user-A | 状态:ASSIGNED |
| 2 | 转派工单 | 新处理人:user-B, 原因:"技能不匹配" | 转派成功处理人更新为user-B |
| 3 | 验证流程记录 | - | 记录转派操作,包含原处理人和新处理人 |
| 4 | 验证通知 | - | user-A收到转出通知user-B收到分配通知 |
---
#### TC-INT-WORK-003: 工单挂起恢复测试
**测试目标**: 验证工单挂起和恢复功能
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建并开始处理工单 | - | 状态:IN_PROGRESS |
| 2 | 挂起工单 | 原因:"等待配件到货" | 状态:SUSPENDED |
| 3 | 验证挂起时间 | - | 挂起时间已记录 |
| 4 | 恢复工单 | - | 状态:ASSIGNED |
| 5 | 继续处理 | - | 可以正常处理 |
---
#### TC-INT-WORK-004: 工单退回重分配测试
**测试目标**: 验证工单退回后重新分配流程
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建并分配工单 | 处理人:user-A | 状态:ASSIGNED |
| 2 | 接受工单 | - | 状态:ACCEPTED |
| 3 | 退回工单 | 原因:"技术能力不足" | 状态:RETURNED处理人清空 |
| 4 | 重新分配 | 新处理人:user-B | 状态:ASSIGNED |
| 5 | 验证流程记录 | - | 包含退回和重新分配记录 |
---
#### TC-INT-WORK-005: 工单验收不通过测试
**测试目标**: 验证验收不通过后工单状态回退
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建并完成工单 | - | 状态:COMPLETED |
| 2 | 验收不通过 | 原因:"问题未完全解决" | 状态:IN_PROGRESS |
| 3 | 验证通知 | - | 处理人收到重新处理通知 |
| 4 | 重新完成 | - | 状态:COMPLETED |
| 5 | 再次验收通过 | - | 状态:CLOSED |
---
### 1.2 设备管理模块集成测试
#### TC-INT-ASSET-001: 设备报修流程测试
**测试目标**: 验证设备与工单关联正确性
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建设备 | 名称:"空调-001", 位置:"A栋1楼", 状态:NORMAL | 设备创建成功 |
| 2 | 生成二维码 | - | 生成设备二维码 |
| 3 | 扫码创建工单 | 设备ID | 工单自动关联设备 |
| 4 | 处理工单 | - | 工单状态:IN_PROGRESS |
| 5 | 验证设备状态 | - | 设备状态:MAINTENANCE |
| 6 | 完成工单 | - | 工单状态:COMPLETED |
| 7 | 验证设备状态 | - | 设备状态:NORMAL |
| 8 | 查询设备维修历史 | - | 显示本次维修记录 |
---
#### TC-INT-ASSET-002: 设备维修历史统计测试
**测试目标**: 验证设备维修历史统计准确性
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建设备 | - | 设备ID:equip-001 |
| 2 | 创建3个维修工单并完成 | - | 3条维修记录 |
| 3 | 查询维修统计 | 设备ID:equip-001 | 维修次数:3 |
| 4 | 验证平均维修时长 | - | 计算正确 |
| 5 | 验证故障类型分布 | - | 统计正确 |
---
### 1.3 巡检管理模块集成测试
#### TC-INT-INSP-001: 巡检计划执行流程测试
**测试目标**: 验证巡检计划到任务执行的完整流程
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建巡检计划 | 名称:"日常巡检", 周期:DAILY | 计划创建成功 |
| 2 | 添加巡检点 | 点位列表 | 巡检点添加成功 |
| 3 | 生成巡检任务 | - | 生成当日任务 |
| 4 | 执行巡检 | 结果:正常 | 记录巡检结果 |
| 5 | 上报异常 | 异常描述:"发现漏水" | 创建异常记录 |
| 6 | 自动创建工单 | - | 工单自动创建并关联巡检记录 |
---
#### TC-INT-INSP-002: 巡检异常转工单测试
**测试目标**: 验证巡检异常自动转工单功能
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 执行巡检并上报异常 | 异常类型:设备故障 | 异常记录创建 |
| 2 | 验证工单自动创建 | - | 工单类型:INSPECT, 关联巡检记录 |
| 3 | 处理工单 | - | 工单状态更新 |
| 4 | 验证巡检记录状态 | - | 异常状态:已处理 |
---
### 1.4 投诉建议模块集成测试
#### TC-INT-COMP-001: 投诉处理完整流程测试
**测试目标**: 验证投诉从提交到关闭的完整流程
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 提交投诉 | 内容:"噪音扰民", 类型:环境投诉 | 投诉创建成功 |
| 2 | 指派处理人 | 处理人:staff-001 | 指派成功 |
| 3 | 处理投诉 | 处理结果:"已沟通协调" | 处理完成 |
| 4 | 回复用户 | 回复内容 | 用户收到回复 |
| 5 | 用户评价 | 评分:4 | 评价记录保存 |
| 6 | 关闭投诉 | - | 状态:CLOSED |
---
### 1.5 满意度调查模块集成测试
#### TC-INT-SAT-001: 满意度调查完整流程测试
**测试目标**: 验证满意度调查从创建到统计的完整流程
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建满意度调查 | 标题:"物业服务满意度调查" | 调查创建成功 |
| 2 | 添加问题 | 问题列表 | 问题添加成功 |
| 3 | 发布调查 | 目标用户列表 | 发送调查邀请 |
| 4 | 用户填写调查 | 评分和意见 | 回应保存成功 |
| 5 | 统计分析 | - | 统计数据正确 |
| 6 | 导出报告 | - | 报告生成成功 |
---
### 1.6 问卷调查模块集成测试
#### TC-INT-QUE-001: 问卷调查完整流程测试
**测试目标**: 验证问卷调查从创建到分析的完整流程
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 创建问卷 | 标题:"业主需求调研" | 问卷创建成功 |
| 2 | 添加题目 | 题目列表(单选、多选、填空) | 题目添加成功 |
| 3 | 发布问卷 | - | 发布成功 |
| 4 | 用户填写 | 答案数据 | 回应保存成功 |
| 5 | 统计分析 | - | 各题目统计正确 |
| 6 | 导出数据 | - | Excel导出成功 |
---
### 1.7 智能派单模块集成测试
#### TC-INT-DISP-001: 智能派单算法测试
**测试目标**: 验证智能派单算法正确性
**测试步骤**:
| 步骤 | 操作 | 输入数据 | 期望结果 |
|------|------|----------|----------|
| 1 | 配置派单规则 | 规则:技能匹配+距离优先 | 规则保存成功 |
| 2 | 设置员工技能 | 员工A:空调维修, 员工B:水电维修 | 技能设置成功 |
| 3 | 设置员工位置 | 员工A:位置1, 员工B:位置2 | 位置更新成功 |
| 4 | 创建空调维修工单 | 位置:位置1附近 | 自动分配给员工A |
| 5 | 验证分配结果 | - | 分配给技能匹配且距离最近的员工 |
---
## 二、边界条件集成测试用例
### 2.1 数据边界测试
#### TC-BOUND-DATA-001: 字符串长度边界测试
**测试数据**:
| 字段 | 最小值 | 最大值 | 超限值 | 期望结果 |
|------|--------|--------|--------|----------|
| 工单标题 | 1字符 | 100字符 | 101字符 | 超限拒绝 |
| 工单描述 | 0字符(可选) | 2000字符 | 2001字符 | 超限拒绝 |
| 用户名 | 3字符 | 50字符 | 51字符 | 超限拒绝 |
| 密码 | 8字符 | 100字符 | 7字符 | 不满足复杂度拒绝 |
**测试步骤**:
1. 测试最小边界值: 输入最小允许值,验证成功
2. 测试最大边界值: 输入最大允许值,验证成功
3. 测试超限值: 输入超限值,验证拒绝并提示错误
---
#### TC-BOUND-DATA-002: 数值边界测试
**测试数据**:
| 字段 | 最小值 | 最大值 | 无效值 | 期望结果 |
|------|--------|--------|--------|----------|
| 分页页码 | 1 | MAX_INT | 0, -1 | 无效值拒绝 |
| 每页条数 | 1 | 100 | 0, 101 | 无效值拒绝 |
| 评分 | 1 | 5 | 0, 6 | 无效值拒绝 |
| 优先级 | 1(LOW) | 4(URGENT) | 5 | 无效值拒绝 |
---
#### TC-BOUND-DATA-003: 日期时间边界测试
**测试场景**:
| 场景 | 输入 | 期望结果 |
|------|------|----------|
| 开始日期等于结束日期 | same_date ~ same_date | 允许,查询当天 |
| 开始日期大于结束日期 | 2026-02-15 ~ 2026-02-10 | 拒绝,提示日期范围错误 |
| 跨年查询 | 2025-01-01 ~ 2026-12-31 | 允许,返回范围内数据 |
| 未来日期 | 2030-01-01 ~ 2030-12-31 | 允许(预约场景) |
| 历史日期限制 | 1900-01-01 | 根据业务规则处理 |
---
#### TC-BOUND-DATA-004: 并发数量边界测试
**测试场景**:
| 场景 | 边界值 | 期望结果 |
|------|--------|----------|
| 单用户最大会话数 | 3 | 第4个会话拒绝或踢出最早会话 |
| 单项目最大成员数 | 100 | 第101个成员拒绝添加 |
| 单工单最大附件数 | 10 | 第11个附件拒绝上传 |
| 单次批量操作数 | 100 | 第101个拒绝或分批处理 |
---
### 2.2 状态边界测试
#### TC-BOUND-STATE-001: 工单状态非法转换测试
**测试矩阵**:
| 当前状态 | 尝试操作 | 期望结果 |
|----------|----------|----------|
| CREATED | 开始处理 | 拒绝,需要先分配 |
| ASSIGNED | 完成 | 拒绝,需要先接受并开始 |
| IN_PROGRESS | 验收 | 拒绝,需要先完成 |
| COMPLETED | 开始处理 | 拒绝,需要先验收不通过 |
| CLOSED | 任何操作 | 拒绝,工单已关闭 |
| SUSPENDED | 完成 | 拒绝,需要先恢复 |
---
#### TC-BOUND-STATE-002: 用户状态边界测试
| 当前状态 | 尝试操作 | 期望结果 |
|----------|----------|----------|
| LOCKED | 登录 | 拒绝,提示账号已锁定 |
| DISABLED | 登录 | 拒绝,提示账号已禁用 |
| ACTIVE | 重复登录 | 根据配置处理(允许多设备或踢出) |
---
#### TC-BOUND-STATE-003: 项目状态边界测试
| 当前状态 | 尝试操作 | 期望结果 |
|----------|----------|----------|
| ARCHIVED | 创建工单 | 拒绝,项目已归档 |
| ARCHIVED | 添加成员 | 拒绝,项目已归档 |
| PENDING | 创建工单 | 拒绝,项目未激活 |
---
### 2.3 输入边界测试
#### TC-BOUND-INPUT-001: SQL注入测试
**测试数据**:
```sql
-- 测试输入
"'; DROP TABLE work_order; --"
"1' OR '1'='1"
"admin'--"
"1; UPDATE users SET role='admin' WHERE id='user1'"
```
**期望结果**: 所有SQL注入尝试被过滤或转义不影响数据库
---
#### TC-BOUND-INPUT-002: XSS攻击测试
**测试数据**:
```html
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
javascript:alert('XSS')
```
**期望结果**: 所有XSS脚本被转义或过滤不执行
---
#### TC-BOUND-INPUT-003: 文件上传边界测试
| 测试场景 | 输入 | 期望结果 |
|----------|------|----------|
| 文件大小超限 | 11MB文件 | 拒绝,提示大小限制 |
| 非法文件类型 | .exe, .bat, .sh | 拒绝,提示类型限制 |
| 空文件 | 0字节文件 | 拒绝,提示文件无效 |
| 文件名特殊字符 | ../../../etc/passwd | 拒绝或重命名 |
---
## 三、数据一致性集成测试用例
### 3.1 事务一致性测试
#### TC-TRANS-001: 工单创建事务回滚测试
**测试步骤**:
1. 开启事务
2. 创建工单记录
3. 创建流程记录
4. 触发异常(模拟通知服务失败)
5. 验证事务回滚
**期望结果**: 工单记录和流程记录都不存在
---
#### TC-TRANS-002: 批量操作事务测试
**测试步骤**:
1. 批量创建10个工单
2. 第5个工单创建触发异常
3. 验证事务处理
**期望结果**:
- 如果配置为全部成功: 所有工单都不存在
- 如果配置为部分成功: 前4个工单存在后6个不存在
---
#### TC-TRANS-003: 跨服务事务测试
**测试步骤**:
1. 创建工单
2. 调用通知服务发送通知
3. 通知服务失败
4. 验证补偿机制
**期望结果**:
- 工单创建成功
- 通知记录标记为失败
- 后台任务重试发送通知
---
### 3.2 关联数据一致性测试
#### TC-REL-001: 用户删除关联数据处理测试
**测试步骤**:
1. 创建用户user-001
2. 使用user-001创建多个工单
3. 尝试删除user-001
**期望结果**:
- 方案A: 拒绝删除,提示存在关联数据
- 方案B: 软删除用户,保留历史数据,显示"已删除用户"
---
#### TC-REL-002: 项目删除级联处理测试
**测试步骤**:
1. 创建项目proj-001
2. 创建工单、设备、巡检记录
3. 尝试删除proj-001
**期望结果**:
- 拒绝删除,提示存在关联数据
- 或归档项目而非删除
---
#### TC-REL-003: 设备状态同步测试
**测试步骤**:
1. 创建设备,状态:NORMAL
2. 创建设备维修工单
3. 开始处理工单
4. 验证设备状态
5. 完成工单
6. 验证设备状态
**期望结果**:
- 开始处理时: 设备状态 -> MAINTENANCE
- 完成工单时: 设备状态 -> NORMAL
---
### 3.3 并发一致性测试
#### TC-CONC-001: 工单并发分配测试
**测试步骤**:
1. 创建工单wo-001
2. 管理员A和管理员B同时尝试分配
3. 验证分配结果
**期望结果**:
- 只有一个分配成功
- 失败方收到"工单已被分配"提示
- 工单状态正确
---
#### TC-CONC-002: 库存并发扣减测试
**测试步骤**:
1. 创建备件库存,数量:10
2. 10个工单同时扣减库存各扣减1个
3. 验证最终库存
**期望结果**:
- 最终库存:0
- 无超扣现象
---
#### TC-CONC-003: 统计数据并发更新测试
**测试步骤**:
1. 获取当前工单完成数
2. 10个工单同时完成
3. 验证统计数据
**期望结果**:
- 统计数据正确增加10
- 无丢失更新
---
### 3.4 缓存一致性测试
#### TC-CACHE-001: 权限缓存更新测试
**测试步骤**:
1. 用户登录,获取权限列表
2. 管理员修改用户权限
3. 用户再次操作
4. 验证权限生效
**期望结果**:
- 权限立即生效或短时间内生效
- 缓存正确更新
---
#### TC-CACHE-002: 项目信息缓存同步测试
**测试步骤**:
1. 获取项目信息(缓存)
2. 修改项目信息
3. 各服务验证项目信息
**期望结果**:
- 所有服务获取到最新项目信息
- 缓存正确同步或失效
---
## 四、测试数据准备脚本
### 4.1 基础数据初始化
```sql
-- 创建测试项目
INSERT INTO mdm_project (id, name, code, status, created_at) VALUES
('proj-test-001', '测试项目A', 'PROJ-A', 'ACTIVE', NOW()),
('proj-test-002', '测试项目B', 'PROJ-B', 'ACTIVE', NOW());
-- 创建测试用户
INSERT INTO auth_user (id, username, password, status, created_at) VALUES
('user-admin', 'admin', '$2a$10$...', 'ACTIVE', NOW()),
('user-worker-1', 'worker_1', '$2a$10$...', 'ACTIVE', NOW()),
('user-worker-2', 'worker_2', '$2a$10$...', 'ACTIVE', NOW());
-- 创建测试角色
INSERT INTO auth_role (id, name, code, type, created_at) VALUES
('role-admin', '管理员', 'ADMIN', 'SYSTEM', NOW()),
('role-worker', '维修工', 'WORKER', 'CUSTOM', NOW());
-- 分配角色
INSERT INTO auth_user_role (user_id, role_id, project_id) VALUES
('user-admin', 'role-admin', 'proj-test-001'),
('user-worker-1', 'role-worker', 'proj-test-001'),
('user-worker-2', 'role-worker', 'proj-test-001');
-- 创建测试设备
INSERT INTO mdm_equipment (id, project_id, name, code, status, location, created_at) VALUES
('equip-001', 'proj-test-001', '空调-001', 'AC-001', 'NORMAL', 'A栋1楼', NOW()),
('equip-002', 'proj-test-001', '空调-002', 'AC-002', 'NORMAL', 'A栋2楼', NOW());
```
### 4.2 业务数据初始化
```sql
-- 创建测试工单
INSERT INTO ops_work_order (id, project_id, order_type, title, status, priority, creator_id, created_at) VALUES
('wo-001', 'proj-test-001', 'REPAIR', '测试工单001', 'CREATED', 'HIGH', 'user-admin', NOW()),
('wo-002', 'proj-test-001', 'REPAIR', '测试工单002', 'ASSIGNED', 'MEDIUM', 'user-admin', NOW());
-- 创建测试巡检计划
INSERT INTO mdm_inspection_plan (id, project_id, name, cycle_type, status, created_at) VALUES
('plan-001', 'proj-test-001', '日常巡检', 'DAILY', 'ACTIVE', NOW());
-- 创建测试满意度调查
INSERT INTO ops_satisfaction_survey (id, project_id, title, status, created_at) VALUES
('survey-001', 'proj-test-001', '物业服务满意度调查', 'PUBLISHED', NOW());
```
---
## 五、测试执行检查清单
### 5.1 测试前检查
- [ ] 测试环境已部署
- [ ] 测试数据库已初始化
- [ ] 测试账号已创建
- [ ] 测试数据已准备
- [ ] 测试工具已配置
### 5.2 测试中检查
- [ ] 按用例顺序执行
- [ ] 记录实际结果
- [ ] 记录缺陷信息
- [ ] 保存测试日志
### 5.3 测试后检查
- [ ] 所有用例已执行
- [ ] 缺陷已记录
- [ ] 测试报告已生成
- [ ] 测试数据已清理
---
**文档维护**: 本文档随测试执行持续更新,记录测试结果和发现的问题。