- 功能测试清单(前端8大功能模块详细检查点) - 页面访问、查询、新增、编辑、详情、删除、导出、导入 - 后端10个接口测试要点 - 权限测试(菜单权限、按钮权限、数据权限) - 代码审查清单(后端7个方面、前端6个方面、数据库3个方面) - 性能测试建议(查询/写入/导入导出/并发/压力测试) - 部署前检查项(代码/配置/数据/文档/测试/部署) - 验收标准(7个维度) - 验收流程(4个阶段) - Bug分级标准 文件路径: doc/plans/2026-02-06-ccdi_purchase_transaction-verification.md Task 21: 最终验证清单 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
22 KiB
22 KiB
采购交易信息管理 - 最终验证清单
文档信息
- 模块名称: 采购交易信息管理
- 验证时间: 2026-02-06
- 版本: v1.0.0
- 状态: 待验证
目录
功能测试清单
1. 前端功能测试
1.1 页面访问测试
- 登录系统后,左侧菜单显示"CCDI管理"
- "CCDI管理"下显示"采购交易管理"子菜单
- 点击"采购交易管理",页面正常加载
- 页面标题显示"采购交易管理"
- 页面布局完整,无错位、无空白
- 响应式布局在不同分辨率下正常
1.2 查询功能测试
基础查询
- 项目名称模糊查询功能正常
- 标的物名称模糊查询功能正常
- 申请人姓名模糊查询功能正常
- 搜索按钮功能正常
- 重置按钮清空所有查询条件
- 重置后恢复全部数据
日期范围查询
- 日期选择器正常显示
- 选择日期范围后查询结果正确
- 只选开始日期,查询结果正确
- 只选结束日期,查询结果正确
- 开始日期大于结束日期时提示错误
分页查询
- 分页组件正常显示
- 总条数显示正确
- 当前页码显示正确
- 点击页码切换正常
- 修改每页显示条数正常(10/20/50/100)
- 分页数据正确,无重复或遗漏
表格显示
- 表头显示正确
- 数据行显示完整
- 金额字段格式化显示(千分位)
- 日期字段格式化显示(yyyy-MM-dd)
- 文本超长时显示省略号和tooltip
- 空数据时显示"暂无数据"
- 加载时显示loading动画
1.3 新增功能测试
打开新增对话框
- 点击"新增"按钮,对话框正常打开
- 对话框标题显示"添加采购交易"
- 采购事项ID输入框可编辑
- 表单验证规则提示正确
表单填写
- 所有字段输入框正常显示
- 日期选择器功能正常
- 数字输入框可以输入小数
- 文本域可以输入多行文本
- 字段分组(分隔线)显示正确
表单验证
- 采购事项ID为必填项,不填提示错误
- 采购事项ID长度限制32字符
- 项目名称长度限制200字符
- 标的物名称长度限制200字符
- 标的物描述长度限制500字符
- 采购方式长度限制50字符
- 供应商名称长度限制200字符
- 供应商统一信用代码长度限制18字符
- 供应商联系人长度限制50字符
- 供应商联系电话长度限制20字符
- 供应商银行账户长度限制50字符
- 申请人姓名长度限制50字符
- 申请人工号长度限制20字符
- 申请部门长度限制100字符
- 采购负责人姓名长度限制50字符
- 采购负责人工号长度限制20字符
- 采购部门长度限制100字符
提交保存
- 填写完整信息后点击"确定",保存成功
- 成功提示显示"新增成功"
- 对话框自动关闭
- 列表自动刷新,显示新数据
- 数据保存到数据库
取消操作
- 点击"取消"按钮,对话框关闭
- 表单数据清空
- 不影响已有数据
1.4 编辑功能测试
打开编辑对话框
- 点击"编辑"按钮,对话框正常打开
- 对话框标题显示"修改采购交易"
- 表单数据回显正确
- 采购事项ID输入框禁用(不可编辑)
修改数据
- 修改字段后保存成功
- 成功提示显示"修改成功"
- 对话框自动关闭
- 列表自动刷新,显示修改后数据
- 数据库数据正确更新
并发编辑
- 多人同时编辑同一条记录时,后提交的覆盖前面的
- 提示用户数据可能已被修改(如有乐观锁)
1.5 详情功能测试
打开详情对话框
- 点击"详情"按钮,详情对话框正常打开
- 对话框标题显示"采购交易详情"
- 所有字段正确显示
- 空字段显示"-"
详情分组显示
- 基本信息分组显示正确
- 数量与金额分组显示正确
- 供应商信息分组显示正确
- 重要日期分组显示正确
- 申请人信息分组显示正确
- 采购负责人信息分组显示正确
- 审计信息分组显示正确
数据格式化
- 金额显示千分位格式(如:500,000.00)
- 日期显示yyyy-MM-dd格式
- 时间显示yyyy-MM-dd HH:mm:ss格式
- 描述文本换行显示
关闭详情
- 点击"关闭"按钮,对话框关闭
- 点击对话框外部,对话框关闭
1.6 删除功能测试
单条删除
- 点击"删除"按钮,确认对话框显示
- 确认对话框显示正确的purchaseId
- 点击"确定",删除成功
- 成功提示显示"删除成功"
- 列表自动刷新,数据已删除
- 数据库数据已删除
批量删除
- 勾选多条记录,"删除"按钮可点击
- 点击"删除",确认对话框显示
- 确认对话框显示所有选中的purchaseId
- 点击"确定",批量删除成功
- 列表自动刷新,数据已删除
- 数据库数据已删除
删除取消
- 点击"取消",不删除数据
- 对话框关闭
- 数据保持不变
1.7 导出功能测试
全部导出
- 点击"导出"按钮
- 浏览器下载Excel文件
- 文件名格式:采购交易_时间戳.xlsx
- 文件可以正常打开
条件导出
- 设置查询条件后点击"导出"
- 只导出符合条件的数据
- 导出数据数量正确
Excel格式验证
- 表头正确(使用@Excel注解定义的名称)
- 金额列格式为数字,保留2位小数
- 日期列格式为yyyy-MM-dd
- 字典列显示字典标签而非值
- 数据完整,无遗漏
- 数据顺序与列表一致
大数据量导出
- 导出1000条数据,时间<5秒
- 导出10000条数据,时间<30秒
- 导出过程不卡顿
1.8 导入功能测试
下载模板
- 点击"导入"按钮,导入对话框打开
- 点击"下载模板"链接
- 浏览器下载模板文件
- 文件名格式:采购交易导入模板_时间戳.xlsx
- 模板包含所有字段
- 字典字段包含下拉框(使用@DictDropdown)
填写模板
- 使用下拉框选择字典值
- 填写各种类型的测试数据
- 日期格式正确
- 金额格式正确
- 文本长度符合要求
导入数据
- 上传Excel文件
- 文件格式验证(.xlsx或.xls)
- 显示上传进度
- 提交导入任务
- 提示"导入任务已提交"
- 返回taskId
异步导入
- 导入不阻塞界面
- 显示"正在导入数据,请稍候..."提示
- 提示不会自动关闭
导入状态轮询
- 每2秒查询一次导入状态
- 状态变化:pending -> running -> completed
- 导入完成后提示自动关闭
- 显示导入结果对话框
导入结果显示
- 显示"导入完成!"标题
- 显示成功数量
- 显示失败数量
- 失败记录显示行号
- 失败记录显示错误信息
- 失败记录列表可滚动
- 列表自动刷新
导入成功验证
- 数据导入到数据库
- 数据内容正确
- 字典值正确
- 日期格式正确
- 金额数值正确
导入失败验证
- 必填字段缺失,导入失败
- 字段长度超限,导入失败
- 数据格式错误,导入失败
- purchaseId重复,按updateSupport参数处理
- 失败原因准确描述
更新已有数据
- 勾选"是否更新"选项
- purchaseId重复时更新数据
- 不勾选时跳过重复数据
批量导入性能
- 导入100条数据 < 2秒
- 导入1000条数据 < 10秒
- 导入5000条数据 < 60秒
2. 后端接口测试
2.1 查询接口测试
GET /ccdi/purchaseTransaction/list
- 无参数调用,返回第一页10条数据
- 传入pageNum和pageSize,分页正确
- 传入projectName,模糊查询正确
- 传入subjectName,模糊查询正确
- 传入applicantName,模糊查询正确
- 传入日期范围,过滤正确
- 组合多个条件,查询正确
- 无数据时,返回空列表
- 返回total数量正确
- 响应时间 < 500ms
2.2 详情接口测试
GET /ccdi/purchaseTransaction/{purchaseId}
- 传入存在的purchaseId,返回正确数据
- 所有字段都有值
- 日期格式正确
- 金额精度正确
- 传入不存在的purchaseId,返回null或提示
- purchaseId为null或空,返回错误
- 响应时间 < 200ms
2.3 新增接口测试
POST /ccdi/purchaseTransaction
- 传入完整数据,保存成功
- 必填字段验证生效
- 字段长度验证生效
- 数据类型验证生效
- purchaseId重复,保存失败
- 审计字段自动填充
- 返回正确的响应码
- 响应时间 < 200ms
2.4 修改接口测试
PUT /ccdi/purchaseTransaction
- 传入完整数据,更新成功
- purchaseId必填验证生效
- purchaseId不存在,更新失败
- 只修改部分字段,其他字段不变
- 更新时间自动更新
- 更新人自动填充
- 返回正确的响应码
- 响应时间 < 200ms
2.5 删除接口测试
DELETE /ccdi/purchaseTransaction/{purchaseIds}
- 删除单条数据,成功
- 删除多条数据(逗号分隔),成功
- 删除不存在的数据,不影响存在的数据
- purchaseId为空,返回错误
- 数据库数据已删除
- 返回正确的响应码
- 响应时间 < 200ms
2.6 导出接口测试
POST /ccdi/purchaseTransaction/export
- 无条件导出,导出所有数据
- 有条件导出,导出符合条件的数据
- 返回Excel文件流
- Content-Type正确
- 文件名正确
- 响应时间 < 2000ms(1000条)
2.7 导入模板接口测试
POST /ccdi/purchaseTransaction/importTemplate
- 返回Excel文件流
- 文件包含所有字段
- 字典字段包含下拉框
- 下拉框选项正确
- 表头格式正确
2.8 导入数据接口测试
POST /ccdi/purchaseTransaction/importData
- 上传正确的Excel文件,导入成功
- 返回taskId
- updateSupport=false,重复数据跳过
- updateSupport=true,重复数据更新
- 文件格式错误,返回错误
- 数据验证失败,记录失败原因
- 异步执行,不阻塞
- 响应时间 < 500ms(提交任务)
2.9 导入状态接口测试
GET /ccdi/purchaseTransaction/importStatus/{taskId}
- 返回任务状态
- 状态包括:pending/running/completed/failed
- 返回total/successCount/failureCount
- taskId不存在,返回错误
- 响应时间 < 100ms
2.10 导入失败记录接口测试
GET /ccdi/purchaseTransaction/importFailures/{taskId}
- 返回失败记录列表
- 每条记录包含purchaseId/rowNum/errorMessage
- 错误信息准确描述失败原因
- 无失败记录时返回空列表
- 响应时间 < 200ms
3. 权限测试
3.1 菜单权限
- 有权限的用户可以看到菜单
- 无权限的用户看不到菜单
- 分配权限后,刷新立即生效
3.2 按钮权限
- 有list权限,可以查询
- 有query权限,可以查看详情
- 有add权限,可以新增
- 有edit权限,可以编辑
- 有remove权限,可以删除
- 有export权限,可以导出
- 有import权限,可以导入
- 无权限时,按钮不显示
- 直接访问接口,返回403
3.3 数据权限
- 本部门数据权限
- 本部门及以下数据权限
- 仅本人数据权限
- 自定义数据权限
- 全部数据权限
代码审查清单
1. 后端代码审查
1.1 Controller层
- 所有接口都有Swagger注解
- 接口描述清晰准确
- 参数说明完整
- 权限注解正确(@PreAuthorize)
- 日志注解正确(@Log)
- 参数验证注解正确(@Validated)
- 异常处理正确
- 响应格式统一(AjaxResult)
- 代码格式规范
- 注释清晰完整
1.2 Service层
- 使用@Resource注解,而非@Autowired
- 方法命名规范(select/insert/update/delete)
- 业务逻辑清晰
- 事务处理正确
- 异常处理正确
- 代码复用性高
- 方法单一职责
1.3 Mapper层
- 继承BaseMapper
- 使用MyBatis Plus注解
- 复杂查询使用XML配置
- SQL语句优化
- 使用预编译语句
1.4 Entity层
- 使用@Data注解
- 不继承BaseEntity
- 审计字段使用@TableField(fill = FieldFill.INSERT/INSERT_UPDATE)
- 主键使用@TableId(type = IdType.INPUT)
- 字段类型正确
- 字段长度合理
- 序列化支持
1.5 DTO/VO层
- DTO用于接口参数
- VO用于返回数据
- 不与Entity混用
- 验证注解完整
- 字段说明完整
1.6 Excel导入导出
- 使用@Excel注解定义导出
- 使用@DictDropdown注解添加下拉框
- 日期格式正确
- 金额格式正确
- 字典转换正确
- 数据验证正确
1.7 异步导入
- 使用@Async注解
- 线程池配置合理
- 任务ID生成唯一
- 状态管理正确
- 失败记录保存完整
- 异常处理完善
2. 前端代码审查
2.1 API文件
- 接口定义完整
- 请求方法正确
- 参数传递正确
- 错误处理正确
- Token自动添加
2.2 页面组件
- 组件结构清晰
- 数据流向清晰
- 方法命名规范
- 事件处理正确
- 生命周期钩子使用正确
2.3 表单验证
- 验证规则完整
- 验证提示清晰
- 必填项验证
- 长度验证
- 格式验证
2.4 权限控制
- 使用v-hasPermi指令
- 权限标识正确
- 按钮显隐控制
- 接口权限验证
2.5 用户体验
- Loading提示
- 成功提示
- 错误提示
- 确认对话框
- 操作反馈及时
2.6 代码规范
- 缩进一致
- 命名规范
- 注释清晰
- 无重复代码
- 组件复用
3. 数据库设计审查
3.1 表结构
- 表名符合规范(ccdi_开头)
- 主键设计合理
- 字段类型正确
- 字段长度合理
- 默认值合理
- 非空约束合理
- 索引设计合理
3.2 审计字段
- create_time自动填充
- update_time自动更新
- created_by自动填充
- updated_by自动填充
3.3 数据字典
- 字典类型定义
- 字典数据完整
- 字典排序正确
性能测试建议
1. 查询性能测试
1.1 分页查询
- 1000条数据,查询时间 < 200ms
- 10000条数据,查询时间 < 500ms
- 100000条数据,查询时间 < 1000ms
- 复杂条件查询 < 500ms
1.2 详情查询
- 单条详情查询 < 100ms
- 并发查询100次,平均响应 < 200ms
2. 写入性能测试
2.1 单条插入
- 单条插入 < 100ms
- 单条更新 < 100ms
- 单条删除 < 100ms
2.2 批量插入
- 批量插入100条 < 500ms
- 批量插入1000条 < 2000ms
- 批量插入5000条 < 10000ms
3. 导入导出性能测试
3.1 导出性能
- 导出100条 < 1秒
- 导出1000条 < 5秒
- 导出10000条 < 30秒
- 导出50000条 < 120秒
3.2 导入性能
- 导入100条 < 2秒
- 导入1000条 < 10秒
- 导入5000条 < 60秒
- 导入10000条 < 120秒
4. 并发性能测试
4.1 查询并发
- 100个并发用户查询列表,平均响应 < 500ms
- 100个并发用户查询详情,平均响应 < 200ms
4.2 写入并发
- 10个并发用户同时新增,成功率 > 95%
- 10个并发用户同时修改,成功率 > 95%
- 无数据冲突
4.3 导入导出并发
- 10个并发用户同时导出,全部成功
- 10个并发用户同时导入,全部成功
- 服务器稳定,无内存泄漏
5. 压力测试
5.1 持续压力
- 持续运行1小时,无内存泄漏
- 持续运行1小时,响应时间稳定
- 持续运行1小时,错误率 < 0.1%
5.2 峰值压力
- 500个并发用户,系统稳定
- 1000个并发用户,系统不崩溃
- 峰值过后,性能恢复正常
部署前检查项
1. 代码检查
1.1 代码质量
- 无编译错误
- 无警告信息
- 代码格式规范
- 无调试代码
- 无TODO未完成项
1.2 代码安全
- 无SQL注入风险
- 无XSS漏洞
- 无CSRF漏洞
- 敏感信息加密
- 权限控制完善
1.3 代码优化
- 无重复代码
- 算法优化
- 查询优化
- 缓存使用
2. 配置检查
2.1 数据库配置
- 连接池配置合理
- 字符集配置正确(UTF-8)
- 时区配置正确
- 索引创建完成
2.2 应用配置
- 端口配置正确
- 上下文路径正确
- 文件上传配置
- 文件大小限制
2.3 日志配置
- 日志级别正确
- 日志文件路径
- 日志滚动策略
- 敏感信息过滤
3. 数据检查
3.1 数据字典
- 字典类型创建
- 字典数据导入
- 字典排序正确
3.2 菜单权限
- 菜单SQL执行
- 菜单显示正确
- 权限分配正确
- 角色关联正确
3.3 测试数据
- 准备测试数据
- 数据多样性
- 边界情况数据
4. 文档检查
4.1 API文档
- Swagger注解完整
- 接口文档生成
- 参数说明完整
- 响应示例完整
4.2 用户文档
- 功能说明文档
- 操作手册
- 常见问题
- 测试说明
4.3 开发文档
- 设计文档
- 数据库设计
- 接口文档
- 部署文档
5. 测试检查
5.1 功能测试
- 所有功能测试通过
- 测试用例覆盖率 > 80%
- Bug全部修复
5.2 性能测试
- 性能指标达标
- 无性能瓶颈
- 压力测试通过
5.3 安全测试
- 权限测试通过
- 注入测试通过
- 越权测试通过
6. 部署检查
6.1 环境准备
- JDK版本正确
- 数据库版本正确
- 依赖安装完整
- 端口未被占用
6.2 配置文件
- application.yml配置正确
- 数据库连接配置
- Redis配置(如使用)
- 日志配置
6.3 部署步骤
- 编译打包成功
- 文件上传完整
- 数据库脚本执行
- 服务启动成功
- 健康检查通过
验收标准
1. 功能完整性
- 所有需求功能已实现
- 所有接口测试通过
- 所有前端功能测试通过
- 无P0级Bug
- P1级Bug < 3个
2. 数据正确性
- 数据保存完整
- 数据查询准确
- 数据更新成功
- 数据删除正确
- 数据导入导出正确
3. 性能要求
- 分页查询 < 500ms
- 单条CRUD < 200ms
- 导入1000条 < 10秒
- 导出1000条 < 5秒
- 并发100用户,响应 < 500ms
4. 用户体验
- 界面美观大方
- 操作简单直观
- 响应及时流畅
- 提示清晰准确
- 错误处理友好
5. 安全性
- 权限控制严格
- 数据传输加密
- 敏感信息保护
- 日志记录完整
- 异常处理完善
6. 稳定性
- 系统运行稳定
- 无内存泄漏
- 无死锁
- 异常恢复正常
- 长期运行稳定
7. 可维护性
- 代码规范统一
- 注释清晰完整
- 结构清晰合理
- 文档完整详细
- 易于扩展
8. 兼容性
- 浏览器兼容(Chrome、Firefox、Edge)
- 分辨率兼容(1920x1080、1366x768)
- 数据库兼容(MySQL 8.0+)
- JDK兼容(JDK 17+)
验收流程
1. 开发团队自测
- 功能测试完成
- 性能测试完成
- Bug修复完成
- 代码审查完成
2. 测试团队测试
- 功能测试通过
- 性能测试通过
- 安全测试通过
- 兼容性测试通过
3. 业务团队验收
- 功能验收通过
- 用户体验验收通过
- 数据准确性验收通过
4. 上线准备
- 部署文档完成
- 操作手册完成
- 培训材料完成
- 应急预案完成
验收签字
| 角色 | 姓名 | 签字 | 日期 |
|---|---|---|---|
| 开发负责人 | |||
| 测试负责人 | |||
| 业务负责人 | |||
| 项目经理 |
附录
A. Bug分级标准
P0级(致命):
- 系统崩溃
- 数据丢失
- 安全漏洞
P1级(严重):
- 主要功能无法使用
- 数据错误
- 性能严重下降
P2级(一般):
- 次要功能异常
- 用户体验差
- 界面问题
P3级(轻微):
- 文字错误
- 样式问题
- 建议性改进
B. 测试环境
开发环境:
- 地址: http://dev.example.com
- 数据库: dev_db
- 用于开发自测
测试环境:
- 地址: http://test.example.com
- 数据库: test_db
- 用于测试团队测试
预生产环境:
- 地址: http://pre.example.com
- 数据库: pre_db
- 用于业务验收
C. 联系方式
| 角色 | 姓名 | 邮箱 | 电话 |
|---|---|---|---|
| 开发负责人 | |||
| 测试负责人 | |||
| 业务负责人 | |||
| 运维负责人 |
文档版本: v1.0.0 最后更新: 2026-02-06 更新人员: ruoyi