关于 qa-sprint-report-by-testomatio
为使用 Testomat.io 的 QA 团队提供冲刺报告生成流程,覆盖冲刺识别、测试结果收集和 HTML 报告输出。它强调先核实冲刺身份,并仅呈现 MCP 返回的数据。
主要功能
- 01按里程碑、运行组或运行识别冲刺
- 02收集运行与测试结果
- 03按模板整理报告章节
- 04生成 HTML 报告并可选导出 Markdown
- 05缺失数据不作推测
适用场景
- 01冲刺结束后向利益相关者汇报 QA
- 02冲刺评审时查看通过、失败和阻塞项
- 03在冲刺中途记录测试进度
MCP 相关
通过 MCP 工具查询里程碑、运行、测试结果及可用分析数据,并据此填充报告。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ testomatio/ skills --skill qa-sprint-report-by-testomatio安装后在 Claude Code 中输入/qa-sprint-report-by-testomatio确认已加载。
附带文件references/qa-sprint-report.md
详细介绍
Testomat.io 的 QA 冲刺报告
适用场景
- 冲刺结束时 — 为利益相关者生成一份可分享的 QA 报告。
- 冲刺评审时 — 需要结构化地查看已测试、通过、失败和受阻的内容。
- 冲刺中期状态 — 记录当前的执行进度。
- 用户提到“冲刺报告”“QA 摘要”“冲刺进度”或类似内容。
如何识别冲刺
用户可能通过以下任一方式标识冲刺(按优先级排序):
- 里程碑名称或 ID — 例如“冲刺 42”“冲刺 2024.3”——使用
milestones_list(type="Sprint")查找。 - 运行组标题 — 例如“冲刺 42 运行”——使用
rungroups_list/rungroups_get。 - 运行 ID 或运行标题 — 使用
runs_get或runs_list。 - 计划标题或 ID — 使用
plans_list/plans_get。 - 未提供标识符 — 请用户指定冲刺里程碑、运行组或运行。
如果用户只提供了冲刺名称,例如“冲刺 42”,务必先将其解析为具体的里程碑、运行组或运行。不要假设标题直接对应某个 ID。
规则
- 不要编造数据。 如果 MCP 未返回某个值,请使用
[None]或隐藏该部分。绝不要虚构数字或状态。 - 先解析冲刺。 未经验证,绝不要假设冲刺名称直接对应某个运行 ID。
- 隐藏不可用的部分。 如果分析数据(第 8 节)不可用,请完全省略该部分,不要留下占位文本。
- 操作之间空一行。 适用于生成的任何代码或 CLI 片段。
- 使用 TQL 进行筛选。 调用
runs_list、tests_list、testruns_list时,始终优先使用tql筛选,而不是在客户端进行筛选。 - 默认输出为 HTML。 首先生成
.html;只有用户明确要求,或其初始提示中包含保存为.md的请求时,才提供.md。
MCP 工具映射
报告的每个部分都对应特定的 MCP 工具。完整的章节结构和指标请参阅模板:
- qa-sprint-report.md — 包含填充占位符的章节布局
快速命令
| 操作 | MCP 工具 | 关键参数 |
|---|---|---|
| 查找冲刺里程碑 | milestones_list | type="Sprint"、status="active" |
| 列出冲刺的运行 | runs_list | tql:milestone == '{id}' |
| 获取运行详情 | runs_get | run_id |
| 获取测试结果 | testruns_list | run_id、filter_status |
| 获取测试套件中的测试 | tests_list | suite_id、per_page=100 |
| 检查分析功能是否可用 | system_ping | (响应中的 Enterprise 标记) |
| 获取测试健康度分析 | analytics_tests | kind、days、from、to |
| 获取统计分析 | analytics_stats | kind、from、to |
工作流
第 1 步:解析冲刺标识
如果未提供冲刺标识,请询问用户。尝试解析:
1. milestones_list(type="Sprint") — find milestone matching sprint name
2. rungroups_list — find rungroup with sprint title
3. runs_list(tql="title % 'Sprint N'") — find runs by title
第 2 步:收集冲刺元数据和时间范围
为报告页眉收集以下信息:
- 使用
milestones_get(milestone_id)或rungroups_get(rungroup_id)获取冲刺标题和日期。 - 如果 TMS 中没有 QA 负责人姓名,请询问用户。
重要:提取冲刺时间范围
按以下优先级解析冲刺时间范围:
- 用户提供的信息 — 如果用户在初始提示中指定了时间范围,请使用该范围。
- 里程碑/运行组日期 — 从
milestones_get或rungroups_get中提取start_date/due_date。 - 运行时间戳 — 如果里程碑/运行组没有日期,则根据冲刺运行中最早的
created_at和最晚的finished_at推算(使用runs_get)。 - 手动输入 — 如果无法从 TMS 确定时间范围,请用户手动指定冲刺周期。
以下操作需要时间范围:
analytics_tests(kind="...", from="YYYY-MM-DD", to="YYYY-MM-DD")analytics_stats(kind="...", from="YYYY-MM-DD", to="YYYY-MM-DD")- 按冲刺周期筛选运行
第 3 步:收集运行数据
runs_list(tql="milestone == '{id}'")— 获取冲刺里程碑的所有运行- 对每次运行,调用
runs_get获取状态、计数和环境 testruns_list(run_id, filter_status)— 获取每次运行的通过/失败/跳过数量
第 4 步:构建报告章节
遍历模板的第 1–9 节,使用 MCP 数据填充。应用以下规则:
- 如果某项指标不可用 → 在单元格中使用
[None] - 如果整个章节没有数据 → 隐藏该章节(不显示占位文本)
- 第 8 节(分析)→ 检查
system_ping响应中的 Enterprise 功能;如果不可用,则隐藏该章节
第 5 步:写入输出文件
将填充完成的报告写入:
{user-specified-path}/QA_Sprint_Progress_Report_{SprintName}_{YYYY-MM-DD}.html
如果未指定路径,则保存到当前工作目录。
第 6 步:提供 Markdown 导出选项
写入 .html 文件后,询问用户是否也要将报告导出为 .md 文件:
❓ The report has been saved to `{path}`.
Would you like to also export it as a `.md` file?
1. ✏️ Yes, save as `.md` in the same location
2. 👍 No, keep the `.html` only
如果用户选择选项 1:
- 将 HTML 内容转换为 Markdown 格式。
- 使用参考资料中的模板生成 Markdown 格式的报告 - qa-sprint-report.md。
- 将文件保存为
QA_Sprint_Progress_Report_{SprintName}_{YYYY-MM-DD}.md,并放在与 HTML 文件相同的目录中。
如果用户选择选项 2:
- 确认
.html路径并结束工作流。
HTML 模板样式
导出为 HTML 时,应用以下样式:
配色方案
| Token | 十六进制值 | 用途 |
|---|---|---|
--primary-color | #6366f1 | 标题、徽章、链接 |
--primary-hover | #4f46e5 | 悬停状态 |
--success-color | #10b981 | 通过/就绪徽章 |
--danger-color | #ef4444 | 失败/受阻徽章 |
--warning-color | #f59e0b | 进行中徽章 |
--info-color | #3b82f6 | 信息徽章 |
--gray-50 to --gray-900 | #f9fafb → #111827 | 文本层级 |
排版
- 字体系列: Inter(Google Fonts),回退字体:
-apple-system, BlinkMacSystemFont, sans-serif - 字体粗细: 300(细体)、400(常规)、500(中等)、600(半粗体)、700(粗体)、800(特粗体)
- 等宽字体:
ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas— 用于工单 ID 和代码 - 图标: Font Awesome 6.4.0(
fa-solid)
状态徽章
| 状态 | 背景 | 文字颜色 |
|---|---|---|
passed, ready | #d1fae5 | #065f46 |
failed, blocked | #fee2e2 | #991b1b |
progress | #fef3c7 | #92400e |
info | #dbeafe | #1e40af |
关键元素
| 元素 | 描述 |
|---|---|
.main-container | 白色玻璃卡片(rgba(255,255,255,0.98)),带有 backdrop-filter: blur(20px),最大宽度 1300px,圆角半径 20px |
.header | 渐变背景(linear-gradient(135deg, #6366f1, #4f46e5))、白色文字、弹性布局 |
.section-card | 白色背景,1px 边框 --gray-200,圆角半径 12px,box-shadow |
.report-table | 全宽、边框合并、鼠标悬停时高亮行 |
.meta-grid | CSS Grid(repeat(auto-fit, minmax(220px, 1fr))),间距 20px |
.instruction-card | 信息框,左侧有 5px 的 --primary-color 边框,背景为 #eef2ff |
.tms-link | 主色链接,悬停时显示下划线 |
HTML 结构
<div class="main-container">
<header class="header">
<div class="header-title">
<h1>QA Sprint Progress Report</h1>
<p><i class="fa-solid fa-cubes"></i> [Project Name]</p>
</div>
<div class="header-badge">
<i class="fa-solid fa-calendar-days"></i> Sprint: [Sprint Number]
</div>
</header>
<section class="instruction-section">
<div class="instruction-card">
<h5><i class="fa-solid fa-circle-info"></i> How to Use This Template</h5>
<ul>...</ul>
</div>
</section>
<main class="content-section">
<div class="section-card">
<div class="section-title"><i class="fa-solid fa-chart-pie"></i> 1. Sprint Summary Scorecard</div>
<div class="meta-grid">...</div>
</div>
</main>
</div>
报告模板参考
| 章节 | 描述 |
|---|---|
| qa-sprint-report.md | 包含所有章节、表情符号和填充占位符的完整模板 |
评论
支持 Markdown