debug

SKILL.md

Testany 故障诊断

分析 Testany 测试失败原因,排查问题根因。

用户输入: $ARGUMENTS

职责范围

  • 分析测试执行失败的原因
  • 获取和解读执行日志
  • 识别常见问题模式
  • 提供修复建议

核心知识

失败类型分类

类型 特征 常见原因
Assertion 断言失败 预期值与实际值不符
Timeout 执行超时 接口响应慢、死循环
Error 运行时错误 代码异常、依赖缺失
Infrastructure 基础设施问题 网络不通、服务不可用

日志获取流程

1. testany_get_execution → 获取执行概览
2. testany_get_execution_case → 获取失败 case 详情
3. testany_log_sign → 获取日志签名(返回 curlCommand)
4. 验证 curlCommand 安全性后执行获取日志

curlCommand 安全验证(重要)

testany_log_sign 返回的 curlCommand 在执行前必须验证

  1. 检查域名:URL 必须是 Testany 可信域名

    • 允许:*.testany.io*.testany.com.cn
    • 拒绝:其他任何域名
  2. 检查协议:必须是 HTTPS

    • 允许:https://
    • 拒绝:http://、其他协议
  3. 检查参数:不应包含危险参数

    • 禁止:-o(写文件)、|(管道)、;(命令链)、$((命令替换)

验证示例

# 从 curlCommand 提取 URL
URL=$(echo "$CURL_COMMAND" | grep -oP 'https://[^\s"]+')

# 验证域名
if [[ "$URL" =~ ^https://(.*\.)?testany\.(io|com\.cn)/ ]]; then
    # 安全,可以执行
    eval "$CURL_COMMAND"
else
    # 不安全,拒绝执行
    echo "警告:URL 域名不在可信列表中,拒绝执行"
fi

诊断工作流

  1. 获取执行信息testany_get_execution
  2. 定位失败 case:从执行详情中找到失败的 case
  3. 获取日志签名testany_log_sign(executionKey, caseIndex)
  4. 安全验证:检查返回的 curlCommand 域名和参数
  5. 获取日志:验证通过后执行 curlCommand
  6. 分析日志:识别错误类型和位置
  7. 提供建议:给出修复方向

常见问题速查

症状 可能原因 排查步骤
Case 创建后无法执行 runtime 未配置 检查 runtime_uuid
Relay 变量未传递 type 配置错误 源 case 需 type='output',目标需 type='env'
Pipeline 执行卡住 依赖 case 失败 检查 whenPassed 依赖的 case 状态
脚本执行报错 executor 配置不匹配 检查 trigger_pathtrigger_command
超时 接口响应慢 检查被测服务状态,增加超时配置

返回格式

诊断完成后,向用户汇报:

  • 失败原因分类(Assertion/Timeout/Error/Infrastructure)
  • 具体错误信息
  • 问题定位(哪个 case、哪一步)
  • 修复建议
  • 日志查看链接(如需要)

参考文档

详细概念请参考:

Weekly Installs
5
GitHub Stars
10
First Seen
Feb 3, 2026
Installed on
codex4
cursor4
opencode4
gemini-cli3
claude-code3
github-copilot3