AI测试自动化平台

企业级AI测试自动化平台,集成GitHub Copilot SDK和RAG技术,提供智能测试生成、自修复功能和全面记录特性。

  • by Keerthika3797
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Keerthika3797/mcp_integration

使用说明

集成MCP的测试自动化平台

企业级测试自动化平台,具有人工智能驱动的测试生成、自愈功能和全面的记录功能。

🚀 主要特点

核心能力

  • 🤖 AI驱动的测试生成:使用GitHub Copilot Direct SDK生成Playwright测试脚本
  • 🧠 基于RAG的流检索:用于智能测试上下文的ChromaDB嵌入的混合语义搜索
  • 🔧 自我修复测试:使用AI和Playwright官方文档自动修复失败的定位器
  • 📹 智能系统监控:使用丰富的元数据和DOM捕获记录用户交互
  • 🔍 痕量:将记录的动作与Playwright跟踪进行比较,以诊断缺失的步骤
  • 💾 向量数据库:使用RAG进行语义搜索、重新排序和智能上下文检索
  • 📊 Excel集成:使用数据映射生成手动测试用例

MCP集成

  • 📚 微软文档MCP:官方剧作家文档和代码示例(免费)
  • 🐙 GitHub MCP:在存储库中搜索测试模式
  • 📁 文件系统MCP:通过自动备份实现安全的文件操作
  • 🎭 剧作家测试MCP:浏览器自动化和测试生成

GitHub Copilot Direct SDK

  • 无需VS代码:适用于任何IDE或终端
  • API直接访问:使用GitHub Copilot进行基于令牌的身份验证
  • 多种型号:支持GPT-4、GPT-3.5涡轮增压、Claude Sonnet 4.5
  • 简单设置:使用GitHub令牌进行5分钟配置

📋 先决条件

  • Python 3.10+
  • Node.js 18+ (适用于MCP服务器和前端)
  • Git
  • GitHub账号 使用Copilot订阅
  • 剧作家浏览器 (通过脚本安装)

🛠️ 快速设置

1.克隆存储库

git clone <repository-url>
cd mcp_integration

2.设置Python环境

# Create virtual environment
python -m venv venv

# Activate (Windows)
.\\venv\\Scripts\\activate

# Install dependencies
pip install -r requirements.txt

3.设置MCP服务器

# Run the automated setup script
.\\setup_mcp.bat

此脚本将:

  • 验证Node.js安装
  • 安装所有MCP服务器
  • 创建 .env 从模板
  • 验证MCP配置

4.配置环境变量

编辑 .env 并添加您的GitHub令牌:

# GitHub Copilot Direct SDK & GitHub MCP
# Get from: https://github.com/settings/tokens
# Required scopes: read:user, user:email (copilot access required)
GITHUB_TOKEN=your_github_personal_access_token

# Copilot Configuration
COPILOT_MODE=direct  # Use Direct SDK (no VS Code needed)

获取您的GitHub令牌:

  1. 访问:https://github.com/settings/tokens
  2. 点击“生成新令牌(经典)”
  3. 姓名: Copilot API Access
  4. 选择范围: read:user, user:email
  5. 生成并复制令牌
  6. 增添 .env 文件

快速设置指南: 看 docs/QUICKSTART_COPILOT_DIRECT.md 完成5分钟的设置

验证设置:

python check_health.py

5.安装Playwright浏览器

playwright install chromium

6.设置前端(可选)

cd frontend
npm install
cd ..

7.验证安装

python check_health.py

预期产量:

✅ MCP Client: OK
✅ Playwright MCP Recorder: Available: True
✅ Microsoft Docs MCP: OK
✅ GitHub MCP: OK
✅ Copilot Client: Direct SDK - Model: gpt-4

🎯 运行应用程序

启动后端

cd app/api
uvicorn main:app --reload --port 8001

后端运行时间:http://localhost:8001

启动前端

cd frontend
npm run dev

前端运行于:http://localhost:5173

📖 使用示例

1.记录用户流量

python -m app.recorder.run_playwright_recorder_v2 --url "https://example.com" --capture-dom --timeout 60

按 Ctrl+C 停止录制。输出保存到 recordings/<session-name>/

2.生成测试脚本

通过用户界面:

  1. 引导到http://localhost:5173
  2. 点击“开始录制”
  3. 在目标网站上执行操作
  4. 停止录制
  5. 生成自动化脚本或手动测试用例

3.自愈测试(运行时)

试运行期间自动自愈 -当XPath/定位器失败时:

from app.self_healing_with_mcp import SelfHealingExecutor
from pathlib import Path

# Initialize executor
executor = SelfHealingExecutor(framework_root=Path("./framework_repos/my-framework"))

# Run with automatic self-healing (up to 2 retries)
success, logs, healing_attempts = executor.run_trial_with_real_time_healing(
    script_content=my_test_script,
    test_url="https://app.com/page",
    max_retries=2,
    headed=False
)

if success:
    print(f"✅ Test passed after {len(healing_attempts)} healing attempts")

运作原理:

  1. 测试失败 XPath/定位器不正确→ 自动检测
  2. 剧作家MCP捕捉 故障点的实际页面状态
  3. GitHub Copilot Direct SDK分析 使用Microsoft Docs MCP+生成的流进行失败与实际元素的比较
  4. 生成更好的定位器 (基于角色、testid、标签弹性模式)
  5. 自动检索 带有已修复的脚本→ 测试通过✅
  6. 保存已修复的脚本 以备后用

成本:包含在GitHub Copilot订阅中(不收取额外费用)

看: docs/RUNTIME_SELF_HEALING.md 获取完整指南

🧠 利用RAG实现人工智能的最大化

这个项目 最大化Gen AI概念 通过 RAG(检索增强生成):

为什么选择RAG?

传统的测试自动化使用静态JSON文件。对于RAG:

  • 🎯 语义搜索:“登录流”自动查找“用户身份验证”步骤
  • 🚀 亚秒级检索:矢量嵌入可跨1000多个流进行即时搜索
  • 🧠 上下文感知LLM:AI通过相关示例生成更好的测试
  • 🔄 混合方法:结合精确匹配+模糊语义搜索

RAG如何在这里工作

┌──────────────────────────────────────────────────────┐
│  RECORD → EMBED → STORE → QUERY → RETRIEVE → GENERATE │
└──────────────────────────────────────────────────────┘

1. Record browser actions → .refined.json with metadata
2. Embed steps with ChromaDB → 384-dimensional vectors
3. Store in vector database → Semantic index created
4. Query with natural language → "Create supplier flow"
5. Retrieve relevant steps → Hybrid search + reranking
6. Generate test script → LLM + retrieved context = ✨

RAG功能

✅ 语义检索:查找概念上相似的流,而不仅仅是关键字
✅ 混合搜索:结合了精确的元数据匹配+嵌入相似性
✅ 智能重新排名:按相关性(动作/导航/数据匹配)对步骤进行评分
✅ 回退策略:如果矢量数据库为空,则基于磁盘加载
✅ 多流上下文:从多个相关流中检索步骤
✅ MCP集成:结合RAG+官方剧作家文档以获得最佳效果

快速入门:

# 1. Ingest a flow into vector DB
python -m app.ingest_refined_flow --file "app\\generated_flows\\my_flow.refined.json" --flow-name "Create Supplier"

# 2. Query semantically
python -m app.core.vector_db query "create supplier automation" --top-k 10

# 3. Generate test (RAG runs automatically)
# Via API at http://localhost:8001/api/generate/preview

完整指南: docs/RAG_ARCHITECTURE.md
快速参考: docs/RAG_QUICK_REFERENCE.md

6.跟踪分析(诊断缺失动作)

将录制的动作与Playwright跟踪进行比较 识别缺失的步骤:

# 1. Record with trace enabled (default)
python -m app.recorder.run_playwright_recorder_v2 --url "https://example.com" --timeout 60

# 2. Analyze the recording
python -m app.recorder.trace_analyzer recordings/<session_name>

# 3. View trace in Playwright Inspector
playwright show-trace recordings/<session_name>/trace.zip

样本输出:

📊 Summary:
  - Trace events: 45
  - Recorded actions: 42
  - Missing events: 3
  - Coverage: 93.3%

❌ Missing Events:
  1. Type: click → Selector: button[data-testid="submit"]
  2. Type: fill → Selector: input#email
  3. Type: check → Selector: input[type="checkbox"]#terms

看: docs/TRACE_ANALYSIS.md 获取完整指南

5.基于RAG的语义搜索

使用RAG的矢量数据库进行智能流量检索:

# Ingest a recorded flow into vector DB for RAG
python -m app.ingest_refined_flow --file "app\\generated_flows\\my_flow.refined.json" --flow-name "Create Supplier"

# Query flows semantically (embedding-based similarity)
python -m app.core.vector_db query "Create Supplier" --top-k 5

# List all ingested flows
python -m app.core.vector_db list --limit 50

RAG的工作原理:

  1. 记录 用户流→ 产生 .refined.json 具有丰富的元数据
  2. 摄取 进入ChromaDB→ 为每个步骤创建语义嵌入
  3. 查询 用自然语言→ 混合搜索(语义+元数据)
  4. 检索 相关步骤→ AI根据相关性得分重新排序
  5. 生成 测试脚本→ LLM使用检索到的上下文

优点:

  • 🎯 语义匹配:“登录流”查找“用户身份验证”步骤
  • 🔄 自动重新银行:优先考虑最相关的步骤
  • 🚀 快速检索:矢量嵌入支持亚秒级搜索
  • 💡 上下文感知:法学硕士获得精确、相关的例子

🔧 MCP集成详细信息

微软文档MCP

目的: 官方剧作家文档和代码示例

from app.core.mcp_client import get_microsoft_docs_mcp

docs_mcp = get_microsoft_docs_mcp()

# Search documentation
results = docs_mcp.search_docs("Playwright locators")

# Get code samples
samples = docs_mcp.search_code_samples("getByRole", language="typescript")

自愈架构

目的: 使用GitHub Copilot Direct SDK进行自动测试修复

该系统结合了:

  1. 微软文档MCP:官方剧作家最佳实践(免费)
  2. GitHub Copilot Direct SDK:人工智能定位器生成
  3. 剧作家MCP:实时DOM状态捕获
  4. UI爬网数据:当前页面结构分析

结果:智能、有弹性的定位器生成,无需手动干预。

GitHub MCP

目的: 存储库管理和代码搜索

from app.core.mcp_client import get_github_mcp

github = get_github_mcp()

# Search code
code_results = github.search_code("playwright locators")

# Clone repository
github.clone_repository(repo_url, target_path)

看 MCP_INTEGRATION.md 以获取完整的文档。

🏗️ 项目结构

mcp_integration/
├── app/                        # Core application
│   ├── api/                   # FastAPI backend
│   ├── core/                  # Core utilities
│   │   ├── llm_client_direct.py # GitHub Copilot Direct SDK
│   │   ├── mcp_client.py      # MCP server clients
│   │   ├── vector_db.py       # RAG Vector DB (ChromaDB)
│   │   └── browser_utils.py   # Browser utilities
│   ├── generators/            # Test generation with RAG
│   │   └── agentic_script_agent.py  # AI script generation + RAG
│   ├── recorder/              # Recording module
│   │   ├── run_playwright_recorder_v2.py
│   │   └── mcp_integration.py # Recorder MCP integration
│   ├── ingestion/             # RAG ingestion pipeline
│   │   └── ingest_refined_flow.py  # Ingest flows to vector DB
│   └── services/              # Business logic
├── docs/                       # Documentation
│   ├── COPILOT_DIRECT_SDK.md  # Direct SDK guide
│   ├── QUICKSTART_COPILOT_DIRECT.md # 5-min setup
│   ├── MCP_INTEGRATION.md     # MCP integration
│   ├── RUNTIME_SELF_HEALING.md # Self-healing guide
│   └── [30+ other guides]     # Complete documentation
├── scripts/                    # Setup & utility scripts
│   ├── setup_mcp.bat          # MCP setup
│   ├── install_browsers.bat   # Playwright installation
│   ├── quick_start.bat        # One-command startup
│   └── [4 more scripts]       # Other utilities
├── examples/                   # Sample code
│   ├── locators/              # Example locator files
│   └── pages/                 # Example page objects
├── generator/                  # Legacy JS generators & prompts
│   ├── codeGenerator.js       # JavaScript code generator
│   ├── COMPLETE_SYSTEM_PROMPT.md # AI prompts
│   └── [8 more files]         # Prompt templates
├── templates/                  # Code templates
├── frontend/                   # React UI
├── tests/                      # Test suite
├── framework_repos/           # Cloned test frameworks
├── vector_store/              # ChromaDB storage (RAG embeddings)
├── .vscode/
│   └── mcp.json               # MCP server configuration
├── .env.template              # Environment variables template
├── README.md                  # This file
├── requirements.txt           # Python dependencies
└── package.json               # Node.js dependencies (MCP)

🧪 运行测试

# Run all tests
python -m pytest -q

# Run specific test file
python -m pytest app/tests/test_vector_db.py -v

# Run with coverage
python -m pytest --cov=app --cov-report=html

📊 关键工作流程

工作流程1:录制→ RAG摄入→ 脚本生成

  1. 记录 具有丰富元数据的用户流
  2. 摄取 进入向量数据库进行语义搜索
  3. 查询 自然语言场景
  4. 检索 通过RAG(混合搜索+重新排名)执行相关步骤
  5. 生成 带有LLM+检索上下文的测试脚本
  6. 审查 并部署

RAG优势:AI通过从以前记录的流中学习来生成更准确的测试。

工作流程2:录制→ 手动测试用例

  1. 使用UI或CLI启动记录器
  2. 对目标应用程序执行操作
  3. 停止录制(元数据已保存)
  4. 点击“生成手动测试用例”
  5. 下载带有测试用例的Excel

工作流程3:RAG驱动的自动化生成

  1. 摄取 将多个相关流导入向量数据库
  2. 请求 场景:“创建供应商并验证”
  3. RAG搜索 查找所有与供应商相关的步骤
  4. 重排序 按相关性(创建+验证步骤优先)
  5. LLM生成 综合测试脚本
  6. 审查 在UI预览中
  7. 推 到Git存储库

与基于磁盘的主要区别:RAG智能地自动组合来自多个流的见解。

工作流程4:自愈失败测试

  1. 测试执行失败,出现定位器错误
  2. 系统捕获错误日志和DOM状态
  3. 剧作家MCP抓取当前页面结构
  4. Microsoft Docs MCP提供最佳实践
  5. GitHub Copilot Direct SDK生成弹性定位器
  6. 使用已修复的脚本自动重试测试
  7. 更新定位器缓存以备将来使用

包含在GitHub Copilot订阅中

🔍 故障排除

GitHub令牌身份验证失败

Error: Authentication failed. Please check your GITHUB_TOKEN

解决方案:

  1. 在以下位置验证令牌:https://github.com/settings/tokens
  2. 确保GitHub Copilot订阅处于活动状态
  3. 检查令牌具有所需的作用域: read:user, user:email
  4. 如果已过期,则生成新令牌

未找到MCP服务器

Error: npx: command not found

解决方案: 从以下位置安装Node.js 18+https://nodejs.org/

副驾驶率限制

Error: Rate limit exceeded. Please try again later.

解决方案: 等几分钟,检查你的副驾驶计划限制

导入错误

ModuleNotFoundError: No module named 'app.core.llm_client_direct'

解决方案:

  1. 激活虚拟环境: .\venv\Scripts\activate
  2. 安装依赖项: pip install -r requirements.txt
  3. 从项目根目录运行

📚 文档

快速开始

核心功能

API与开发

🎯 快速参考

运行时自愈命令

# Basic self-healing trial
from app.self_healing_with_mcp import SelfHealingExecutor

executor = SelfHealingExecutor(framework_root=Path("./my-framework"))
success, logs, attempts = executor.run_trial_with_real_time_healing(
    script_content=test_script,
    test_url="https://app.com",
    max_retries=2
)

# Check if healing was successful
if success and attempts:
    print(f"✅ Healed after {len(attempts)} attempts")

手动自愈(无自动重试)

from app.self_healing_executor import run_trial_with_self_healing

success, logs, attempts = run_trial_with_self_healing(
    script_content=script,
    framework_root=Path("./framework"),
    max_retries=3,
    headed=True  # Show browser for debugging
)

MCP客户端使用情况

from app.core.mcp_client import (
    get_microsoft_docs_mcp,
    get_github_mcp,
    get_filesystem_mcp
)

# Search official Playwright docs
docs_mcp = get_microsoft_docs_mcp()
results = docs_mcp.search_docs("getByRole selector")

# Find test patterns in GitHub
github_mcp = get_github_mcp()
patterns = github_mcp.search_code("microsoft/playwright", "page.getByRole")

# Safe file operations
fs_mcp = get_filesystem_mcp()
fs_mcp.safe_write_file(Path("test.spec.ts"), content, backup=True)

直接使用Copilot SDK

from app.core.llm_client_direct import DirectCopilotClient

# Initialize client
client = DirectCopilotClient(temperature=0.2, model="gpt-4")

# Generate test code
response = client.invoke("Generate a Playwright login test")
print(response.content)

# Self-healing
from app.core.llm_client_direct import ask_llm_to_self_heal
fixed_script = ask_llm_to_self_heal(failed_script, error_logs, ui_crawl_data)

🤝 贡献

  1. 分叉存储库
  2. 创建特征分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

该项目是企业使用的专有软件。

🙏 致谢

  • 剧作家 -浏览器自动化框架
  • GitHub Copilot -人工智能驱动的测试生成和自我修复
  • 模型上下文协议(MCP) -AI代理集成
  • 微软文档 -剧作家官方文件
  • 快速API -后端框架
  • 反应 -前端框架

🚀 入门指南

新用户: 从...开始 快速启动_复制_延迟.md 最快的设置!

完整文档: 看 docs/ 文件夹中包含综合指南。