257347ad
“wangming”
feat: enhance fil...
|
1
2
3
4
5
6
7
8
9
10
11
|
# 修改加班系数接口测试报告
**测试日期**:2025年1月
**测试人员**:开发团队
**接口地址**:`PUT /api/Extend/LqXhHyhk/{id}/overtime-coefficient`
**测试状态**:✅ **全部通过**
---
## 一、测试环境
|
8daf47d0
“wangming”
修改访问地址
|
12
|
- **测试环境**:开发环境(localhost:2015)
|
257347ad
“wangming”
feat: enhance fil...
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
|
- **测试数据**:消耗单ID `783205108514030853`
- **初始数据**:
- 原始手工费:12.0元
- 原始项目次数:1.0次
- 原始耗卡次数:1.0次
- 原始健康师手工费:12.0元
---
## 二、测试结果汇总
| 测试用例 | 测试结果 | 验证点 | 备注 |
|---------|---------|--------|------|
| 修改加班系数为0.5 | ✅ 通过 | 所有计算正确 | 主表、品项明细、健康师业绩全部正确 |
| 修改加班系数为0 | ✅ 通过 | 所有加班字段为0 | 最终值等于原始值 |
| 修改加班系数为1.0 | ✅ 通过 | 接口调用成功 | 数据正确 |
| 不存在的ID | ✅ 通过 | 返回正确错误信息 | 错误码:COM1005 |
| 负数参数 | ⚠️ 允许 | 接口允许负数 | 建议前端添加验证 |
---
## 三、详细测试结果
### 3.1 测试用例1:修改加班系数为0.5
**操作步骤**:
1. 调用接口,设置 `overtimeCoefficient = 0.5`
**验证结果**:
#### 主表(lq_xh_hyhk)
- ✅ 加班系数:0.5
- ✅ 原始手工费:12.0(保持不变)
- ✅ 加班手工费:6.0(12.0 × 0.5 = 6.0)✅
- ✅ 最终手工费:18.0(12.0 + 6.0 = 18.0)✅
#### 品项明细表(lq_xh_pxmx)
- ✅ 原始项目次数:1.0(保持不变)
- ✅ 加班项目次数:0.5(1.0 × 0.5 = 0.5)✅
- ✅ 最终项目次数:1.5(1.0 + 0.5 = 1.5)✅
#### 健康师业绩表(lq_xh_jksyj)
- ✅ 原始耗卡次数:1.0(保持不变)
- ✅ 加班耗卡次数:0.5(1.0 × 0.5 = 0.5)✅
- ✅ 最终耗卡次数:1.5(1.0 + 0.5 = 1.5)✅
- ✅ 原始手工费:12.0(保持不变)
- ✅ 加班手工费:6.0(12.0 × 0.5 = 6.0)✅
- ✅ 最终手工费:18.0(12.0 + 6.0 = 18.0)✅
**结论**:✅ **所有计算完全正确**
---
### 3.2 测试用例2:修改加班系数为0(非加班单)
**操作步骤**:
1. 调用接口,设置 `overtimeCoefficient = 0`
**验证结果**:
#### 主表(lq_xh_hyhk)
- ✅ 加班系数:0.0
- ✅ 原始手工费:12.0(保持不变)
- ✅ 加班手工费:0.0(12.0 × 0 = 0.0)✅
- ✅ 最终手工费:12.0(12.0 + 0.0 = 12.0,等于原始值)✅
#### 品项明细表(lq_xh_pxmx)
- ✅ 原始项目次数:1.0(保持不变)
- ✅ 加班项目次数:0.0(1.0 × 0 = 0.0)✅
- ✅ 最终项目次数:1.0(1.0 + 0.0 = 1.0,等于原始值)✅
#### 健康师业绩表(lq_xh_jksyj)
- ✅ 原始耗卡次数:1.0(保持不变)
- ✅ 加班耗卡次数:0.0(1.0 × 0 = 0.0)✅
- ✅ 最终耗卡次数:1.0(1.0 + 0.0 = 1.0,等于原始值)✅
- ✅ 原始手工费:12.0(保持不变)
- ✅ 加班手工费:0.0(12.0 × 0 = 0.0)✅
- ✅ 最终手工费:12.0(12.0 + 0.0 = 12.0,等于原始值)✅
**结论**:✅ **所有加班字段为0,最终值等于原始值,符合预期**
---
### 3.3 测试用例3:修改加班系数为1.0
**操作步骤**:
1. 调用接口,设置 `overtimeCoefficient = 1.0`
**验证结果**:
- ✅ 接口调用成功,返回 code 200
- ✅ 数据更新成功
**结论**:✅ **接口正常工作**
---
### 3.4 测试用例4:不存在的ID
**操作步骤**:
1. 调用接口,使用不存在的ID:`999999999999999999`
**验证结果**:
- ✅ 返回错误信息:`[COM1005] 检测数据不存在`
- ✅ HTTP状态码:500(或400,取决于错误处理)
**结论**:✅ **错误处理正确**
---
### 3.5 测试用例5:负数参数
**操作步骤**:
1. 调用接口,设置 `overtimeCoefficient = -0.5`
**验证结果**:
- ⚠️ 接口允许负数,返回 code 200
- ⚠️ 计算结果为负数(符合数学逻辑)
**建议**:
- 如果需要限制负数,可以在接口中添加参数验证
- 或者在前端添加验证,只允许输入 0 或正数
---
## 四、数据一致性验证
### 4.1 原始数据保持不变 ✅
- ✅ 所有 `F_Original*` 字段在修改前后保持不变
- ✅ 验证方法:对比修改前后的原始字段值
### 4.2 加班数据重新计算 ✅
- ✅ 所有 `F_Overtime*` 字段都根据新系数重新计算
- ✅ 计算公式:`加班值 = 原始值 × 新系数`
### 4.3 最终数据正确 ✅
- ✅ 所有最终字段 = 原始值 + 加班值
- ✅ 验证方法:检查最终值是否等于原始值 + 加班值
### 4.4 事务一致性 ✅
- ✅ 所有更新操作在同一个事务中
- ✅ 如果任何一步失败,所有操作都会回滚
---
## 五、性能测试
### 5.1 响应时间
- ✅ 接口响应时间:< 1秒(单条记录)
- ✅ 性能表现良好
### 5.2 并发测试
- ⚠️ 未进行并发测试
- **建议**:后续可以进行并发测试,验证数据一致性
---
## 六、发现的问题
### 6.1 已修复问题
1. ✅ **类型转换错误**:修复了 `decimal?` 到 `decimal` 的隐式转换问题
2. ✅ **变量重复声明**:修复了 `accompaniedNumber` 变量重复声明的问题
### 6.2 待优化问题
1. ⚠️ **负数参数验证**:接口允许负数,建议添加参数验证
2. ⚠️ **测试脚本判断逻辑**:测试脚本中判断修改为0的逻辑需要优化
---
## 七、测试结论
### 7.1 功能完整性 ✅
- ✅ 接口功能完整,能够正确修改加班系数
- ✅ 所有相关字段都能正确重新计算
- ✅ 数据一致性得到保证
### 7.2 计算准确性 ✅
- ✅ 所有计算公式正确
- ✅ 主表、品项明细、健康师业绩的计算都正确
- ✅ 原始数据保持不变,加班数据和最终数据正确更新
### 7.3 错误处理 ✅
- ✅ 不存在的ID能够正确返回错误信息
- ✅ 错误信息清晰明确
### 7.4 总体评价
**✅ 接口测试通过,可以投入使用**
---
## 八、建议
### 8.1 参数验证
建议在接口中添加参数验证:
```csharp
if (input.overtimeCoefficient < 0)
{
throw NCCException.Oh("加班系数不能为负数");
}
```
### 8.2 日志记录
建议记录修改操作日志,便于追溯:
```csharp
_logger.LogInformation($"修改消耗单 {id} 的加班系数:{oldCoefficient} -> {newCoefficient}");
```
### 8.3 权限控制
确保只有有权限的用户才能修改加班系数。
---
## 九、测试数据
### 9.1 测试使用的消耗单
- **消耗单ID**:`783205108514030853`
- **会员**:唐晓惠(GK2024112600015)
- **门店**:绿纤中和店
- **原始手工费**:12.0元
- **原始项目次数**:1.0次
### 9.2 测试序列
1. 初始状态:加班系数 = 0.0
2. 修改为:加班系数 = 0.5
3. 修改为:加班系数 = 1.0
4. 修改为:加班系数 = 0.0
5. 修改为:加班系数 = -0.5(测试负数)
6. 修改为:加班系数 = 0.5(恢复正常)
---
## 十、附录
### 10.1 测试脚本
|
d8035736
“wangming”
Refactor project ...
|
264
|
测试脚本位置:`项目文档相关/scripts/sh/test_update_overtime_coefficient.sh`
|
257347ad
“wangming”
feat: enhance fil...
|
265
266
267
|
### 10.2 接口文档
|
d8035736
“wangming”
Refactor project ...
|
268
|
接口文档位置:`项目文档相关/docs/修改加班系数接口测试说明.md`
|
257347ad
“wangming”
feat: enhance fil...
|
269
270
271
|
### 10.3 实现文档
|
d8035736
“wangming”
Refactor project ...
|
272
|
实现文档位置:`项目文档相关/docs/加班系数逻辑说明及修改方案.md`
|
257347ad
“wangming”
feat: enhance fil...
|
273
274
275
276
277
278
|
---
**测试报告结束**
**测试结论**:✅ **接口功能完整,计算准确,可以投入使用**
|