Senro测试
根据用户指定的数量,从包含已添加到Senro的页面的仓库中,生成恰好数量的有用Senro测试用例。编码代理不运行WebMCP或生成的测试;Senro稍后针对已注册的页面运行测试套件。
工作流程
-
确认当前仓库包含被测试的WebMCP行为的页面。将仓库视为事实来源。
-
在生成任何内容之前检查仓库。排除
.git、依赖目录、构建输出、覆盖率输出和生成的文件。 -
使用项目自身的源代码、框架、依赖项、测试、夹具和文档,确定网站如何暴露其WebMCP工具。不要假定特定的WebMCP API、框架、文件布局或注册模式。
-
为每个发现的工具构建内部清单,包括其名称、描述、输入模式、注释、实现和可用示例。
-
如果无法从仓库中确定任何WebMCP工具,则停止并清晰报告。如果存在多个不相关的站点或应用,请识别它们并询问应使用哪一个。
-
阅读相关路由、组件、数据文件、夹具、验证代码、文档和现有测试,以映射真实的用户旅程以及可见的成功和失败状态。
-
在编写测试用例之前,阅读
references/import-format-v1.md。仅使用其中记录的字段和结构。 -
生成用户请求的恰好数量的不同测试用例。覆盖仓库中最强的旅程,包括成功工作流、边界条件、无效输入、空结果、恢复操作、重大操作以及源支持的状态断言。
-
如果仓库无法支持请求的基于源的有意义用例数量,则报告此限制并停止。不要用虚构的场景、值或行为填充套件。
-
仅使用源自源的支持的工具名称和参数。永远不要虚构ID、账户、产品、枚举值或后端状态。当无法安全确定精确的运行时值时,使用仅目标的测试。
-
仅当源支持预期路径时,才使用预期的工具调用。不要强制在可能有多个有效路径的工作流中使用精确的轨迹。
-
如果需要,创建
./senro。将套件写入./senro/test-cases.json。如果该文件已存在于磁盘上,则使用下一个可用的数字后缀,例如./senro/test-cases-2.json。已删除的Git跟踪文件不视为冲突。将套件直接放在./senro中;不要归档或移动现有文件。 -
在报告成功之前,对生成的精确文件运行内置的结构预检验证器:
node <skill-root>/scripts/validate-tests.mjs <output-path> -
报告确切的输出路径、测试数量、旅程覆盖范围以及任何假设。不要声称测试已通过运行时验证;Senro必须针对实时页面运行套件。
输出规则
- 写入一个包含
tests数组的JSON对象。 - 保持测试名称简洁,不超过70个字符。
- 编写自然的用户请求。仅在被测试行为需要时才包含技术细节。
- 在源支持的情况下,变化对话模式、评估类型和旅程复杂度。对明确请求使用脚本化对话,对需要澄清或多轮决策使用模拟对话。不要强制添加无用的变化。
- 脚本化测试仅包含一条初始用户消息。
- 模拟测试包含空的作者消息列表且没有作者后续消息。
- 确保每个测试都有一个目标、一个必需的预期调用或一个页面检查。
- 在成功结果中描述代理应完成的操作。对必要的调用和参数使用工具调用预期,对最终页面状态使用页面检查。当存在多个有效路径时,不要在结果中规定实现路径。
- 保持设置调用具体;绝不要在设置参数中使用匹配器运算符。
- 在页面检查中使用源自源的稳定选择器。
- 断言稳定的最终页面状态,而不是可能被后续有效操作清除的临时消息。通过支持的工具调用和结果检查或成功结果验证中间行为。
- 当禁用工具调用评估时,使用
expectedCall: null。它不禁止工具调用。 - 在生成套件时不要修改网站源代码。
- 不要将机密、凭据或私人客户数据写入套件。