mcpField
T
testdelta

testdelta

本地服务
github.com/CloudCorpRecords开发工具06 天前更新

关于 testdelta

testdelta 是比较基线与当前版本具名测试结果集的命令行工具和 MCP 服务。它按测试名称识别回归、修复、新增、移除及其他状态变化,而不只报告数量。

主要功能

  1. 01比较基线与当前版本的具名结果
  2. 02分类回归、修复、新增和移除项
  3. 03报告未变化及持续失败的测试
  4. 04按类别确定性排序测试名称
  5. 05提供易读报告和 JSON 报告

适用场景

  1. 01审查不同版本间的测试变化
  2. 02在 CI 结果文件中识别回归
  3. 03按名称追踪已移除或新失败的测试

MCP 相关

stdio MCP 服务提供 `diff_test_results`,接收结果目录或文件并返回完整 JSON 报告。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-testdelta": {
"command": "npx",
"args": [
"-y",
"@reneturcios/testdelta"
]
}
}
}
启动命令npx -y @reneturcios/testdelta

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/testdelta0.1.0
ocighcr.io/cloudcorprecords/testdelta:0.1.0

工具

1

收录的工具列表 · 更新于 6 天前

参数类型必填说明
pathstring是要检查的目标路径

详细介绍

testdelta

对两个命名的测试结果集进行差异比较,并准确报告哪些测试出现回归、哪些已修复、哪些新增、哪些已移除。人类可读报告中的每个类别都必须列出其中的测试名称,不能只给出原始计数。

功能说明

testdelta 将基准结果集与当前结果集进行比较。每个结果集都将测试名称映射到三种状态之一:pass、fail 或 skip。通过比较这两个结果集,它会计算:

  • 回归:基准结果集中为 pass 或 skip,而当前结果集中为 fail 的测试。
  • 已修复:基准结果集中为 fail,而当前结果集中为 pass 的测试。
  • 新增:仅存在于当前结果集中的测试,以及它们在当前结果集中的状态。
  • 已移除:仅存在于基准结果集中的测试,以及它们在基准结果集中的状态。
  • 仍然失败:两个结果集中的状态均为 fail 的测试。
  • 未变化:两个结果集中均存在且状态相同的测试,但不包括两个结果集中均为 fail 的情况。
  • 其他变化:两个结果集中均存在,但状态变化既不属于回归也不属于已修复的测试,例如从 pass 变为 skip。

每个类别中的名称列表按字母顺序排序,输出具有确定性:不含时间戳,也不采用随机排序。

调查结果会突出人类应优先查看的类别:

  • 每个回归对应一条 high 级别的调查结果(规则 REGRESSION,证据示例:base=pass head=fail)。
  • 每个已修复的测试对应一条 info 级别的调查结果(规则 FIXED)。
  • 每个已移除且原本通过的测试对应一条 medium 级别的调查结果(规则 REMOVED-PASSING)。
  • 每个新增且失败的测试对应一条 low 级别的调查结果(规则 ADDED-FAILING)。

输入格式

包含 base.json 和 head.json 的目录

将 testdelta 指向包含以下两个文件的目录:

base.json:

{
  "test-login": "pass",
  "test-checkout": "pass",
  "test-search": "fail"
}

head.json:

{
  "test-login": "fail",
  "test-checkout": "pass",
  "test-search": "pass"
}

在此示例中,test-login 出现回归,test-search 已修复。

包含 base 和 head 对象的单个文件

单个 JSON 文件可以同时包含两个结果集:

{
  "base": {
    "test-login": "pass",
    "test-search": "fail"
  },
  "head": {
    "test-login": "fail",
    "test-search": "pass"
  }
}

文件缺失、缺少 base 或 head 对象、JSON 格式错误,以及状态值不是 pass、fail 或 skip,都会导致错误。CLI 会报告错误并以代码 2 退出。

安装

npx @reneturcios/testdelta diff ./results

或者全局安装:

npm install -g @reneturcios/testdelta

CLI 用法

# Human readable report (default target is the current directory)
testdelta diff [path]

# Machine readable JSON report
testdelta diff [path] --json

# Run as an MCP server over stdio
testdelta mcp

# Print the version
testdelta --version

退出代码:

  • 0:判定结果为 NO-REGRESSION。
  • 1:判定结果为 REGRESSED。
  • 2:用法错误,包括输入缺失或无效。
  • 141:读取方提前关闭了输出管道(在 shell 中相当于 SIGPIPE)。

在人类可读报告中,每个类别最多列出 50 个测试名称。如果某个类别包含更多测试,列表末尾会显示明确的 and N more 行,而不是静默截断。JSON 报告始终包含完整的调查结果列表。

MCP 工具

MCP 服务公开一个工具:

diff_test_results
  • 输入:path,目标目录或单个结果文件。
  • 输出:完整的 JSON 报告,包含判定结果、每个类别的计数、调查结果,以及列出各项计数和首批回归测试名称的摘要。

判定规则

  • REGRESSED:至少存在一项回归,即某个测试在基准结果集中为 pass 或 skip,而在当前结果集中为 fail。
  • NO-REGRESSION:不存在回归。新增的失败测试、已移除的测试,以及在基准结果集中已经失败的测试,都不会单独改变判定结果;它们会作为调查结果和计数列出,供人类判断。

限制

  • testdelta 处理的是结果文件。它不会运行测试,也不会自行生成 pass、fail 或 skip 值;测试运行器或 CI 作业必须先写入结果集。
  • 测试名称匹配采用精确的字符串相等比较。重命名的测试会显示为一个已移除的测试和一个新增的测试,而不是一项变更。
  • 仅支持 pass、fail 和 skip 三种状态。进行差异比较前,请将其他测试运行器结果映射到这三种状态之一。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。