ether-docs/06-TESTING/cases/E2E_SPACE_NODE_TEST_CASES.md

13 KiB
Raw Blame History

空间节点管理测试用例文档

文档版本v1.0 创建日期2026-02-16 适用范围空间节点管理模块MDM服务


一、集成测试用例API 层面)

1.1 基础 CRUD 测试

用例编号 用例名称 接口 请求参数 预期结果
IT-001 创建楼栋 POST /api/v1/mdm/space-nodes {name: "1号楼", nodeType: "BUILDING", projectId: "xxx"} 返回 200treePath 正确nodeCode 自动生成
IT-002 创建单元 POST /api/v1/mdm/space-nodes {name: "1单元", nodeType: "UNIT", parentId: "楼栋ID"} parentId 关联正确treePath 包含父节点
IT-003 创建房间 POST /api/v1/mdm/space-nodes {name: "101", nodeType: "ROOM", parentId: "单元ID"} 层级关系正确treePath 完整
IT-004 查询树形结构 GET /api/v1/mdm/space-nodes/tree projectId=xxx 返回完整树形结构,包含所有层级
IT-005 删除节点(无子节点) DELETE /api/v1/mdm/space-nodes/{id} 叶子节点ID 返回 200节点删除成功
IT-006 删除节点(有子节点) DELETE /api/v1/mdm/space-nodes/{id} 有子节点的ID 返回 400提示"存在子节点,无法删除"
IT-007 更新节点信息 PUT /api/v1/mdm/space-nodes/{id} {name: "新名称"} 返回 200信息更新成功
IT-008 查询节点详情 GET /api/v1/mdm/space-nodes/{id} 节点ID 返回完整节点信息,包含父节点名称

1.2 批量操作测试

用例编号 用例名称 接口 请求参数 预期结果
IT-010 批量创建楼栋 POST /api/v1/mdm/space-nodes/batch 17个楼栋数据 17个楼栋全部创建成功返回创建列表
IT-011 批量创建房间 POST /api/v1/mdm/space-nodes/batch 24层 x 4户 = 96个房间数据 96个房间批量创建成功treePath 正确
IT-012 自动编码-楼栋 POST /api/v1/mdm/space-nodes/generate-code {nodeType: "BUILDING", projectId: "xxx"} 返回 B001, B002 等编码
IT-013 自动编码-单元 POST /api/v1/mdm/space-nodes/generate-code {nodeType: "UNIT", parentId: "楼栋ID"} 返回 U1, U2 等编码
IT-014 自动编码-房间 POST /api/v1/mdm/space-nodes/generate-code {nodeType: "ROOM", parentId: "单元ID", floor: 1} 返回 101, 102 等编码
IT-015 批量删除 DELETE /api/v1/mdm/space-nodes/batch 多个叶子节点ID列表 全部删除成功

1.2.1 编码规则配置测试

用例编号 用例名称 接口 请求参数 预期结果
IT-016 获取编码规则配置 GET /api/v1/mdm/space-nodes/code-rules projectId=xxx 返回所有节点类型的编码规则配置
IT-017 更新编码规则配置 PUT /api/v1/mdm/space-nodes/code-rules {nodeType: "BUILDING", prefix: "A", sequenceDigits: 3} 返回 200配置更新成功
IT-018 自定义前缀编码 POST /api/v1/mdm/space-nodes/batch {prefix: "A8", sequenceDigits: 3, count: 5} 生成 A8001, A8002, A8003...
IT-019 编码预览 POST /api/v1/mdm/space-nodes/code-preview {prefix: "B", sequenceDigits: 2, count: 5} 返回 B01, B02, B03, B04, B05

1.3 项目统计测试

用例编号 用例名称 接口 预期结果
IT-020 楼栋数统计 GET /api/v1/mdm/space-nodes/stats COUNT(node_type='BUILDING') 与实际数量一致
IT-021 户数统计 GET /api/v1/mdm/space-nodes/stats COUNT(node_type='ROOM') 与实际数量一致
IT-022 车位数统计 GET /api/v1/mdm/space-nodes/stats COUNT(node_type='PARKING_SPACE') 与实际数量一致
IT-023 按项目统计 GET /api/v1/mdm/space-nodes/stats?projectId=xxx 返回指定项目的统计数据
IT-024 按类型统计 GET /api/v1/mdm/space-nodes/stats?nodeType=BUILDING 返回指定类型的数量

1.4 异常处理测试

用例编号 用例名称 接口 异常场景 预期结果
IT-030 创建节点-无效类型 POST /api/v1/mdm/space-nodes nodeType: "INVALID" 返回 400参数校验失败
IT-031 创建节点-缺少必填项 POST /api/v1/mdm/space-nodes 缺少 namenodeType 返回 400提示必填项缺失
IT-032 创建节点-父节点不存在 POST /api/v1/mdm/space-nodes parentId: "不存在的ID" 返回 400父节点不存在
IT-033 创建节点-层级不匹配 POST /api/v1/mdm/space-nodes ROOM 的父节点是 BUILDING跳过 UNIT 返回 400层级关系错误
IT-034 查询节点-不存在 GET /api/v1/mdm/space-nodes/{id} 不存在的ID 返回 404节点不存在
IT-035 重复节点名称 POST /api/v1/mdm/space-nodes 同一父节点下相同名称 返回 400名称重复

1.5 权限控制测试

用例编号 用例名称 接口 权限场景 预期结果
IT-040 无权限创建 POST /api/v1/mdm/space-nodes mdm:space:create 权限 返回 403权限不足
IT-041 无权限删除 DELETE /api/v1/mdm/space-nodes/{id} mdm:space:delete 权限 返回 403权限不足
IT-042 跨项目访问 GET /api/v1/mdm/space-nodes/{id} 访问其他项目的节点 返回 403无权访问
IT-043 只读用户查询 GET /api/v1/mdm/space-nodes/tree 仅有查看权限 返回 200可正常查询

二、E2E 测试用例(用户操作层面)

2.1 页面导航测试

用例编号 用例名称 前置条件 操作步骤 预期结果
E2E-001 进入空间管理 已登录管理员账号 项目详情页 -> 点击"空间管理"标签 显示空间管理页面,包含树形导航和详情面板
E2E-002 树形导航展开 空间管理页面 点击楼栋节点展开图标 展开显示该楼栋下的所有单元
E2E-003 树形导航收起 已展开的树节点 点击收起图标 子节点收起隐藏
E2E-004 节点搜索 空间管理页面 在搜索框输入"1号楼" 树形结构高亮显示匹配节点
E2E-005 节点定位 搜索结果列表 点击搜索结果项 树形结构自动展开并定位到该节点

2.2 空间管理操作测试

用例编号 用例名称 前置条件 操作步骤 预期结果
E2E-010 创建楼栋 空间管理页面 1. 点击"新增楼栋"按钮
2. 填写楼栋名称"测试楼栋A"
3. 点击"保存"
楼栋创建成功,树形结构自动刷新显示新楼栋
E2E-011 创建单元 已有楼栋 1. 选择楼栋节点
2. 点击"新增单元"
3. 填写单元名称"1单元"
4. 点击"保存"
单元创建成功,显示在楼栋下
E2E-012 创建房间 已有单元 1. 选择单元节点
2. 点击"新增房间"
3. 填写房间信息
4. 点击"保存"
房间创建成功
E2E-013 批量生成房间 已有楼栋 1. 选择楼栋节点
2. 点击"批量生成"
3. 输入楼层数24、每层户数4
4. 点击"确认"
96个房间批量创建成功显示成功提示
E2E-014 编辑节点 已有节点 1. 选择节点
2. 点击"编辑"
3. 修改名称
4. 点击"保存"
节点信息更新成功
E2E-015 删除节点 叶子节点 1. 选择叶子节点
2. 点击"删除"
3. 确认删除
节点删除成功,树形结构更新
E2E-016 删除有子节点的节点 有子节点的节点 1. 选择有子节点的节点
2. 点击"删除"
提示"存在子节点,无法删除"

2.3 批量导入测试

用例编号 用例名称 前置条件 操作步骤 预期结果
E2E-020 下载楼栋模板 空间管理页面 1. 点击"导入"按钮
2. 选择"楼栋模板"
3. 点击"下载模板"
Excel 文件下载成功,包含正确模板格式
E2E-021 导入楼栋 已下载模板 1. 填写楼栋数据
2. 上传 Excel 文件
3. 点击"确认导入"
显示导入结果,成功数量和失败原因
E2E-022 下载房间模板 空间管理页面 1. 点击"导入"按钮
2. 选择"房间模板"
3. 点击"下载模板"
Excel 文件下载成功
E2E-023 导入房间 已下载模板 1. 填写房间数据
2. 上传 Excel 文件
3. 点击"确认导入"
显示导入结果
E2E-024 导入错误数据 错误格式的Excel 上传格式错误的文件 显示错误提示,不执行导入
E2E-025 导入部分失败 部分数据有误 上传包含错误数据的文件 显示成功和失败明细,失败记录说明原因

2.4 数据展示测试

用例编号 用例名称 前置条件 操作步骤 预期结果
E2E-030 查看节点详情 空间管理页面 点击任意节点 右侧面板显示节点详细信息
E2E-031 查看统计数据 空间管理页面 查看页面顶部统计区域 显示楼栋数、户数、车位数等统计
E2E-032 分页展示 节点列表超过20条 查看列表底部 显示分页控件,可翻页
E2E-033 排序功能 节点列表 点击列标题排序 列表按指定字段排序
E2E-034 筛选功能 节点列表 选择筛选条件 列表按条件过滤显示

2.5 异常场景测试

用例编号 用例名称 前置条件 操作步骤 预期结果
E2E-040 网络中断保存 编辑节点时 断开网络后点击保存 显示网络错误提示,数据不丢失
E2E-041 重复提交 创建节点时 快速连续点击保存按钮 只创建一个节点,防止重复提交
E2E-042 会话超时 长时间未操作 会话过期后操作 跳转登录页面,提示会话已过期
E2E-043 并发编辑 两人同时编辑 两个用户同时编辑同一节点 后保存者提示数据已被修改

三、测试数据

3.1 标准测试项目

{
  "project": {
    "id": "test-project-001",
    "name": "测试小区",
    "buildings": 17,
    "floorsPerBuilding": 24,
    "roomsPerFloor": 4,
    "parkingSpaces": 100
  },
  "expected": {
    "totalBuildings": 17,
    "totalUnits": 34,
    "totalRooms": 1632,
    "totalParkingSpaces": 100
  }
}

3.2 楼栋测试数据

{
  "buildings": [
    { "name": "1号楼", "nodeType": "BUILDING", "nodeCode": "B001" },
    { "name": "2号楼", "nodeType": "BUILDING", "nodeCode": "B002" },
    { "name": "3号楼", "nodeType": "BUILDING", "nodeCode": "B003" }
  ]
}

3.3 单元测试数据

{
  "units": [
    { "name": "1单元", "nodeType": "UNIT", "nodeCode": "U1", "parentCode": "B001" },
    { "name": "2单元", "nodeType": "UNIT", "nodeCode": "U2", "parentCode": "B001" }
  ]
}

3.4 房间测试数据

{
  "rooms": [
    { "name": "101", "nodeType": "ROOM", "nodeCode": "101", "floor": 1, "parentCode": "U1" },
    { "name": "102", "nodeType": "ROOM", "nodeCode": "102", "floor": 1, "parentCode": "U1" },
    { "name": "201", "nodeType": "ROOM", "nodeCode": "201", "floor": 2, "parentCode": "U1" },
    { "name": "2401", "nodeType": "ROOM", "nodeCode": "2401", "floor": 24, "parentCode": "U1" }
  ]
}

3.5 车位测试数据

{
  "parkingSpaces": [
    { "name": "A-001", "nodeType": "PARKING_SPACE", "nodeCode": "P001" },
    { "name": "A-002", "nodeType": "PARKING_SPACE", "nodeCode": "P002" }
  ]
}

四、测试执行说明

4.1 集成测试执行

# 执行所有空间节点集成测试
cd ether-mdm
./mvnw test -Dtest=SpaceNodeIntegrationTest

# 执行特定测试用例
./mvnw test -Dtest=SpaceNodeIntegrationTest#testCreateBuilding

4.2 E2E 测试执行

# 启动所有服务
./scripts/start-all-services.sh

# 执行 E2E 测试
cd e2e-tests
npx playwright test space-node.spec.ts

4.3 测试数据准备

-- 执行测试数据初始化
psql -U postgres -d ether_mdm -f docs/08-DATABASE/test-data-mdm.sql

五、测试报告模板

5.1 测试执行摘要

测试类型 用例总数 通过数 失败数 通过率
集成测试 25 - - -
E2E 测试 30 - - -
合计 55 - - -

5.2 缺陷统计

缺陷等级 数量 已修复 待修复
严重 - - -
- - -
- - -
- - -

六、附录

6.1 节点类型枚举

类型 编码 说明
项目 PROJECT 根节点
楼栋 BUILDING 楼栋节点
单元 UNIT 单元节点
楼层 FLOOR 楼层节点(可选)
房间 ROOM 房间节点
车位 PARKING_SPACE 车位节点
公共区域 PUBLIC_AREA 公共区域节点

6.2 层级关系约束

PROJECT -> BUILDING -> UNIT -> ROOM
PROJECT -> BUILDING -> FLOOR -> ROOM
PROJECT -> PARKING_SPACE
PROJECT -> PUBLIC_AREA

6.3 编码规则

节点类型 编码前缀 示例
楼栋 B B001, B002
单元 U U1, U2
房间 楼层+序号 101, 2401
车位 P P001, P002