关于 build-test-suite
用于设计和创建 Coval 测试套件的工作流技能。它指导团队从基于来源的覆盖规划,推进到可评估预期、通过 CLI 创建、回读核验及整理未覆盖项。
主要功能
- 01构建基于来源的覆盖矩阵
- 02设计多样且真实的场景
- 03编写可观察的预期行为
- 04通过 Coval CLI 创建用例
- 05回读用例并核验结果
适用场景
- 01依据产品要求测试 Agent 行为
- 02覆盖已发现故障并避免用例重复
- 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 将适当的标准转化为临时度量。