字号
可复现不仅是固定随机种子
确定性程序可以无限次复现同一个错误状态。有效的重放记录应从程序实现的规则开始:数据格式、序列范围、事件语义、初始状态,以及每个输出的确切含义。
区分协议事实与实验假设。规范中的改单规则属于前者,假设每笔订单都是单位数量属于后者。两者都可能有用,但读者不应依靠猜测区分。
保留一份精简实验记录
experiment: event-order-001
input: three synthetic SET messages
sequence_scope: one channel, one session
initial_state: quantity = 0
update_rule: SET overwrites quantity
source_order_expected: 7
receive_order_expected: 4
network_access: none记录应随代码保留。对较大输入,还应保留校验值、解析器版本和数据许可或访问条件。机器可读记录可以呈现后续变化,避免同一文件名悄然指向不同数据。
检验不变量,而不仅是最终值
最终校验值可以表明存在差异,却未必定位原因。逐事件检查更易发现问题:例如撤单前订单应存在、存续订单剩余数量应为正、订单级加总应与相同纳入范围的聚合状态一致。
不变量必须符合行情协议。消息可能代表更正、恢复更新或会话转换。因简化假设而拒绝它,不等于数据源错误。测试样本应明确表示特殊转移。
记录信息何时可得
离线重建可能借助后续消息解释早先事件。这用于诊断可以合理,但在当时决策时未必可得。应标明输出属于事后状态、行情观察状态还是实时可用特征。
如果时间戳在消费者尚未观察到的处理阶段赋值,仅比较时间戳并不充分。可得性属于观察模型,应接受检验。诊断标签需要与决策规则使用的输入分开。
审阅材料应包括什么
- 具有来源说明与稳定标识的输入样本。
- 明确假设与不支持的消息类型。
- 逐事件预期轨迹与最小运行命令。
- 失败状态、恢复规则与信息可得性检查。
- 说明实验不能建立哪些结论。
这是建议采用的审阅方法,不代表某个生产系统已经通过审计。公开实验为该流程提供了一个刻意简化的教学样本。
查看事件顺序实验