mcpField
B
build-test-suite

build-test-suite

github.com/coval-ai测试与质量363 次安装1 天前更新
代码仓库

关于 build-test-suite

用于设计和创建 Coval 测试套件的工作流技能。它指导团队从基于来源的覆盖规划,推进到可评估预期、通过 CLI 创建、回读核验及整理未覆盖项。

主要功能

  1. 01构建基于来源的覆盖矩阵
  2. 02设计多样且真实的场景
  3. 03编写可观察的预期行为
  4. 04通过 Coval CLI 创建用例
  5. 05回读用例并核验结果

适用场景

  1. 01依据产品要求测试 Agent 行为
  2. 02覆盖已发现故障并避免用例重复
  3. 03准备小规模评估子集和缺口报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/coval-ai/coval-external-skills --skill build-test-suite

安装后在 Claude Code 中输入/build-test-suite确认已加载。

附带文件references/test-case-templates.mdreferences/test-set-types.md

详细介绍

构建实用的 Coval 测试套件

创建能够影响产品决策的测试。覆盖不同故障机制的一小组测试,比大量改写正常流程的测试更有用。

了解并复用

确认组织/工作区、Agent 和范围。检查所选 Agent、现有用例、相关录音,以及客户的权威信息源政策。使用 coval --agent agents get <id>、test-sets get 和 test-cases list --test-set-id <id>。检查命令帮助、错误和分页。不要替换现有测试套件,也不要仅根据有缺陷的 Agent 提示词推导需求。

对于大型语料库,distill-test-set 可以帮助筛选源数据行;请检查其生成的输入/预期结果对。对于尚未探索的对话,可以使用 coval-discover-failures。如果需求已明确,二者都不是必需的。

先设计覆盖范围,再写文案

制作一份精简矩阵,包含:需求或观察到的故障、来源、有意义的变化、场景、预期行为、所需证据以及风险/优先级。区分观察到的故障、政策要求和合成假设。

选择可能改变行为的维度:请求含糊、信息变更、工具结果缺失、不受支持的请求、来电者更正,或相关的音频条件。避免自动生成笛卡尔积。先生成组合,再构造真实的来电者场景;剔除不可能的组合和语义重复项。保留少量未改动的用例,以便后续进行回归检查。

对于语音,应将场景、角色设定和音频条件分开。从正常音频开始;只有在提出明确假设时,才改变口音/噪声/打断情况。不要在合成用例中加入真实客户的敏感信息。示例应为虚构内容,并符合客户支持的语言和工作流。

以下示例适用于一家公布营业时间为周一至周五上午 8 点至下午 5 点的诊所:

用例来电者场景预期 Agent 行为来源
营业时间询问诊所周五几点关门;致谢后在获得回答时结束通话回答周五下午 5 点关门办公室政策
非营业日询问周日是否营业;不要暗示答案说明周日不营业;不编造周日的营业时间办公室政策
更正先询问周四的情况,然后更正为周五回答更正后的日期假设的修正故障

这验证的是信息,而不是预约是否已成功记录。

让预期可评估

将每项强制行为分别写成一个数组条目。说明相关前提条件和可观察结果。避免使用“有帮助”等表述、任意数值评分,或在正确改述也可接受时强制要求特定措辞。

不要通过 input_str 或角色设定指令泄露答案。场景描述来电者的目标,而不是 Agent 的回复。根据当前测试用例规范选择输入模式:灵活交互使用 SCENARIO;仅当来电者每轮话语必须精确匹配时才使用 SCRIPT。不要将生成的对话称为真实的生产证据。

使用对话记录作为对话行为的证据,使用音频作为声学行为的证据,并使用相关联的工具结果验证实际副作用。如果证据无法支持某项标准,应修改该标准,或在评分前标明监测缺口。

创建并回读

在请求任何缺失的写入权限前,先在本地准备好确切的测试用例。 尊重对话中已授权的创建操作。使用结构化 JSON,而不是将客户提供的文本插入 shell 字符串:

coval --agent test-sets create --input-json @test-set.json
coval --agent test-cases create --input-json @case.json

test-set.json 使用公共 API 格式:

{"display_name":"Clinic information checks","test_set_type":"SCENARIO"}

获取实际的测试集 ID 后,case.json 内容如下:

{
  "test_set_id":"<returned-id>",
  "input_str":"Ask when the clinic closes on Friday. After the answer, thank them and end the conversation.",
  "expected_behaviors":["The assistant states that the clinic closes at 5pm on Friday."],
  "description":"Friday closing time; source: office policy",
  "input_type":"SCENARIO"
}

创建前,检查 coval test-cases create --help 和当前的 test-cases 架构。 如果 CLI 不支持结构化输入,可使用文档中说明的公共 API。创建下一项前检查每个 响应;如果超时情况不明确,先检查现有 资源,再重试,以避免重复。回读每个已创建的用例,并验证其输入和各项预期行为。 必要时使用分页确认数量。

交接

展示覆盖矩阵、ID 和未测试的缺口。将源分布与有意加权的失败用例分开。 创建测试套件并不代表获准运行。为 quick-eval 提出一个明确的小型子集, 列出数量,包括迭代次数、角色以及基础用例 + 变体。使用 configure-metrics 将适当的标准转化为临时度量。

评论

支持 Markdown