Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

用户边界证明

要证明一项用户可见的行为声明,需要到达受该声明影响的最外层生产边界,并检查用户实际观察到的结果。单元、组件和编译检查仍然有用,但它们本身不能证明命令、终端、浏览器、通道、守护进程、软件包或外部服务路径。

使用能触及所改动边界的最小可信证明。当聚焦的自动化测试能够可靠地覆盖该边界时,它是更优的选择。仅当剩余的不确定性依赖于真实的终端、浏览器、操作系统、包管理器、供应商服务、凭据交换、重连或副作用时,才补充手动或特定环境的证据。将实时测试保留给 Testing 中定义的全栈、真实外部服务级别。

选择边界

  1. 说明该 PR 声称的用户操作和可观察结果。
  2. 命名受该声明影响的最外层生产边界:process、terminal、local or remote transport、HTTP or browser、channel API、provider API、approval front door、execution wrapper、lifecycle owner、installer 或 package。
  3. 识别在当前 head 上达到该边界的现有自动化证据。
  4. 仅添加涵盖索赔未覆盖部分所需的证据。

达到指定边界时,刷新所需的 CI 计数。请参阅 CI & Actions,了解当前所需的覆盖范围以及需要补充证据的差距。

视觉呈现变更

对渲染文本、布局、间距、对齐方式、换行、裁剪、颜色、焦点、选择、响应式行为或其他可见状态的更改,都需要来自实际受支持界面的证据。在 zerocode、Web 仪表板、桌面应用、交互式 CLI 或 TUI、安装程序或其他受影响的界面上,针对一个可识别的修订版本复现更改后的状态。记录终端或视口尺寸,并包含一张或多张保护隐私的屏幕截图,展示更改后的内容以及足够的周围布局,以便判断结果。

只要自动化生成的屏幕截图能在所声称的边界处呈现生产界面,就可以接受。字符串断言、仅组件快照以及辅助函数级渲染器测试仍然是有用的回归证据,但不能替代实际界面证据。屏幕截图只能证明可见状态;涉及交互和过渡的声明还需要用户操作和观察到的结果。

证明矩阵

Surface用户路径与边界最小可信证明在以下情况时添加手动或特定于环境的证明
命令行界面,包括命令行快速入门用户调用已发布的命令,按照标志或 CLI 提示操作,并在进程和终端边界处观察输出、退出状态或已保存的状态。TUI 快速入门紧随 zerocode 行;Web 快速入门紧随网关和仪表板行。二进制衍生的自动化测试或脚本使用隔离的 home 或配置目录启动真实命令,并对用户可见的结果进行断言;Testing 决定套件级别。该声明取决于交互式提示、终端渲染、shell 或 PATH 行为、平台权限,或基于现有用户状态的升级行为。
zerocode 和守护进程传输zerocode 通过支持的本地 Unix socket 或 Windows 管道,或者通过远程 WSS 进行连接,发送真实请求,并渲染或持久化返回的状态。集成测试或系统测试使用真实的客户端、服务器和声明的传输方式,仅对外部服务进行模拟。该声明取决于键盘输入、终端布局、套接字路径或权限、TLS 或身份验证、重连行为,或守护进程的生命周期。
网关、API 和仪表盘客户端跨越 HTTP、WebSocket 或 SSE 边界,浏览器或 API 使用方会观察到响应、流、身份验证结果或状态变化。服务器级测试会触达真实的路由和中间件栈;浏览器声明还包括针对该路由契约的 UI 测试。该主张依赖于浏览器布局或交互、Cookie 或浏览器身份验证行为、重新连接时机、流式传输呈现方式,或已部署网络的限制。
频道一个真实的、符合渠道结构的入站事件会经过适配器解析和运行时分发,然后生成预期的出站回复、线程、媒体、反应或状态。适配器测试涵盖供应商负载,系统测试则在模拟供应商网络的情况下覆盖从入站到出站的完整路径。不确定性来自供应商侧的线程机制、提及规则、媒体限制、webhook 验证、投递行为,或测试 fixtures 中未提供的其他契约。使用专用测试账户。
提供商与模型路由用户配置和请求会选择目标提供程序和模型,然后暴露预期的流、响应、回退或错误。集成测试或系统测试使用真实的配置和路由路径,针对具有协议精确响应的模拟提供商端点进行测试。不确定性来源于提供商身份验证、网络行为、流式传输特性、速率限制、模型可用性,或其他未被 mock 所代表的外部契约。
工具审批和执行操作员通过变更后的 CLI、通道、ACP 或 Web 入口接收审批请求;决策进入通用策略;获批调用通过生产调度器或包装器执行,并呈现预期结果、回执、观察者事件、拒绝或副作用。通过通用审批管理器测试变更后的审批入口,然后用无害的测试工具以及受控的文件系统或进程夹具来驱动生产环境的调度路径。该断言依赖于终端、通道或浏览器呈现方式、操作系统权限、真实的外部程序、取消信号、硬件、网络访问或不可逆的副作用。
后台工作定时任务、SOP 运行、委派任务或运行时生成的子代理通过其实际的生命周期所有者启动,并且仅暴露该路径所支持的状态、持久化、取消、重试或重启行为。仅当声明包含持久化时,才通过其文档化的所有者和状态接口,使用确定性时钟或受控工作线程来驱动变更路径,并使用其配置的存储。该断言依赖于基于挂钟时间的调度、实际的服务重启、进程监管,或外部调度器或工作进程环境。
安装程序、软件包和发布产物用户运行更改后的安装程序模式,或在干净环境中安装生成的软件包或归档文件,然后启动已安装的二进制文件,并验证预期的版本或功能。在受影响的模式下运行安装脚本,或在干净的目标环境中提取或安装构建产物并运行最小化的安装后命令,以此验证已更改的入口点。目标未包含在必需的 CI 中,或该声明依赖于包管理器权限、Shell 集成、签名、公证、服务配置或平台特定的升级行为。

报告证据

验证证据应注明经过测试的修订版本、用户操作、环境、预期结果和实际结果。对于视觉呈现变更,请包含或链接所需的截图,并记录终端或视口尺寸。在有助于其他审阅者复现时,请链接自动化检查,或提供确切且安全的命令。截图只能证明可见状态,不能证明隐藏行为;日志只能证明其中记录的路径和结果。

当变更无法影响用户边界且未作出任何用户可见声明时,应说明额外的用户边界证明不适用。面向用户路径中保持行为不变的重构应依赖现有的边界回归覆盖;除非该覆盖存在明确命名的缺口,否则不需要新的手动证据或特定环境证据。

使用合成数据和专用测试账户进行实时验证。对凭据、令牌、个人数据和私有端点进行脱敏处理。未经明确授权,不得操作生产账户、执行不可逆操作或调用付费外部服务。