欢迎光临
我们一直在努力

mock 原理与边界(WHY_AND_HOW)

mock 原理与边界(WHY_AND_HOW)

第0条(基线)本文件一切数字以 20260918 磁盘实测为准;产品源码与文档冲突时以源码为准并即时修正本文件。

第1条(被测对象)被测系统由接入系统定义:节点集合、真实代码、协议与状态机。框架不预设业务;各系统的拓扑与语义由系统级语义文档负责(注册表见 README.md 第4条)。

第2条(分布式物理定律)下列十一条定律为被测系统的工程法律,不可协商;框架设计与测试设计必须由定律推导:

#定律内容对测试的推论
无实时全局状态 信息传播需要时间,任何观测都是过去 禁止依赖到达顺序;必须验证任意到达顺序终态收敛
半开闭是常态 请求发出到响应到达之间发送方一无所知 必须验证操作幂等或可补偿
对等写入必发散 两节点对同一状态有对等写入权则冲突无终止条件 必须验证方向约束:只允许权威源写入
不可撤回的外部效果 UI 渲染后只能补偿不能回滚 必须验证 UI 终态与服务器权威状态一致
共识是最后手段 能用方向约束与幂等加补偿解决则不得使用分布式事务 必须验证补偿路径收敛
同步共振 N 个组件同输入同控制律则副作用 N 倍叠加 必须验证去重 guard 与白名单分支
单调锚点 幂等性的最小状态解为一个单调递增整数 必须验证结算 token 与阶段锚点单调
规则堆砌是模型失败 每次修复必须加固模型而非堆规则 阶段矩阵必须穷举,断言白名单分支不误伤
不对称安全 不可信方向保守:宁可漏判不可误判 攻击测试必须断言"宁可拒绝不错收"
事件先于权威数据 状态变更通知与权威数据走不同路径,顺序不保证 必须验证事件 handler 在权威数据前后的行为
十一 NULL 不可穿透 序列化吞掉 nil;服务器有意置空的字段不得丢失 快照必须预清空并用显式清理表;必须断言置 nil 字段在客户端被清空

第3条(设计判定)

(一)模拟边界,不模拟业务:mock 只仿真引擎对外接口,真实业务代码原样加载执行;mock 中执行的每一行产品代码即真实系统的同行代码,异常只可能为产品 BUG 或模拟失真。产品代码调用 mock 未实现的接口时,加载阶段必须失败。

(二)相对时间因果是虚拟时钟的合法性依据:控制逻辑归约为三组命题——因果序(因先于果、请求先于响应、广播先于接收、摸牌先于出牌、EndGame 先于发奖)、单调性(回合号只增不减、倒计时只减不增、结算 token 单调)、次数性(每件事恰好发生应发生的次数);三组命题在真实时钟与虚拟时钟下同真同假,故单一确定性虚拟时钟可完整覆盖控制逻辑验证。

(三)断言测三件事:未发生(断言 0 次,功能缺失)、做少了(次数或字段不足)、做多了(次数超限,非幂等或去重失效)。断言必须按 PRD 写;代码达不到 PRD 是 BUG,超出 PRD 同样是 BUG。

(四)保证分三层,不得混淆:可编译(全部被测代码成功加载)、可运行(被驱动路径实际执行且不崩溃)、行为由断言裁决(能跑不等于正确)。失败归因顺序:测试目标与 PRD 不符、输入违反产品契约、框架缺口(记 [MOCK-GAP])。判定产品 BUG 的硬标准为真实代码在 mock 中执行并产生违反文档语义的可观察结果,且附文件符号证据。

第4条(能力边界)

(一)不可测项及物理根源:真实网络协议字节(无真实 socket、序列化、重传)、渲染像素(无真实渲染与布局)、数据库磁盘崩溃恢复(无真实 DB)、性能与规模(单进程仿真)。边界以内的引擎、网络、DB 行为是 mock 的假设,不是被测对象。

(二)时序失真:mock 为单进程单线程同步分派,真实异步间隙被消除,去重窗口在同步分派下折叠;UI 自续定时器的计数断言必须使用客户端类型注册表,禁止用全局表。

(三)绝对时间不可测:多物理时钟折叠为单一虚拟时钟;断言必须基于相对时间因果,禁止基于绝对时间。

(四)信任边界:mock 结论以"模拟忠实"为前提,未驱动到的代码等于未验证,模拟失真的路径结论无效。该条件性可检验:模拟是否忠实、断言是否覆盖。

第5条(维护义务)

(一)引擎导出新增或产品重构时,mock 必须同步补齐;框架每次改动后必须全量回归证明零行为变化。

(二)框架不能支持某测试时必须改进框架,禁止降级测试;模拟失真必须修框架,禁止绕过。

(三)编写测试前必须先读 ARCHITECTURE.md 与对应系统语义文档。

第6条(术语)

术语含义
节点 协议处理单元,集合由接入系统定义
协议 节点间消息类型,命名 源_目标_功能名 或 C2S_/S2C_ 前缀
虚拟时钟 Mock.nClock,毫秒级确定性时间源
trace 结构化事件流,记录投递、处理、定时器与状态变更
开盒测试 逐步调用真实函数并断言内部状态的测试
攻击测试 注入乱序、丢包、延迟、崩溃、重复并断言不变量收敛的测试
PIN 断言 按 PRD 正确行为编写的、当前代码必失败的断言
MOCK-GAP mock 框架自身缺口
方向约束 规定状态只能由权威源写入
序次收敛 以单调锚点去重,使接收方总能做唯一正确决策
边界熔断 强制切断正反馈回路(退出清定时器、重连强制重置)
赞(0)
未经允许不得转载:171主机测评 » mock 原理与边界(WHY_AND_HOW)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址