AI PLAY玩法更新持续收录
← 回到更新流

2026-09-08 · 原文发布日

ClickUp需求自动生成移动测试用例并复查覆盖缺口

ClickUp需求任务通过webhook触发后,流程先查已有测试任务避免重复,再把需求上下文、目标平台(iOS/Android)和已有覆盖交给Claude生成结构化测试场景,逐个建ClickUp测试任务(含前置条件、步骤、预期结果和标签);等待设定的天数后回收执行结果,再让Claude识别未覆盖场景,有缺口就自动建跟进任务。

原文要点

原流程(n8n模板19355,Oneclick AI Squad)由ClickUp webhook或手动触发,携带需求任务ID;先拉取需求详情并查询测试列表中同feature标签的已有任务以避免重复;把需求上下文、目标平台(iOS/Android)和已有覆盖发给Anthropic Claude,要求输出JSON格式的移动测试场景;为每个场景建含前置条件、步骤、预期结果、优先级和平台/类别/需求标签的ClickUp测试任务;等待配置的天数后回收pass/fail/blocked/pending状态,再让Claude识别未覆盖场景,有缺口就建跟进任务,否则标记需求为全覆盖。凭据方面需要ClickUp API(读任务+建任务)和以HTTP Header Auth(x-api-key)配置的Anthropic凭据。

这次做成什么

在n8n中搭一条从ClickUp需求到测试用例生成、再到覆盖缺口复查的闭环流程,并用一个虚构的登录需求手动走通一遍,验证去重、建任务和缺口分析三段逻辑。

准备什么

  • ClickUp账号及API Token,需对需求列表和测试列表有读取与创建任务权限
  • Anthropic API Key,在n8n中以Header Auth(x-api-key)方式配置,Messages API可访问
  • n8n实例(自托管或云),能用Webhook节点并拿到production URL
  • ClickUp中预先约定好平台标签(ios/android/both)和包含pass/fail/blocked字样的状态名

具体怎么做

  1. 配置凭据与常量

    在n8n中新建ClickUp API凭据(填入个人API Token)和Anthropic Header Auth凭据(Header名x-api-key,值为sk-ant开头的Key)。在流程的配置节点里填入需求列表ID、测试列表ID、目标平台数组["ios","android"]和等待天数(练习可设1天)。列表ID可在ClickUp列表URL中复制。

  2. 接入webhook并拉取需求

    用Webhook节点(POST路径如/clickup-requirement)接收ClickUp自动化规则推送的需求任务ID,复制production URL到ClickUp的Automations中配置『任务创建时POST到webhook』。接ClickUp节点用该ID调用Get Task取需求标题、描述和标签。练习阶段可先用手动触发+固定任务ID代替webhook。

  3. 查重并生成场景

    用ClickUp节点List Tasks按feature标签(如feature:login)查测试列表已有任务,把标题列表拼进上下文。HTTP Request节点POST到Anthropic Messages API(https://api.anthropic.com/v1/messages,Header加anthropic-version: 2023-06-01),body中model填claude-3-5-sonnet-20241022或你账号可用的模型,messages里放下方提示词artifact,要求返回纯JSON数组。用Code节点解析JSON并校验每个场景含title/preconditions/steps/expected/platform字段,已在已有任务中出现的标题直接过滤。

  4. 批量建测试任务

    Split Out节点逐个遍历场景数组,每个接ClickUp Create Task:name用场景title,description按『前置条件/操作步骤/预期结果』模板拼接markdown,tags加平台(ios/android/both)、类别(如functional)和需求标签(requirement:<需求ID>),priority映射场景里的优先级数值。

  5. 等待并复查覆盖

    Wait节点按配置天数等待。之后List Tasks按需求标签取回所有测试任务,Code节点统计pass/fail/blocked/pending数量并汇总标题+状态清单,再发一次Anthropic请求,要求对照需求验收标准列出未覆盖或阻塞的场景。IF节点判断返回的gaps数组非空则建一条『覆盖缺口跟进』任务,把缺口清单写进description;为空则在需求任务上加一条comment标记全覆盖。

可直接复制的材料

Claude测试场景生成提示词(本站独立编写)

本站独立编写的示例提示词,花括号变量需在n8n表达式中替换为实际数据;模型名与字段可按你的账号调整

你是一名移动应用QA工程师。根据以下产品需求,为iOS和Android平台生成结构化测试场景。

【需求标题】{{requirement_title}}
【需求描述与验收标准】{{requirement_description}}
【目标平台】{{platforms}}
【已存在的测试任务标题,不要重复】{{existing_tests}}

要求:
1. 覆盖正常流程、边界值、异常输入、网络中断、权限拒绝、平台差异(如iOS的Face ID与Android的BiometricPrompt)。
2. 只输出JSON数组,不要任何解释文字。每个元素格式:
{"title":"简短场景名","platform":"ios|android|both","category":"functional|ui|edge|negative","priority":1到4,"preconditions":"前置条件","steps":["步骤1","步骤2"],"expected":"预期结果"}
3. 最多生成8个场景,避免与已有任务标题语义重复。

需求与场景测试数据(合成JSON)

本站虚构的练习数据,requirement.id需换成你ClickUp中的真实任务ID

{
  "requirement": {
    "id": "86c1demo1",
    "title": "登录页支持邮箱验证码登录",
    "description": "用户输入邮箱后点击获取验证码,60秒倒计时内不可重复发送;验证码6位数字,5分钟内有效,连续输错5次锁定账号10分钟。",
    "tags": ["feature:login"]
  },
  "existing_tests": ["邮箱格式校验-合法与非法输入"],
  "platforms": ["ios", "android"]
}

输入与输出示例

本站虚构演示输出,未实际调用Claude;字段为示意,真实返回以模型为准

输入

需求:登录页支持邮箱验证码登录,60秒重发倒计时,验证码6位、5分钟有效,连错5次锁10分钟;已有任务仅覆盖『邮箱格式校验』

对应输出

Claude返回的JSON数组中应包含如{"title":"验证码倒计时60秒内禁止重发","platform":"both","category":"edge","priority":2,"preconditions":"已进入登录页且网络正常","steps":["输入合法邮箱","点击获取验证码","立即再次点击获取按钮"],"expected":"按钮置灰并显示剩余秒数,不发送新验证码"}等约7个新场景;复查阶段若『连续输错5次锁定』任务状态为blocked,则gap任务中列出该场景为未覆盖

做完检查这些

  • ClickUp测试列表中出现与场景数一致的新任务,每个任务含前置条件、步骤、预期结果及ios/android/both标签
  • 重复触发同一需求时,已有标题的场景不会被二次建任务
  • Wait到期后复查请求返回的统计数与测试列表中各状态任务数一致
  • 人为把某个测试任务置为blocked后,下一次复查生成一条覆盖缺口跟进任务且列出该场景

容易卡住的地方

  • ClickUp状态名必须与流程判断逻辑匹配,若你的空间用『通过/失败』中文状态,需在Code节点做映射,否则统计全归pending
  • webhook只在active状态的流程上使用production URL,测试URL触发一次即失效,练习时注意区分
  • 等待天数期内若测试任务被改标签或删除,复查统计会漏数,建议在任务上始终保留requirement标签
  • Anthropic返回可能带markdown代码块包裹,解析前要用正则剥掉```json围栏,否则Code节点报错

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Generate mobile QA test cases and coverage gaps with ClickUp and Claude
原作者
Oneclick AI Squad
原始发布日期
2026-09-08T04:23:24.287Z
来源
https://n8n.io/workflows/19355