用途:当任务包含测试设计或测试实现时,应用该技能约束测试的证明层语义与行为。验证门禁、清单、阈值与 CI 阻断策略由 $bep-verification-gates 负责;仅当需要特定运行时正式证明配置时,才使用 $bep-backend-engineering 或 $bep-frontend-engineering 中的验证参考。
主要能力与分层原则:
- 选择最廉价的完整证明。每条行为交给能以最小成本完整证明它的层:领域规则、状态迁移、应用编排、确定性转换、基于 Fake Port 的稳定错误处理和通过公共 UI 契约的无浏览器组件行为用单元测试;正确性依赖真实路由器、中间件链、序列化器、数据存储、迁移、队列协议、浏览器运行时或外部协议时用集成测试;独立部署边界上生产者与消费者需证明同一版本化线路契约时用契约测试;E2E 仅覆盖少量关键跨栈用户旅程。每个测试只证明一条完整行为,按行为和可观察结果命名。
- 保持层诚实。每个测试只用一种结构性方式标注层(目录、文件名模式、runner 项目或原生元数据)。使用 mock 数据驱动的快速测试不算集成;绕过后端或持久存储的浏览器测试不算 E2E。单元、集成、E2E 是 BDD 证明层的标准词汇。
- 单元测试与集成边界。通过公共契约测试公共模块,对可替换能力使用内存 Fake 与简单 Stub。断言返回值、状态迁移、发出的领域事实、稳定失败类别和可观察 UI 行为;仅在交互本身即契约时断言交互。注入时间、随机值、标识符等非确定边界。对关键纯业务模块定期做变异测试,变异分数与语句覆盖分开跟踪。
- 契约与 E2E。仅在独立部署边界做契约测试,验证制品与运行时响应,要求生产者和消费者使用兼容版本;同进程部署的模块之间不加契约测试。E2E 留存给涉及认证、会话、权限、租户隔离、入门初始化、核心创建提交流程、金钱或不可逆操作、敏感数据和历史严重跨栈回归的旅程。
- 确定性与隔离。密封测试套件不得依赖执行顺序、墙上时钟、不可控随机值、公网、固定 sleep、默认开发端口或其他测试残留。注入时钟、随机生成器和标识符;随机化测试要播种并在失败时打印种子。按隔离并行;仅在真实全局资源无法隔离时串行,并记录资源与原因。密封的本地或 CI E2E 必须动态分配端口、创建唯一临时配置与状态位置、从干净起点迁移初始化,并在保存诊断证据后注册成功与失败清理。
- 失败证据与完成门禁。清理前保留浏览器 trace、截图、控制台输出、网络失败摘要、结构化服务与 worker 边界日志、请求与追踪标识、原生测试报告、随机种子和隔离环境标识,作为 CI 制品发布并设置保留策略,脱敏凭据、令牌、敏感正文和个人数据。出现以下情况拒绝完成:行为仅在更昂贵层得到无理由证明;Fake 替代了集成或 E2E 声称证明的边界;测试断言实现结构而非可观察行为;必要密封测试依赖顺序、固定 sleep、公共服务、默认开发端口、共享开发数据或不可控非确定性;必要 E2E 旅程使用重试、隔离、跳过或跨运行残留;BDD 场景含实现细节或行为变更缺少可追踪规格;specs/**/*.feature 中的场景缺少明确自动化测试覆盖;快照或交互断言掩盖被测行为;失败清理移除了必要诊断证据;仍存在明确适用的验证门禁或运行时配置未满足。
限制:资料未提供具体命令、安装方式、定价与平台支持信息,暂未提供。