Files
JY1.0/docs/物料库位设置/物料库位功能调整测试报告.md

399 lines
13 KiB
Markdown
Raw Permalink 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.
# 物料库位功能调整测试报告
## 一、测试概述
测试日期2026-06-29
测试范围:
- 物料新增/编辑移除库位设置。
- 物料标准库位维护页面移除编辑能力。
- 入库时库位选择逻辑调整为:有库存库位优先显示已有库存库位,无库存库位时显示全库位。
- 数据库脚本可发布性核对。
- 前端构建验证。
测试环境:
- 工作目录:`D:\景耀\JY1.0`
- 前端技术栈Vue 2.5.17、Element UI 2.13、Webpack 4
- 数据库服务器:`192.168.1.27`
- 数据库:`ERPTOOL_JY_20250826Back`
本次测试未直接执行数据库 ALTER 脚本,仅做只读核对。
## 二、测试对象
### 2.1 前端文件
- `src/views/TechnologyCenter/MaterialMaintain/index.vue`
- `src/views/TechnologyCenter/MaterialQuery/index.vue`
- `src/views/WarehouseManagement/MaterialLocation/index.vue`
- `src/views/WarehouseManagement/PurchasePartsStorage/index.vue`
### 2.2 SQL 文件
- `sql/移除物料标准库位维护.sql`
### 2.3 文档文件
- `docs/物料库位功能调整设计方案.md`
- `docs/物料库位功能调整测试报告.md`
## 三、测试用例与结果
### 3.1 静态残留检查:物料维护与物料库位页面
测试目的:
确认物料新增/编辑页面不再残留库位表单、库位必填校验、默认库位、物料库位编辑调用。
执行命令:
```powershell
rg -n "form\.库位|库位: \[|inventoryLocation|getInventoryLocation|= 2514|货位流水号', this\.form\.库位|仓储管理_物料库位_编辑数据|@row-dblclick=\"changeState\"|changeState\(|confirmEdit\(|cancelEdit\(|submitLocation\(|addLocation\(" src/views/TechnologyCenter/MaterialMaintain/index.vue src/views/TechnologyCenter/MaterialQuery/index.vue src/views/WarehouseManagement/MaterialLocation/index.vue
```
测试结果:
- 命令退出码:`1`
- 输出:无匹配结果
结果说明:
`rg` 在无匹配时返回退出码 `1`,本测试场景表示未发现目标残留代码。检查通过。
结论:
通过。
### 3.2 静态逻辑检查:入库库位选择
测试目的:
确认入库页面包含以下关键逻辑:
- 页面创建时加载全库位。
- 调用 `仓储管理_库存盘点_查询` 查询已有库存库位。
- 已有库存库位显示库存数量。
- 无库存库位 fallback 到全库位。
- 入库提交仍传递 `货位流水号组`
执行命令:
```powershell
rg -n "getLocateName\(|locateSource|locateName\.slice|库存:|仓储管理_库存盘点_查询|仓储管理_库位_查询|货位流水号组" src/views/WarehouseManagement/PurchasePartsStorage/index.vue
```
测试结果摘要:
```text
760: this.getLocateName()
1048: getLocateName() {
1050: var Data = this.CreateData('11', '仓储管理_库位_查询', param)
1133: var Data = this.CreateData('11', '仓储管理_库存盘点_查询', param)
1141: label: data[i].货位名称 + '(库存:' + inventory + '',
1149: this.$set(row, 'locateSource', 'inventory')
1152: this.$set(row, 'locateName', this.locateName.slice())
1153: this.$set(row, 'locateSource', 'all')
1156: this.getLocateName().then(setAllLocate)
1299: param[5] = ['货位流水号组', locateGroup]
1436: param[4] = ['货位流水号组', locateGroup]
```
结果说明:
关键代码路径均存在:
- `created()` 中加载全库位。
- `getLocateName()` 使用 `仓储管理_库位_查询`
- `getInventoryLocateName(row)` 使用 `仓储管理_库存盘点_查询`
- 有库存库位时设置 `locateSource = 'inventory'`
- 无库存库位时使用 `this.locateName.slice()` 设置全库位,并设置 `locateSource = 'all'`
- 采购入库、自制件入库提交仍使用 `货位流水号组`
结论:
通过。
### 3.3 SQL 脚本静态检查
测试目的:
确认 SQL 脚本包含目标存储过程,并保留 `@货位流水号` 兼容参数。
执行命令:
```powershell
rg -n "ALTER PROCEDURE|库存管理_物料与货位对照表|货位流水号|货位流水号 = @货位流水号|货位流水号=@货位流水号" sql/移除物料标准库位维护.sql
```
测试结果摘要:
```text
8: 3. 保留 @货位流水号 参数,兼容未同步发布的旧前端调用。
11:ALTER PROCEDURE [dbo].[物料管理_增加]
13: @货位流水号 int = null,
41:ALTER PROCEDURE [dbo].[物料管理_增加新]
43: @货位流水号 int = null,
105:ALTER PROCEDURE [dbo].[物料管理_编辑]
107: @货位流水号 int = null,
```
结果说明:
- 脚本包含 `物料管理_增加``物料管理_增加新``物料管理_编辑`
- 脚本保留 `@货位流水号` 参数。
- 未检出 `货位流水号=@货位流水号``货位流水号 = @货位流水号` 写入语句。
- 未检出对 `库存管理_物料与货位对照表` 的新增/更新语句。
结论:
通过。
### 3.4 数据库对象参数核对
测试目的:
确认目标数据库中相关存储过程和参数存在,为脚本发布与接口兼容提供依据。
执行命令:
```powershell
sqlcmd -S 192.168.1.27 -d ERPTOOL_JY_20250826Back -U sa -P ****** -C -Q "SET NOCOUNT ON; SELECT o.name AS ObjectName, p.name AS ParamName, TYPE_NAME(p.user_type_id) AS TypeName, p.parameter_id FROM sys.objects o LEFT JOIN sys.parameters p ON o.object_id=p.object_id WHERE o.name IN (N'物料管理_增加',N'物料管理_增加新',N'物料管理_编辑',N'仓储管理_物料库位_编辑数据',N'仓储管理_库存盘点_查询',N'仓储管理_库位_查询') ORDER BY o.name,p.parameter_id;"
```
测试结果摘要:
- `仓储管理_库存盘点_查询` 存在,参数包含:
- `@物料名称_check`
- `@物料名称`
- `@图号或型号_check`
- `@图号或型号`
- `@库位_check`
- `@库位`
- `@排序名称`
- `@排序方式`
- `@物料编码_check`
- `@物料编码`
- `仓储管理_库位_查询` 存在,参数包含:
- `@库位_check`
- `@库位`
- `物料管理_增加` 存在,参数包含 `@货位流水号`
- `物料管理_增加新` 存在,参数包含 `@货位流水号`
- `物料管理_编辑` 存在,参数包含 `@货位流水号`
- `仓储管理_物料库位_编辑数据` 存在,参数包含 `@物料流水号``@货位流水号`
结果说明:
数据库对象与前端调用所需过程匹配。`物料管理_增加/增加新/编辑` 仍保留 `@货位流水号` 参数,因此前端传 `货位流水号 = null` 可以作为兼容占位。
结论:
通过。
### 3.5 数据库当前过程行为核对
测试目的:
确认目标数据库当前是否已经执行过本次 SQL 调整脚本。
执行命令:
```powershell
sqlcmd -S 192.168.1.27 -d ERPTOOL_JY_20250826Back -U sa -P ****** -C -Q "SET NOCOUNT ON; SELECT o.name AS ObjectName, CASE WHEN m.definition LIKE N'%库存管理_物料与货位对照表%' THEN 1 ELSE 0 END AS TouchMaterialLocationTable, CASE WHEN m.definition LIKE N'%货位流水号=@货位流水号%' OR m.definition LIKE N'%货位流水号 = @货位流水号%' THEN 1 ELSE 0 END AS WritesLocationSerial FROM sys.objects o JOIN sys.sql_modules m ON o.object_id=m.object_id WHERE o.name IN (N'物料管理_增加',N'物料管理_增加新',N'物料管理_编辑',N'仓储管理_物料库位_编辑数据');"
```
测试结果:
```text
ObjectName TouchMaterialLocationTable WritesLocationSerial
仓储管理_物料库位_编辑数据 1 1
物料管理_编辑 1 1
物料管理_增加 1 0
物料管理_增加新 1 0
```
结果说明:
目标数据库当前仍是旧过程行为:
- `物料管理_增加``物料管理_增加新` 仍接触 `库存管理_物料与货位对照表`
- `物料管理_编辑` 仍写入 `货位流水号`
- `仓储管理_物料库位_编辑数据` 仍写入物料库位。
这说明 `sql/移除物料标准库位维护.sql` 尚未执行到目标数据库。
结论:
部分通过。数据库对象存在,但后端脚本尚未发布。上线前必须执行 SQL 脚本。
### 3.6 库位基础数据与库存库位样本核对
测试目的:
确认全库位查询、已有库存库位查询存在可用样本数据。
执行命令:
```powershell
sqlcmd -S 192.168.1.27 -d ERPTOOL_JY_20250826Back -U sa -P ****** -C -Q "SET NOCOUNT ON; SELECT TOP 10 货位流水号,货位名称 FROM 库存管理_货位主文件 ORDER BY 货位流水号; SELECT TOP 10 物料名称,图号或型号,货位名称,库存,货位流水号 FROM 外购件库存_视图 WHERE ISNULL(库存,0)>0 ORDER BY 物料名称;"
```
测试结果摘要:
全库位样本:
```text
货位流水号 货位名称
1 A1
2 A1-1
3 A1-2
4 A1-3
5 A1-4
6 A1-5
7 A1-6
8 A1-7
9 A1-8
10 A1-9
```
已有库存库位样本:
```text
物料名称 图号或型号 货位名称 库存 货位流水号
壳体I模具 XT50-2-07.01MJ 模具库 1.0 2588
盔甲护罩(左) WRS5085L 07-12-03 1.0 3789
垃圾袋 垃圾袋 A000 1.0 2514
内六角圆柱头螺钉 M10x45 GB/T70.1-2008 A000 1184.0 2514
```
结果说明:
- 全库位基础数据存在。
- 真实库存库位样本存在。
- 可用于后续页面业务回归测试。
结论:
通过。
### 3.7 前端生产构建测试
测试目的:
确认本次前端修改没有引入 Vue/JavaScript 编译错误。
执行命令:
```powershell
npm run build
```
测试结果摘要:
```text
Hash: bfc0aa9b97bada6643bc
Version: webpack 4.16.5
Time: 64306ms
Built at: 2026/06/29 14:57:00
Build complete.
```
构建告警摘要:
- asset size limit 超限。
- entrypoint size limit 超限。
- Browserslist/caniuse-lite 过期提示。
- npm 日志无法写入用户 npm-cache 日志目录。
- shelljs 循环依赖属性访问告警。
异常说明:
构建已输出 `Build complete`,产物已生成;但命令进程在构建完成后未及时退出,被工具在 180 秒时截断,退出码为 `124`
判断:
- 编译结果:通过。
- 命令退出:异常,疑似项目旧构建脚本或环境中残留进程导致。
- 告警均为项目既有构建告警或环境日志权限告警,本次未发现由修改代码造成的编译错误。
结论:
条件通过。
## 四、功能测试结论
| 测试项 | 结果 | 说明 |
| --- | --- | --- |
| 物料新增/编辑库位 UI 移除 | 通过 | 静态检查无残留 |
| 物料库位维护编辑能力移除 | 通过 | 静态检查无残留 |
| 入库库存库位优先逻辑 | 通过 | 关键代码路径存在 |
| 入库无库存 fallback 全库位 | 通过 | 关键代码路径存在 |
| SQL 脚本静态检查 | 通过 | 脚本未写标准库位 |
| 数据库对象参数核对 | 通过 | 所需过程和参数存在 |
| 目标数据库后端脚本发布状态 | 未完成 | 当前库仍为旧过程 |
| 前端生产构建 | 条件通过 | 已 Build complete但进程超时退出 |
## 五、待办与风险
### 5.1 必须执行的上线前动作
1. 在目标数据库执行:
```text
sql/移除物料标准库位维护.sql
```
2. 执行后重新核对:
```sql
SELECT o.name,
CASE WHEN m.definition LIKE N'%库存管理_物料与货位对照表%' THEN 1 ELSE 0 END AS TouchMaterialLocationTable,
CASE WHEN m.definition LIKE N'%货位流水号=@货位流水号%' OR m.definition LIKE N'%货位流水号 = @货位流水号%' THEN 1 ELSE 0 END AS WritesLocationSerial
FROM sys.objects o
JOIN sys.sql_modules m ON o.object_id = m.object_id
WHERE o.name IN (N'物料管理_增加', N'物料管理_增加新', N'物料管理_编辑');
```
预期:
- `TouchMaterialLocationTable = 0`
- `WritesLocationSerial = 0`
### 5.2 需要人工页面回归的场景
由于本次未启动登录态浏览器访问业务系统,以下场景需要在测试环境人工回归:
- 新增物料弹窗不显示库位。
- 编辑物料弹窗不显示库位。
- 新增物料后数据库不生成 0 库存库位记录。
- 编辑物料不改变已有真实库存库位。
- 物料库位维护页面不可编辑。
- 采购入库已有库存物料时,下拉只显示已有库存库位。
- 采购入库无库存物料时,下拉显示全库位。
- 自制件入库已有库存物料时,下拉只显示已有库存库位。
- 自制件入库无库存物料时,下拉显示全库位。
- 未选择库位时仍禁止入库。
- 选择库位后入库成功,入库记录显示正确库位。
### 5.3 风险项
- 目标数据库当前仍是旧过程,若不执行 SQL 脚本,新增/编辑物料仍可能写入标准库位或物料货位对照数据。
- 旧历史数据中已有 0 库存物料货位记录,本次不清理;若某些视图未过滤库存大于 0仍可能被查询显示。
- `npm run build` 构建完成后进程未正常退出,建议后续单独排查构建脚本或环境中的挂起任务。
## 六、最终结论
本次代码级测试与构建测试总体通过:
- 前端库位维护能力已按设计移除。
- 入库库位选择逻辑已按设计实现。
- SQL 脚本已准备完成,静态检查符合预期。
- 生产构建已输出 `Build complete`
当前不满足完整上线闭环的唯一关键项:
- 目标数据库尚未执行 `sql/移除物料标准库位维护.sql`
建议先在测试数据库执行 SQL 脚本,再按 5.2 的页面回归清单完成业务验证。