文件夹整理
This commit is contained in:
@@ -0,0 +1,379 @@
|
||||
# 中介库导入失败记录清除功能测试报告
|
||||
|
||||
**测试日期:** 2026-02-08
|
||||
**测试人员:** 待指定
|
||||
**测试环境:** 开发环境 (localhost)
|
||||
**功能版本:** v1.0
|
||||
|
||||
---
|
||||
|
||||
## 一、测试概述
|
||||
|
||||
### 1.1 测试目标
|
||||
|
||||
验证在用户重新提交导入时,系统能够自动清除上一次导入失败记录的 localStorage 数据和页面按钮显示状态。
|
||||
|
||||
### 1.2 测试范围
|
||||
|
||||
- ✅ Task 1: ImportDialog.vue 触发清除历史记录事件
|
||||
- ✅ Task 2: index.vue 添加事件监听
|
||||
- ✅ Task 3: index.vue 添加事件处理方法
|
||||
|
||||
### 1.3 涉及文件
|
||||
|
||||
- `ruoyi-ui/src/views/ccdiIntermediary/components/ImportDialog.vue`
|
||||
- `ruoyi-ui/src/views/ccdiIntermediary/index.vue`
|
||||
|
||||
---
|
||||
|
||||
## 二、测试环境准备
|
||||
|
||||
### 2.1 启动前端开发服务器
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
npm run dev
|
||||
```
|
||||
|
||||
**预期结果:** 服务器正常运行在 `http://localhost`
|
||||
|
||||
### 2.2 登录系统
|
||||
|
||||
- 访问: `http://localhost`
|
||||
- 用户名: `admin`
|
||||
- 密码: `admin123`
|
||||
|
||||
### 2.3 导航到中介库管理页面
|
||||
|
||||
点击菜单: **中介库管理** → **中介黑名单**
|
||||
|
||||
---
|
||||
|
||||
## 三、详细测试步骤
|
||||
|
||||
### 测试场景 1: 个人中介导入失败记录清除
|
||||
|
||||
**目的:** 验证重新导入个人中介时能够清除上一次的失败记录
|
||||
|
||||
**步骤:**
|
||||
|
||||
1. 准备一份包含错误数据的个人中介导入文件
|
||||
- 文件格式: `.xlsx` 或 `.xls`
|
||||
- 确保至少有 1-2 条数据存在错误(如身份证号格式错误、必填字段缺失等)
|
||||
|
||||
2. 点击"导入"按钮
|
||||
|
||||
3. 确认导入类型为"个人中介"(默认)
|
||||
|
||||
4. 上传准备好的文件
|
||||
|
||||
5. 点击"开始导入"按钮
|
||||
|
||||
6. 等待导入完成(会有通知提示导入完成)
|
||||
|
||||
7. **验证点 1:** 确认页面上显示"查看个人导入失败记录"按钮
|
||||
- 预期: 按钮显示在工具栏中
|
||||
|
||||
8. 点击"查看个人导入失败记录"按钮
|
||||
|
||||
9. **验证点 2:** 确认能看到失败记录列表
|
||||
- 预期: 弹出对话框,显示失败的记录和失败原因
|
||||
|
||||
10. 关闭失败记录对话框
|
||||
|
||||
11. 再次点击"导入"按钮
|
||||
|
||||
12. 选择任意文件(可以是正确的文件,也可以是包含错误的文件)
|
||||
|
||||
13. **关键步骤:** 点击"开始导入"按钮
|
||||
|
||||
14. **验证点 3:** "查看个人导入失败记录"按钮应该立即消失
|
||||
- 预期: 按钮在点击"开始导入"后立即从页面上消失
|
||||
- 验证时机: 在新导入完成前就能看到效果
|
||||
|
||||
15. 等待新导入完成
|
||||
|
||||
16. **验证点 4:** 如果新导入有失败,确认显示的是新的失败记录
|
||||
- 预期: 失败记录列表中显示的是新导入的失败数据
|
||||
|
||||
**测试结果:** ⬜ 通过 ⬜ 失败
|
||||
|
||||
**备注:**
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 2: 实体中介导入失败记录清除
|
||||
|
||||
**目的:** 验证重新导入实体中介时能够清除上一次的失败记录
|
||||
|
||||
**步骤:**
|
||||
|
||||
1. 准备一份包含错误数据的实体中介导入文件
|
||||
- 文件格式: `.xlsx` 或 `.xls`
|
||||
- 确保至少有 1-2 条数据存在错误(如统一社会信用代码格式错误、必填字段缺失等)
|
||||
|
||||
2. 点击"导入"按钮
|
||||
|
||||
3. 切换到"机构中介"标签
|
||||
|
||||
4. 上传准备好的文件
|
||||
|
||||
5. 点击"开始导入"按钮
|
||||
|
||||
6. 等待导入完成
|
||||
|
||||
7. **验证点 1:** 确认页面上显示"查看实体导入失败记录"按钮
|
||||
|
||||
8. 点击"查看实体导入失败记录"按钮
|
||||
|
||||
9. **验证点 2:** 确认能看到失败记录列表
|
||||
|
||||
10. 关闭失败记录对话框
|
||||
|
||||
11. 再次点击"导入"按钮,选择任意文件
|
||||
|
||||
12. **关键步骤:** 点击"开始导入"按钮
|
||||
|
||||
13. **验证点 3:** "查看实体导入失败记录"按钮应该立即消失
|
||||
|
||||
**测试结果:** ⬜ 通过 ⬜ 失败
|
||||
|
||||
**备注:**
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 3: 两种类型互不影响
|
||||
|
||||
**目的:** 验证个人和实体中介的导入记录清除操作互不干扰
|
||||
|
||||
**步骤:**
|
||||
|
||||
1. 导入个人中介数据(确保有失败记录)
|
||||
- 点击"导入" → 选择"个人中介" → 上传文件 → 点击"开始导入"
|
||||
- 等待导入完成
|
||||
|
||||
2. **验证点 1:** 确认显示"查看个人导入失败记录"按钮
|
||||
|
||||
3. 导入实体中介数据(确保有失败记录)
|
||||
- 点击"导入" → 选择"机构中介" → 上传文件 → 点击"开始导入"
|
||||
- 等待导入完成
|
||||
|
||||
4. **验证点 2:** 确认两个按钮都显示
|
||||
- 预期: "查看个人导入失败记录"和"查看实体导入失败记录"按钮同时显示
|
||||
|
||||
5. 重新导入个人中介
|
||||
- 点击"导入" → 选择"个人中介" → 选择文件 → 点击"开始导入"
|
||||
|
||||
6. **验证点 3:** 只清除个人中介的失败记录按钮
|
||||
- 预期: "查看个人导入失败记录"按钮消失
|
||||
- 预期: "查看实体导入失败记录"按钮仍然显示
|
||||
|
||||
7. 重新导入实体中介
|
||||
- 点击"导入" → 选择"机构中介" → 选择文件 → 点击"开始导入"
|
||||
|
||||
8. **验证点 4:** 只清除实体中介的失败记录按钮
|
||||
- 预期: "查看实体导入失败记录"按钮消失
|
||||
- 预期: "查看个人导入失败记录"按钮不会重新出现(因为已在步骤5中清除)
|
||||
|
||||
**测试结果:** ⬜ 通过 ⬜ 失败
|
||||
|
||||
**备注:**
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 4: 边界情况测试
|
||||
|
||||
**目的:** 验证特殊情况下功能的稳定性
|
||||
|
||||
**步骤:**
|
||||
|
||||
1. **子场景 4.1: 导入全部成功,无失败记录**
|
||||
- 准备一份完全正确的导入文件
|
||||
- 执行导入操作
|
||||
- **验证点:** 确认不显示失败记录按钮
|
||||
- 再次导入其他数据
|
||||
- **验证点:** 确认不影响任何状态,页面正常工作
|
||||
|
||||
2. **子场景 4.2: localStorage 数据过期**
|
||||
- 导入数据(有失败),确认按钮显示
|
||||
- 打开浏览器开发者工具(F12)
|
||||
- 进入 Application → Local Storage
|
||||
- 手动修改 `intermediary_person_import_last_task` 的 `saveTime` 为过期时间(如7天前)
|
||||
- 刷新页面
|
||||
- **验证点:** 确认按钮不显示(数据已过期)
|
||||
- 重新导入数据
|
||||
- **验证点:** 导入正常进行,不受localStorage过期影响
|
||||
|
||||
3. **子场景 4.3: 浏览器控制台无错误**
|
||||
- 打开浏览器开发者工具(F12)
|
||||
- 切换到 Console 标签
|
||||
- 执行所有导入操作
|
||||
- **验证点:** 确认 Console 没有错误日志
|
||||
|
||||
4. **子场景 4.4: localStorage 数据验证**
|
||||
- 执行导入操作(有失败)
|
||||
- 打开开发者工具 → Application → Local Storage
|
||||
- **验证点 1:** 确认存在 `intermediary_person_import_last_task` 数据
|
||||
- 重新导入
|
||||
- **验证点 2:** 确认点击"开始导入"后,localStorage 中的对应数据被清除
|
||||
- 刷新页面
|
||||
- **验证点 3:** 确认按钮不再显示
|
||||
|
||||
**测试结果:** ⬜ 通过 ⬜ 失败
|
||||
|
||||
**备注:**
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 5: 快速连续点击
|
||||
|
||||
**目的:** 验证防止重复提交的机制
|
||||
|
||||
**步骤:**
|
||||
|
||||
1. 导入数据(有失败),确认按钮显示
|
||||
|
||||
2. 打开导入对话框
|
||||
|
||||
3. 选择任意文件
|
||||
|
||||
4. **关键步骤:** 快速连续多次点击"开始导入"按钮(如双击或三击)
|
||||
|
||||
5. **验证点:** 按钮被禁用
|
||||
- 预期: 按钮变为灰色,显示"导入中..."
|
||||
- 预期: 不会重复触发多次上传
|
||||
- 预期: `isUploading` 状态为 `true`,阻止重复提交
|
||||
|
||||
6. 等待导入完成
|
||||
|
||||
7. **验证点:** 只执行了一次导入操作
|
||||
- 预期: 只有一个通知提示
|
||||
- 预期: 失败记录列表只有一组数据
|
||||
|
||||
**测试结果:** ⬜ 通过 ⬜ 失败
|
||||
|
||||
**备注:**
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 6: 刷新页面后状态保持
|
||||
|
||||
**目的:** 验证 localStorage 的持久化功能
|
||||
|
||||
**步骤:**
|
||||
|
||||
1. 导入个人中介数据(有失败)
|
||||
|
||||
2. **验证点 1:** 确认显示失败记录按钮
|
||||
|
||||
3. 刷新浏览器页面(F5)
|
||||
|
||||
4. **验证点 2:** 确认按钮仍然显示
|
||||
- 预期: localStorage 数据持久化,状态保持
|
||||
|
||||
5. 打开导入对话框,选择文件,点击"开始导入"
|
||||
|
||||
6. **验证点 3:** 按钮立即消失
|
||||
- 预期: 即使刷新页面后,清除功能仍然正常工作
|
||||
|
||||
**测试结果:** ⬜ 通过 ⬜ 失败
|
||||
|
||||
**备注:**
|
||||
|
||||
---
|
||||
|
||||
## 四、测试数据准备
|
||||
|
||||
### 4.1 个人中介导入文件模板
|
||||
|
||||
**必需字段:**
|
||||
- 姓名(name)
|
||||
- 证件号码(personId)
|
||||
- 人员类型(personType)
|
||||
- 性别(gender)
|
||||
- 手机号码(mobile)
|
||||
|
||||
**错误数据示例:**
|
||||
| 姓名 | 证件号码 | 人员类型 | 性别 | 手机号码 |
|
||||
|------|----------|----------|------|----------|
|
||||
| 张三 | 12345 | 中介人员 | 男 | 13800138000 |
|
||||
| 李四 | | 评估人员 | 女 | 13900139000 |
|
||||
| 王五 | 110101199001011234 | | 男 | 13700137000 |
|
||||
|
||||
### 4.2 实体中介导入文件模板
|
||||
|
||||
**必需字段:**
|
||||
- 机构名称(enterpriseName)
|
||||
- 统一社会信用代码(socialCreditCode)
|
||||
- 主体类型(enterpriseType)
|
||||
- 企业性质(enterpriseNature)
|
||||
- 法定代表人(legalRepresentative)
|
||||
|
||||
**错误数据示例:**
|
||||
| 机构名称 | 统一社会信用代码 | 主体类型 | 企业性质 | 法定代表人 |
|
||||
|----------|------------------|----------|----------|------------|
|
||||
| 测试公司1 | ABCDEFGHIJKL | 律师事务所 | 个人独资 | 张三 |
|
||||
| 测试公司2 | | 会计师事务所 | 合伙 | 李四 |
|
||||
| 测试公司3 | 91110000123456789X | | | 王五 |
|
||||
|
||||
---
|
||||
|
||||
## 五、已知问题
|
||||
|
||||
**无**
|
||||
|
||||
---
|
||||
|
||||
## 六、测试总结
|
||||
|
||||
### 6.1 测试覆盖率
|
||||
|
||||
- [x] 个人中介导入失败记录清除
|
||||
- [x] 实体中介导入失败记录清除
|
||||
- [x] 两种类型互不影响
|
||||
- [x] 边界情况处理
|
||||
- [x] 快速连续点击防护
|
||||
- [x] 页面刷新后状态保持
|
||||
|
||||
### 6.2 测试结果统计
|
||||
|
||||
- 总测试场景: 6 个
|
||||
- 通过场景: __ 个
|
||||
- 失败场景: __ 个
|
||||
- 阻塞问题: __ 个
|
||||
|
||||
### 6.3 整体评估
|
||||
|
||||
⬜ **通过** - 所有测试场景通过,功能符合预期
|
||||
⬜ **有条件通过** - 大部分测试通过,存在非阻塞问题
|
||||
⬜ **不通过** - 存在关键功能缺陷,需要修复
|
||||
|
||||
### 6.4 建议
|
||||
|
||||
- (根据测试结果填写建议)
|
||||
|
||||
---
|
||||
|
||||
## 七、附录
|
||||
|
||||
### 7.1 相关代码提交
|
||||
|
||||
- Task 1: commit 1216ba9 "feat: 导入时触发清除历史记录事件"
|
||||
- Task 2: commit 51dc466 "feat: 监听清除导入历史记录事件"
|
||||
- Task 3: commit b35d05a "feat: 实现清除导入历史记录方法"
|
||||
|
||||
### 7.2 相关文档
|
||||
|
||||
- 实施计划: `doc/plans/2025-02-08-intermediary-import-history-cleanup.md`
|
||||
- 需求文档: 待补充
|
||||
|
||||
### 7.3 联系方式
|
||||
|
||||
- 开发人员: Claude (AI Assistant)
|
||||
- 测试负责人: 待指定
|
||||
- 项目经理: 待指定
|
||||
|
||||
---
|
||||
|
||||
**测试报告版本:** v1.0
|
||||
**最后更新:** 2026-02-08
|
||||
127
doc/test-reports/README.md
Normal file
127
doc/test-reports/README.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# 测试报告目录
|
||||
|
||||
本目录用于存放自动化测试生成的测试报告。
|
||||
|
||||
## 报告命名规范
|
||||
|
||||
```
|
||||
test_report_YYYYMMDD_HHMMSS.json
|
||||
```
|
||||
|
||||
例如: `test_report_20260209_153045.json`
|
||||
|
||||
## 报告内容
|
||||
|
||||
每个测试报告包含以下信息:
|
||||
|
||||
- test_time: 测试时间
|
||||
- environment: 测试环境URL
|
||||
- total_count: 总测试用例数
|
||||
- passed_count: 通过的用例数
|
||||
- failed_count: 失败的用例数
|
||||
- pass_rate: 通过率
|
||||
- results: 详细测试结果列表
|
||||
|
||||
## 查看报告
|
||||
|
||||
### 方式1: 文本编辑器
|
||||
使用任何文本编辑器打开JSON文件即可查看。
|
||||
|
||||
### 方式2: JSON格式化工具
|
||||
使用在线JSON格式化工具或IDE的JSON插件进行格式化查看:
|
||||
- https://jsoneditoronline.org/
|
||||
- https://www.json.cn/
|
||||
|
||||
### 方式3: Python脚本解析
|
||||
```python
|
||||
import json
|
||||
|
||||
with open('doc/test-reports/test_report_20260209_153045.json', 'r', encoding='utf-8') as f:
|
||||
report = json.load(f)
|
||||
|
||||
print(f"测试时间: {report['test_time']}")
|
||||
print(f"通过率: {report['pass_rate']}")
|
||||
for result in report['results']:
|
||||
print(f"- {result['name']}: {'通过' if result['passed'] else '失败'}")
|
||||
```
|
||||
|
||||
## 报告分析
|
||||
|
||||
### 查看通过率
|
||||
```json
|
||||
"pass_rate": "75.0%"
|
||||
```
|
||||
通过率 >= 80% 表示测试基本通过
|
||||
|
||||
### 查看失败的测试用例
|
||||
在results数组中查找 "passed": false 的记录
|
||||
|
||||
### 查看错误原因
|
||||
每个测试用例的error_message字段包含失败原因
|
||||
|
||||
### 查看详细数据
|
||||
每个测试用例的details字段包含:
|
||||
- expected_success/expected_failure: 预期结果
|
||||
- actual_success/actual_failure: 实际结果
|
||||
- failures: 失败记录列表
|
||||
|
||||
## 历史报告管理
|
||||
|
||||
建议定期清理旧的测试报告:
|
||||
|
||||
```bash
|
||||
# 删除7天前的报告
|
||||
find doc/test-reports -name "test_report_*.json" -mtime +7 -delete
|
||||
|
||||
# Windows PowerShell
|
||||
Get-ChildItem doc/test-reports -Filter "test_report_*.json" |
|
||||
Where-Object LastWriteTime -lt (Get-Date).AddDays(-7) |
|
||||
Remove-Item
|
||||
```
|
||||
|
||||
## 测试趋势分析
|
||||
|
||||
通过对比不同时间的测试报告,可以分析:
|
||||
1. 功能稳定性: 通过率是否保持在高水平
|
||||
2. 回归问题: 之前通过的测试是否开始失败
|
||||
3. 新增问题: 新功能是否引入了测试失败
|
||||
|
||||
## 归档建议
|
||||
|
||||
- 每次版本发布前保留一份测试报告
|
||||
- 重大功能更新后保留测试报告
|
||||
- 定期(如每月)归档历史报告到单独目录
|
||||
|
||||
## 示例报告结构
|
||||
|
||||
```json
|
||||
{
|
||||
"test_time": "2026-02-09 15:30:45",
|
||||
"environment": "http://localhost:8080",
|
||||
"total_count": 4,
|
||||
"passed_count": 4,
|
||||
"failed_count": 0,
|
||||
"pass_rate": "100.0%",
|
||||
"results": [
|
||||
{
|
||||
"name": "采购交易 - Excel内采购事项ID重复",
|
||||
"description": "测试导入3条采购事项ID相同的记录...",
|
||||
"passed": true,
|
||||
"error_message": null,
|
||||
"details": {
|
||||
"expected_success": 1,
|
||||
"expected_failure": 2,
|
||||
"actual_success": 1,
|
||||
"actual_failure": 2,
|
||||
"failures": [
|
||||
{
|
||||
"purchaseId": "PURCHASE001",
|
||||
"errorMessage": "采购事项ID[PURCHASE001]在导入文件中重复,已跳过此条记录"
|
||||
}
|
||||
]
|
||||
},
|
||||
"duration": "5.23s"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user