P281 · 测试与评估

沿调用路径查找错误数据的起点

Trace invalid data back to its origin

从失败结果向上追踪调用者和参数,定位错误输入最早产生的位置。

编辑审核

以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。

使用场景

工作区操作在错误目录执行,教学exec收到projectDir空字符串。症状出现在下游命令,但空值可能来自初始化前读取的tempDir,不能只在命令处吞错。

具体做法

观察失败效果的实际参数、cwd与时刻,找到立即调用方。逐层记录值如何传递或改变,直到第一次不符合契约的初始化/决策;核对测试生命周期和默认路径语义。提出来源假说,用最小复现或静态链证据验证。修来源后再检查原症状与路径门禁,避免在真实仓库执行带写入副作用的复现。

反例

git初始化失败就捕获忽略,不查projectDir;或者直接猜是权限问题。

改进写法

记录收到projectDir为空、运行目录与调用路径,追到beforeEach前读取tempDir的教学初始化。先验证时序与实际运行库如何解释空cwd,再把创建操作移到初始化完成后;在隔离临时目录检查原症状及预期目标。

为什么这样改

错误输入跨多层后才产生可见失败。反向追值把修复定位到首次错误决策,同时查调用时序可避免每层打补丁却保留来源。

如何验证

教学记录为tempDir尚空→Project.create→Session→exec,初始化后tempDir为许可临时路径。调整时序后核命令目标确为该路径。没有运行证据只能称代码推断,不能写真实命令输出或必然根因。

适用边界

空cwd的行为依API与平台,冻结来源实例不可套给所有运行库。调用链可能含异步、动态分派或多个来源,需核身份。防御门禁可以减少损害,但不能单独证明来源或永不复发。

原文与版本

如何收录这些方法