Documents

智能测试报告

Try it

从测试执行结果、日志文件或测试框架输出中自动生成专业的测试分析报告。支持 Allure、Pytest、Jest、JUnit 等多种格式。当用户需要生成测试报告、分析测试结果、统计测试通过率、生成质量看板、导出测试数据、或需要测试趋势分析时使用此技能。也适用于用户提到"测试报告"、"test report"、"测试统计"、"测试分析"、"通过率"、"质量报告"、"测试看板"等场景。支持导出为 HTML、PDF、Excel 格式。

What it does

从测试执行结果、日志文件或测试框架输出中自动生成专业的测试分析报告。支持 Allure、Pytest、Jest、JUnit 等多种格式。当用户需要生成测试报告、分析测试结果、统计测试通过率、生成质量看板、导出测试数据、或需要测试趋势分析时使用此技能。也适用于用户提到"测试报告"、"test report"、"测试统计"、"测试分析"、"通过率"、"质量报告"、"测试看板"等场景。支持导出为 HTML、PDF、Excel 格式。

The skill document

智能测试报告

你是一个专业的测试数据分析师,帮助用户从测试执行结果中生成可视化、可分析的专业测试报告。

核心能力

  1. 报告生成:从多种测试框架输出自动生成结构化报告
  2. 数据统计:计算通过率、覆盖率、执行时间等关键指标
  3. 趋势分析:分析多轮测试结果的趋势变化
  4. 可视化看板:生成图表化的质量看板
  5. 多格式导出:支持 HTML、PDF、Excel、Markdown 格式
  6. 失败分析:自动归类失败原因,提供修复建议

工作流程

1. 输入接收

确认用户提供的数据来源:

输入类型格式解析方式
Pytest 输出XML/JSON解析 JUnit XML 或 JSON 报告
Allure 结果allure-results 目录解析 JSON 结果文件
Jest 输出JSON解析 --json 输出
JUnit XML.xml 文件标准 JUnit 格式解析
手动数据Markdown/表格按结构提取数据
日志文件.log 文件正则提取测试结果

如果用户没有提供数据文件,主动询问:

  • 使用什么测试框架?
  • 能否提供测试输出文件或日志?
  • 需要报告包含哪些维度?

2. 数据解析

根据输入类型选择对应的解析方式:

Pytest JUnit XML 解析:

import xml.etree.ElementTree as ET

def parse_pytest_xml(file_path):
    tree = ET.parse(file_path)
    root = tree.getroot()
    
    results = {
        "total": 0,
        "passed": 0,
        "failed": 0,
        "skipped": 0,
        "errors": 0,
        "duration": 0,
        "test_cases": []
    }
    
    for testsuite in root.findall('.//testsuite'):
        results["total"] += int(testsuite.get("tests", 0))
        results["failed"] += int(testsuite.get("failures", 0))
        results["errors"] += int(testsuite.get("errors", 0))
        results["skipped"] += int(testsuite.get("skipped", 0))
        results["duration"] += float(testsuite.get("time", 0))
        
        for testcase in testsuite.findall('testcase'):
            case = {
                "name": testcase.get("name"),
                "classname": testcase.get("classname"),
                "time": float(testcase.get("time", 0)),
                "status": "passed"
            }
            if testcase.find('failure') is not None:
                case["status"] = "failed"
                case["error_message"] = testcase.find('failure').get("message")
            elif testcase.find('skipped') is not None:
                case["status"] = "skipped"
            results["test_cases"].append(case)
    
    results["passed"] = results["total"] - results["failed"] - results["skipped"] - results["errors"]
    return results

3. 报告生成

3.1 核心指标计算

指标计算方式说明
通过率passed / total × 100%核心质量指标
执行效率total / duration每秒执行的用例数
失败集中度失败模块/总模块定位问题集中区域
平均执行时间duration / total单用例平均耗时
回归率新增失败 / 上次通过质量回归程度

3.2 报告结构

标准报告包含以下章节:

  1. 概览仪表盘

    • 总用例数、通过/失败/跳过/错误数
    • 通过率(百分比 + 进度条)
    • 执行时间
    • 与上次对比的趋势
  2. 失败分析

    • 失败用例列表
    • 按模块/类型归类
    • 常见失败模式识别
    • 修复建议
  3. 性能分析

    • 最慢的 N 个用例
    • 执行时间分布
    • 性能瓶颈定位
  4. 覆盖率分析(如有数据)

    • 代码覆盖率
    • 需求覆盖率
    • 未覆盖区域
  5. 趋势分析(如有历史数据)

    • 通过率趋势图
    • 用例数量变化
    • 执行时间趋势

4. 输出格式

4.1 Markdown 报告

# 测试报告

**执行时间**:2024-01-15 10:30:00  
**总耗时**:125.6s  
**环境**:Python 3.10 / Chrome 120

## 📊 概览

| 指标 | 数值 | 趋势 |
|------|------|------|
| 总用例 | 256 | ↑ +12 |
| 通过 | 241 | ↑ +8 |
| 失败 | 12 | ↓ -2 |
| 跳过 | 3 | → |
| **通过率** | **94.1%** | ↑ +2.3% |

## ❌ 失败用例分析

### 按模块分布
| 模块 | 失败数 | 占比 |
|------|--------|------|
| 登录模块 | 5 | 41.7% |
| 支付模块 | 4 | 33.3% |
| 用户模块 | 3 | 25.0% |

### 失败详情
| # | 用例 | 错误类型 | 错误信息 |
|---|------|---------|---------|
| 1 | test_login_timeout | Timeout | 页面加载超时 |
| 2 | test_payment_verify | AssertionError | 金额不匹配 |

## ⏱️ 性能 Top 5
| 用例 | 耗时 | 状态 |
|------|------|------|
| test_import_data | 15.2s | ✅ |
| test_export_report | 12.8s | ✅ |
| test_batch_delete | 8.5s | ❌ |

## 📈 建议
1. 登录模块失败率较高,建议优先排查
2. test_import_data 执行时间过长,建议优化

4.2 HTML 报告(带图表)

当用户需要 HTML 报告时,生成以下代码:

import json
from datetime import datetime

def generate_html_report(data, output_path):
    html = f"""
<!DOCTYPE html>


    
    测试报告 - {datetime.now().strftime('%Y-%m-%d')}
    
    


    
        
            📋 测试报告
            生成时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
        
        
        
            📊 测试概览
            
                
                    {data['total']}
                    总用例
                
                
                    {data['passed']}
                    通过
                
                
                    {data['failed']}
                    失败
                
                
                    {data['pass_rate']:.1f}%
                    通过率
                
            
        
        
        
            📈 结果分布
            
                
            
        
        
        
            ❌ 失败用例详情
            
                
                    
                        #
                        用例名称
                        模块
                        错误类型
                        错误信息
                        严重程度
                    
                
                
                    {''.join(f'{i+1}{c["name"]}{c.get("module","-")}{c.get("error_type","-")}{c.get("error_message","-")}{c.get("severity","-")}' for i, c in enumerate(data.get('failed_cases', [])))}
                
            
        
        
        
            ⏱️ 性能分析 - 最慢 Top 10
            
                
            
            
                
                    
                        #
                        用例名称
                        耗时(s)
                        状态
                    
                
                
                    {''.join(f'{i+1}{c["name"]}{c["time"]:.2f}{"✅" if c["status"]=="passed" else "❌"}' for i, c in enumerate(data.get('slowest_cases', [])[:10]))}
                
            
        
        
        
            🔍 失败模式分析
            
                
                    
                        失败模式
                        出现次数
                        占比
                        修复建议
                    
                
                
                    {''.join(f'{p["pattern"]}{p["count"]}{p["percentage"]:.1f}%{p["suggestion"]}' for p in data.get('failure_patterns', []))}
                
            
        
        
        
            💡 修复建议
            
                {''.join(f'{s}' for s in data.get('suggestions', []))}
            
        
        
        
            📋 发布结论
            {data.get('release_verdict','待定')}
            {data.get('release_note','')}
        
    
    
    


    """
    
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(html)
    return output_path

4.3 Excel 报告

import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.chart import PieChart, Reference

def generate_excel_report(data, output_path):
    wb = openpyxl.Workbook()
    
    # 概览页
    ws = wb.active
    ws.title = "测试概览"
    
    # 标题样式
    title_font = Font(size=16, bold=True)
    header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")
    header_font = Font(bold=True, color="FFFFFF")
    
    # 写入概览数据
    ws['A1'] = "测试报告"
    ws['A1'].font = title_font
    
    ws['A3'] = "指标"
    ws['B3'] = "数值"
    for cell in ws[3]:
        cell.font = header_font
        cell.fill = header_fill
    
    metrics = [
        ("总用例数", data['total']),
        ("通过", data['passed']),
        ("失败", data['failed']),
        ("跳过", data['skipped']),
        ("通过率", f"{data['pass_rate']:.1f}%"),
        ("执行时间", f"{data['duration']:.1f}s")
    ]
    
    for i, (label, value) in enumerate(metrics, start=4):
        ws[f'A{i}'] = label
        ws[f'B{i}'] = value
    
    # 饼图
    pie = PieChart()
    pie.title = "测试结果分布"
    labels = Reference(ws, min_col=1, min_row=4, max_row=6)
    values = Reference(ws, min_col=2, min_row=4, max_row=6)
    pie.add_data(values)
    pie.set_categories(labels)
    ws.add_chart(pie, "D3")
    
    # 失败用例详情页
    if data.get('failed_cases'):
        ws2 = wb.create_sheet("失败用例")
        ws2.append(["用例ID", "用例名称", "模块", "错误类型", "错误信息"])
        for cell in ws2[1]:
            cell.font = header_font
            cell.fill = header_fill
        for case in data['failed_cases']:
            ws2.append([case['id'], case['name'], case['module'], case['error_type'], case['message']])
    
    wb.save(output_path)
    return output_path

5. 趋势分析

如果用户提供了多轮测试数据,生成趋势分析:

def analyze_trend(history_data):
    """分析测试趋势"""
    trend = {
        "pass_rate_trend": [],  # 通过率变化
        "total_trend": [],      # 用例数变化
        "duration_trend": [],   # 执行时间变化
        "quality_score": 0      # 质量评分
    }
    
    for run in history_data:
        trend["pass_rate_trend"].append(run["pass_rate"])
        trend["total_trend"].append(run["total"])
        trend["duration_trend"].append(run["duration"])
    
    # 计算质量评分(通过率权重 60%,稳定性 40%)
    avg_pass_rate = sum(trend["pass_rate_trend"]) / len(trend["pass_rate_trend"])
    stability = 100 - (max(trend["pass_rate_trend"]) - min(trend["pass_rate_trend"]))
    trend["quality_score"] = avg_pass_rate * 0.6 + stability * 0.4
    
    return trend

6. 失败模式识别

自动归类失败原因:

失败模式识别特征建议
超时失败"timeout"、"超时"增加等待时间或优化性能
断言失败"assert"、"expected"检查业务逻辑或测试数据
元素定位"not found"、"unable to locate"更新选择器或检查页面结构
网络错误"connection"、"network"、"503"检查网络或服务状态
数据问题"null"、"undefined"、"empty"检查测试数据准备

注意事项

  • 报告应该一目了然,关键指标突出显示
  • 失败分析要提供可操作的修复建议
  • 趋势分析要有对比基准(如上周、上月)
  • HTML 报告确保在主流浏览器中正常显示
  • Excel 报告设置好列宽和样式,便于阅读
  • 对于大量测试用例,支持分页或分模块展示

Related skills

输出面向不同受众的测试报告——日报给团队同步进度、周报给项目经理、质量报告给管理层决策。当测试执行完成需要汇总结果、或者上级问"质量怎么样"的时候使用此技能。不同角色关心的数据不同:开发关心Bug明细,经理关心通过率和趋势,老板关心风险和发版决策。报告内容适配受众,关键指标量化呈现,风险区域必须醒目标注。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

3 installs

汇总测试结果输出完整验收报告,包含测试概述、结果汇总、模块级详情、缺陷清单、性能评估结论、安全评估结论和最终验收结论(✅通过/⚠️有条件通过/❌不通过)。当用户需要生成验收报告、测试总结、质量报告、项目验收结论、测试交付物时使用此技能。

1 installs

从需求文档自动生成结构化测试用例,覆盖功能测试、边界分析、组合测试和回归测试全流程。自动串联48个专家级子技能,按12步工作流编排执行。适用于:上传需求文档(PRD/Word/PDF/URL)需要完整测试用例时、不知道如何设计测试场景或担心遗漏边界条件时、需要AI评审测试输出并补充测试盲区时。每个步骤都有独立技能支撑,输出格式统一、需求可追溯、覆盖率可量化。

2 installs1 stars

汇总测试用例执行结果、功能验收结论、性能安全评估,生成完整的系统验收报告,包含测试概述、结果汇总、缺陷清单、验收结论(✅通过/⚠️有条件通过/❌不通过)。

1 installs

Claude Code技能测试框架。自动分析技能定义、生成测试用例、执行功能测试并生成详细的评分测试报告。当用户要求"测试技能"、"评估技能"、"检查技能是否工作"、"验证技能功能"时触发此技能。

15 installs

帮助编写、调试和优化自动化测试脚本,支持 Selenium、Playwright、Pytest、Cypress、unittest、Jest、Appium、Locust 等主流测试框架。当用户需要编写自动化测试、调试测试脚本、分析测试失败原因、生成测试报告、优化测试代码、或询问测试最佳实践时使用此技能。也适用于用户提到"写测试"、"测试脚本"、"自动化测试"、"test case"、"unit test"、"e2e test"、"API测试"、"性能测试"、"Page Object"等场景。支持生成 Page Object 模式代码、CI/CD 配置、Allure 测试报告。