TestGPT-多环境QA测试平台
使用Agno框架和模型上下文协议(MCP)集成完成AI代理示例。包括Slack机器人程序、网络自动化、后端API测试、文档查找和文件系统操作。
将简单的Slack消息转换为完整的跨浏览器、跨设备和跨网络测试矩阵。TestGPT的行为就像一个专业的手动QA工程师,在多个环境中自动测试您的站点,并对故障进行优先级排序。
目录
______________________________________________________________________
特性
核心能力
- AI驱动:使用克劳德十四行诗4进行智能任务理解
- 多个MCP服务器:Context7文档、文件系统、Playwright网络自动化
- 基于PR的上下文测试:使用部署URL自动测试GitHub PR
- 动态后端API测试:从repos/PR自动测试任何用户API
- Slack集成:具有网络自动化和API测试的生产机器人
- 持续会话:跨任务维护状态
- 代码覆盖率:MCDC分析和智能停止条件
多环境测试
- 10个视口配置文件 (iPhone SE→ 桌面超宽)
- 4个浏览器引擎 (Chrome、Safari、Firefox、Edge)
- 3网络条件 (正常、3G速度慢、片状)
- 自动矩阵扩展 (一个请求→ N次试运行)
- 真正的剧作家MCP执行 (实际浏览器,而非嘲笑)
智能测试计划
- 自然语言解析 来自Slack
- 确定性测试流程 有客观的检查点
- 自动场景持久化 用于重新运行
- 故障优先级 (P0严重→ P2边缘情况)
- 基于覆盖范围的停车条件 MCDC分析
综合报告
- 格式化Slack摘要 环境崩溃
- 按维度统计 (按视口、浏览器、网络)
- 可采取的下一步行动 用于解决问题
- 证据收集 (屏幕截图、控制台错误)
- HTML/JSON覆盖率报告
测试持久性和重新运行
- 测试库:将AI生成的测试保存到数据库
- 配置模板:可重复使用的测试配置(回归、冒烟、移动等)
- 使用不同的设置重新运行:更改浏览器、视口、网络条件
- 执行历史:跟踪所有具有详细结果的测试运行
- 批处理执行:使用相同的配置运行多个测试
- REST API:用于测试管理的完整后端API
- 现代仪表板:Next.js UI用于测试库和执行跟踪
______________________________________________________________________
快速开始
完成设置(建议使用3个终端)
终端1:启动后端API
./scripts/START_EVERYTHING.sh后端运行时间:http://localhost:8000
终端2:启动Slack Bot
./scripts/START_SLACK_BOT.shBot连接到Slack工作区并监听命令。
终端3:启动前端(可选)
cd frontend
npm run dev前端运行于:http://localhost:3000
替代方案:测试演示(不需要Slack/MCP)
python scripts/test_testgpt.py这展示了模拟结果的完整流程。
Slack命令示例
# Basic testing
@TestGPT test pointblank.club responsive on safari and iphone
@TestGPT run checkout flow on chrome desktop and ipad under slow network
# PR-based testing with coverage
@TestGPT test this PR https://github.com/owner/repo/pull/123 with coverage
# Custom instructions
@TestGPT Test github.com, are you able to view the repositories of SkySingh04?
# Scenario management
@TestGPT list scenarios
@TestGPT re-run last test
@TestGPT re-run pointblank responsive test
# Backend API testing
@TestGPT test the backend API health
@TestGPT run smoke tests on all endpoints______________________________________________________________________
安装
1.安装依赖项
pip install -r requirements.txt
npx playwright install2.配置环境
cp .env.example .env所需的环境变量:
ANTHROPIC_API_KEY-从console.anthropic.com获取SLACK_BOT_TOKEN-您的Slack机器人令牌(xoxb-…)SLACK_APP_TOKEN-您的Slack应用令牌(xapp-…)GITHUB_TOKEN-(可选)用于发布公关评论
3.初始化数据库(用于测试持久性)
python coverage/cli.py init4.验证浏览器安装
./scripts/ENSURE_BROWSERS_INSTALLED.sh______________________________________________________________________
覆盖系统
TestGPT包括一个具有MCDC(修改条件/决策覆盖)分析的全面代码覆盖系统。
特性
- MCDC分析:分析安全关键系统的复杂布尔条件
- 覆盖范围跟踪:测试执行期间的实时覆盖率监控
- 智能停止条件:多标准决策(阈值、MCDC、平稳期)
- 报告生成:HTML、JSON和摘要格式
- 数据库持久性:SQLite存储覆盖率运行和分析
快速开始覆盖
# Initialize coverage database
python coverage/cli.py init
# Analyze MCDC requirements
python coverage/cli.py analyze-mcdc examples/sample_mcdc.py
# Run end-to-end test
python scripts/test_coverage_system.py在Slack中使用覆盖率
@TestGPT test PR https://github.com/owner/repo/pull/123 with coverage机器人将:
- 分析PR变化
- 使用覆盖率跟踪执行测试
- 评估MCDC要求
- 达到覆盖阈值(默认80%)时停止
- 生成HTML覆盖率报告
- 将摘要发布到Slack,覆盖率为%
覆盖范围报告
在覆盖率测试后,报告将保存到:
- HTML报告:
./coverage_reports/coverage-{run-id}.html - Slack中的位置:测试摘要中显示的路径
配置预设
有三个质量级别可供选择:
允许(50%覆盖率):
config = CoverageConfig.permissive()
# Fast iteration, quick feedback默认值(80%覆盖率):
config = CoverageConfig.default()
# Balanced quality and speed严格(100%覆盖+MCDC):
config = CoverageConfig.strict()
# Safety-critical, production-readyMCDC分析
MCDC需要用于:
- 航空软件(DO-178C)
- 汽车系统(ISO 26262)
- 医疗器械
- 安全关键代码
例子:
# Complex authentication logic
if user.is_authenticated and (user.is_admin or resource.is_public):
grant_access()
# MCDC Analysis Results:
# - Conditions: 3
# - Required Tests: 4 (not 8)
# - Truth Table Rows: 8
# - MCDC Achievable: Yes停止条件
在以下情况下,系统停止测试:
- 达到覆盖阈值 (默认值为80%)
- MCDC满意 (所有条件均已独立测试)
- 检测到高原 (连续5次测试无改善)
- 时间限制已超过 (默认60分钟)
- 已达到最大测试次数 (默认100个测试)
文档
全覆盖系统文档:
- 建筑:
coverage/README.md - 入门指南:
coverage/GETTING_STARTED.md - 实施状态:
coverage/IMPLEMENTATION_STATUS.md - 演示指南:
COVERAGE_DEMO_GUIDE.md - 生产准备就绪:
PRODUCTION_READINESS_REPORT.md
______________________________________________________________________
测试持久性和重新运行
特性
测试库
- 将所有AI生成的测试保存到SQLite数据库
- 在web仪表板中查看已保存的测试
- 按名称、URL、标签搜索和筛选测试
- 每个测试的执行历史
配置模板
- 创建可重用的测试配置
- 标准预设(回归、烟雾、移动等)
- 自定义浏览器/视口/网络组合
- 并行执行设置
重新运行功能
- 从前端仪表板重新运行测试
- 从Slack重新运行
@TestGPT re-run [test name] - 使用不同的配置重新运行
- 批量重新运行多个测试
执行跟踪
- 完整的执行历史记录
- 状态跟踪(挂起、正在运行、已通过、失败)
- 执行日志和屏幕截图
- 性能指标和统计数据
使用测试持久性
通过前端
- 打开http://localhost:3000/test-图书馆
- 查看所有已保存的测试
- 点击“查看”查看测试详情
- 点击“运行”以执行/重新运行
通过Slack
# List saved tests
@TestGPT list scenarios
# Re-run a specific test
@TestGPT re-run login test
# Re-run last test
@TestGPT re-run last test
# Re-run with different config
@TestGPT re-run checkout flow browser:firefox viewport:mobile通过API
# List all tests
curl http://localhost:8000/api/tests
# Get test details
curl http://localhost:8000/api/tests/{test_id}
# Re-run test
curl -X POST http://localhost:8000/api/tests/{test_id}/run \
-H "Content-Type: application/json" \
-d '{"triggered_by": "manual"}'
# View execution history
curl http://localhost:8000/api/tests/{test_id}/history数据库模式
七张主要桌子:
test_suites-测试定义test_executions_v2-执行记录configuration_templates-可重复使用的配置execution_steps-逐步取得成果pr_test_runs-基于PR的测试跟踪pr_test_metrics-PR测试统计- 覆盖率表(7个附加表)
文档
有关测试持久性的完整文档:
- 用户指南:
USER_GUIDE_RERUN.md - 验证报告:
VALIDATION_REPORT.md - 修复摘要:
FIX_SUMMARY.md - Slack集成:
SLACK_RERUN_AND_DB_FIXES.md
______________________________________________________________________
动态后端API测试
使用零配置测试来自repos、分支或PR的任何用户提交的后端API。
主要特点
- 零配置:使用一行代码测试任何API
- OpenAPI反思:自动提取API规范
- MCP包装生成:动态创建FastMCP工具
- 存储库支持:克隆、测试和清理GitHub存储库
- CI/CD就绪:非常适合自动化测试管道
- 多框架:适用于FastAPI、Flask、Django
建筑
User Input (Repo URL + Branch/PR)
↓
RepoManager: Clone & Install
↓
APIDiscoveryService: Load App & Extract OpenAPI
↓
MCPGenerator: Generate @mcp.tool() Code
↓
DynamicServerManager: Start API + MCP Servers
↓
Agno Agent: Test via MCPTools
↓
Results + Cleanup用法示例
from dynamic_backend_testing import DynamicBackendOrchestrator
orchestrator = DynamicBackendOrchestrator()
# Test a GitHub repo
result = await orchestrator.test_repo(
repo_url="https://github.com/user/api-repo",
branch="feature-branch",
test_suite="comprehensive"
)
# Test a pull request
result = await orchestrator.test_repo(
repo_url="https://github.com/user/api-repo",
pr_number=123
)
# Test local API
result = await orchestrator.test_local(
api_path=Path("/path/to/local/api"),
app_module="main:app"
)CI/CD集成
# GitHub Actions
python examples/test_pr.py \
--repo ${{ github.repository }} \
--pr ${{ github.event.pull_request.number }}
# GitLab CI
python examples/test_pr.py \
--repo $CI_REPOSITORY_URL \
--pr $CI_MERGE_REQUEST_IID文档
有关完整文档:
- 系统概述:
dynamic_backend_testing/README.md - 例子:
examples/README.md
______________________________________________________________________
浏览器设置
所有Playwright浏览器(Chromium、WebKit/Safari、Firefox)都会自动安装和配置。
状态
- 铬: ✅ 工作
- WebKit/Safari: ✅ 正在工作(已修复!)
- 火狐: ✅ 工作
浏览器位置
~/Library/Caches/ms-playwright/
├── chromium-1198/
├── webkit-2215/
├── firefox-1495/
└── mcp-webkit → webkit-2215 (symlink)自动设置
./scripts/ENSURE_BROWSERS_INSTALLED.sh此脚本:
- 安装所有Playwright浏览器(如果缺少)
- 检测最新浏览器版本
- 验证浏览器二进制文件是否存在
- 创建/修复MCP符号链接
- 配置Playwright浏览器链接
- 运行全面的验证检查
测试浏览器
# Test Chrome
python test_testgpt.py test "https://example.com" browser:chrome
# Test Safari
python test_testgpt.py test "https://example.com" browser:safari
# Test Firefox
python test_testgpt.py test "https://example.com" browser:firefox故障排除
如果您看到“浏览器未安装”错误:
# Run setup script
./scripts/ENSURE_BROWSERS_INSTALLED.sh
# Or manually reinstall
npx playwright install chromium webkit firefox文档
- 浏览器设置完成:
BROWSER_SETUP_COMPLETE.md - Safari/WebKit修复:
SAFARI_WEBKIT_FIX_COMPLETE.md
______________________________________________________________________
示例与演示
Slack机器人(生产)
文件: slack_agent.py
- 带有Playwright MCP的生产就绪Slack机器人
- 对渠道提及做出回应
- 执行web自动化任务和PR测试
- 将结果发布回Slack
代理示例(examples/)
01_basic_context7_agent.py-使用Context7 MCP查找文档02_filesystem_agent.py-文件操作03_multi_agent_team.py-多智能体协调04_streamlit_app.py-用于代理交互的Web UI05_playwright_mcp_agent.py-持续浏览器会话demo_google_search.py-谷歌搜索自动化demo_persistent_session.py-多步浏览器任务test_github_repo.py-测试任何GitHub存储库test_pr.py-测试拉取请求(CI/CD就绪)
测试脚本(scripts/)
test_testgpt.py-完整的端到端测试演示test_coverage_system.py-覆盖系统验证test_api_endpoints.py-API终点测试test_api_key.py-验证API密钥test_mcp_connection.py-测试MCP服务器连接verify_installation.py-安装验证
运行示例
# Run agent examples
python examples/01_basic_context7_agent.py
python examples/demo_google_search.py
# Run Streamlit app
streamlit run examples/04_streamlit_app.py
# Run tests
python scripts/test_testgpt.py
python scripts/test_coverage_system.py______________________________________________________________________
配置
添加新视口
编辑 config.json:
{
"viewports": {
"your-custom-viewport": {
"name": "your-custom-viewport",
"display_name": "Your Custom Device",
"playwright_device": null,
"mcp_launch_args": ["--viewport-size=375x667"],
"width": 375,
"height": 667,
"device_scale_factor": 2.0,
"is_mobile": true,
"device_class": "Custom Device"
}
}
}覆盖范围配置
在中编辑覆盖阈值 testgpt_engine.py:
config = CoverageConfig.default() # 80% threshold
# or
config = CoverageConfig.strict() # 100% threshold
# or
config = CoverageConfig.permissive() # 50% threshold______________________________________________________________________
基于PR的测试
运作原理
当您通过Slack测试PR时,系统:
- 获取公关背景 来自GitHub API
- PR元数据(标题、作者、描述、标签) - 使用逐行差异更改文件 - 相关问题和验收标准 - CI/CD状态检查
- 检测部署URL
- 在PR评论中搜索部署URL - 检查CI/CD状态检查(Vercel、Netlify等) - 验证部署是否可访问(HTTP 200)
- 分析代码库
- 检测项目类型(前端、后端、全栈) - 识别技术栈(Next.js、React、FastAPI等) - 阅读package.json、requirements.txt、README
- 生成测试场景 基于更改的文件
- 如果UI组件发生了变化→ UI组件测试 - 如果API路线发生变化→ API功能测试 - 如果样式更改→ 视觉回归测试 - 始终根据PR描述测试验收标准
- 执行测试 与剧作家
- 在部署URL上运行浏览器自动化测试 - 仅测试更改,而不是整个网站 - 捕获屏幕截图和控制台错误 - 可选择跟踪代码覆盖率
- 报告结果 转到Slack和GitHub(可选)
- 通过/失败状态,包括场景细分 - 详细的故障消息 - 覆盖百分比(如果启用) - 持续时间和环境信息
GitHub令牌设置
将测试结果作为PR注释发布(可选):
- 首选https://github.com/settings/tokens
- 使用生成新令牌
repo范围 - 添加到
.env:
GITHUB_TOKEN=ghp_your_token_here如果没有令牌,TestGPT仍然可以:
- 读取公共公关数据
- 分析代码更改
- 对部署URL运行测试
- 将结果发布到Slack
______________________________________________________________________
API 参考
后端运行后,访问交互式API文档:
- Swagger用户界面: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
主要终点
测试管理
POST /api/tests-创建测试套件GET /api/tests-列出测试套件GET /api/tests/{id}-获取测试详细信息PUT /api/tests/{id}-更新测试套件DELETE /api/tests/{id}-删除测试套件
测试执行
POST /api/tests/{id}/run-执行/重新运行测试POST /api/tests/batch/run-批量重新运行GET /api/executions-列出执行情况GET /api/executions/{id}-获取执行详细信息GET /api/tests/{id}/history-获取执行历史记录
配置
GET /api/configs-列出配置POST /api/configs-创建配置GET /api/configs/{id}-获取配置PUT /api/configs/{id}-更新配置DELETE /api/configs/{id}-删除配置
统计与健康
GET /api/statistics-获取总体统计数据GET /health-检查API运行状况
迁移
POST /api/migrate/json-to-db-将JSON场景迁移到数据库
______________________________________________________________________
生产状态
测试结果摘要
覆盖系统: ✅ 生产就绪
- 端到端测试: ✅ 全部通过(5/5间套房)
- MCDC边缘保护套: ✅ 全部通过(13个边缘案例)
- 数据库测试: ✅ 全部通过(5种情况)
- 总测试:30+综合测试
- 失败: 0
后端API: ✅ 操作(10/12个端点工作)
- 健康检查: ✅ 通过
- 测试管理: ✅ 通过
- 执行跟踪: ✅ 通过
- 配置: ✅ 通过
- 统计: ⚠️ 小问题
前端: ✅ 可操作的
- 测试库: ✅ 工作
- 测试执行: ✅ 工作
- 仪表盘: ✅ 工作
- 数据库模式: ✅ 固定的
浏览器支持: ✅ 所有浏览器均正常工作
- 铬: ✅ 准备
- WebKit/Safari: ✅ 准备就绪(已修复!)
- 火狐: ✅ 准备
主要成就
- ✅ 完成第一阶段 -所有仪表组件均已实施
- ✅ 复杂的MCDC分析 -处理复杂的布尔条件
- ✅ 智能停止逻辑 -多标准决策
- ✅ 灵活的配置 -预设和自定义配置
- ✅ 数据库基础 -完整的架构和操作
- ✅ CLI工具 -功能齐全的命令行界面
- ✅ 综合文档 -README、入门、状态文档
- ✅ 浏览器设置 -已安装并验证的所有浏览器
- ✅ 测试持久性 -具有重新运行功能的完整CRUD
- ✅ Slack集成 -通过重新运行命令完成
文档
生产准备报告:
- 覆盖系统:
PRODUCTION_READINESS_REPORT.md - 测试完成:
TESTING_COMPLETE_SUMMARY.md - 最终状态:
COVERAGE_FINAL_STATUS.md - 验证报告:
VALIDATION_REPORT.md
______________________________________________________________________
故障排除
常见问题
1.未找到浏览器
Error: Browser specified in your config is not installed解决方案:
./scripts/ENSURE_BROWSERS_INSTALLED.sh2.前端500错误
检查:
- 后端API正在端口8000上运行
- 前端正在端口3000上运行
- 数据库架构正确
解决方案:
# Restart backend
pkill -f uvicorn
python -m uvicorn backend.api.main:app --reload &
# Restart frontend
cd frontend && npm run dev3.测试未在库中显示
检查数据库:
sqlite3 frontend/lib/db/testgpt.db "SELECT COUNT(*) FROM test_suites;"运行健康检查:
python scripts/db_health_check.py4.重新运行命令不起作用
验证命令格式:
# These work:
@TestGPT re-run test-name
@TestGPT rerun test-name
@TestGPT run test-name again
@TestGPT re-run last test
# These don't:
@TestGPT re run test-name (space in "re run")5.保险报告缺失
检查位置:
ls -la ./coverage_reports/手动生成:
python coverage/cli.py run https://github.com/test/repo default调试
查看日志
所有执行日志都保存到:
logs/testgpt-debug-YYYYMMDD-HHMMSS.log(带时间戳)logs/latest.log(符号链接到最新)
# View latest log
cat logs/latest.log
# Search for patterns
cat logs/latest.log | grep "Test Outcome:"
cat logs/latest.log | grep "Coverage:"数据库查询
# Connect to database
sqlite3 frontend/lib/db/testgpt.db
# List test suites
SELECT id, name, created_at FROM test_suites ORDER BY created_at DESC LIMIT 10;
# View executions
SELECT id, status, execution_time_ms FROM test_executions_v2 ORDER BY created_at DESC LIMIT 10;
# Check coverage runs
SELECT * FROM coverage_runs ORDER BY started_at DESC LIMIT 5;验证脚本
# Verify coverage system
./VERIFY_COVERAGE.sh
# Test API endpoints
python scripts/test_api_endpoints.py
# Database health check
python scripts/db_health_check.py______________________________________________________________________
Bug修复和最新更新
覆盖系统
- ✅ 数据库唯一约束 -修复了save_concoverage_run()使用合并的问题
- ✅ 测试脚本ID -已更改为唯一的UUID
- ✅ 验证脚本 -更新了Python 3.9的依赖性检查+
浏览器设置
- ✅ Safari/WebKit -添加了PLAYWRIGHT_BROWSERS_PATH环境变量
- ✅ 可执行路径 -为WebKit浏览器添加了显式路径
- ✅ Symlink创建 -创建了mcp-webkit符号链接以实现兼容性
前端
- ✅ 架构对齐 -固定表名(testexecutions→ 测试执行v2)
- ✅ 配置模板 -添加了配置模板架构
- ✅ 字段名称 -已更正错误消息→ 错误详细信息等。
- ✅ TypeScript修复 -添加了显式类型注释
Slack集成
- ✅ 重新运行命令 -添加了“上次测试”关键字处理
- ✅ 环境矩阵 -固定参数名称(网络而不是network_conditions)
- ✅ 数据库持久性 -添加了_save_execution_to_database()方法
- ✅ 事件重复数据删除 -添加了事件ID跟踪
- ✅ 旧事件筛选 -添加了5分钟时间戳截止
测试迁移
- ✅ 完全迁移 -将所有测试步骤从JSON迁移到数据库
- ✅ 包括测试步骤 -修复了包含流\[\]的迁移问题。步骤
- ✅ 数据完整性 -所有9个场景都迁移了完整的测试步骤
Slack报告
- ✅ 固定详细输出 -仅提取最终代理内容,不提取调试日志
- ✅ 摘要提取 -仅解析和显示简短摘要
- ✅ 已保存覆盖率报告 -生成HTML报告并将其保存到文件
- ✅ Slack中的报告路径 -在Slack消息中包含文件路径
有关修复的详细信息,请参阅:
FIXES_APPLIED.mdFIX_SUMMARY.mdSCHEMA_FIX_COMPLETE.mdFINAL_FIX.mdSLACK_RERUN_AND_DB_FIXES.md
______________________________________________________________________
技术栈
- 松弛螺栓 -Slack集成
- 硝酸银 -AI代理框架
- 克劳德·十四行诗4 -AI模型
- 剧作家MCP -Web自动化
- 快速API -后端REST API服务器
- SQLAlchemy -数据库ORM
- SQLite -数据库存储
- Next.js 16 -前端框架
- 反应19 -UI组件
- TypeScript -类型安全的前端代码
- 淋ORM -前端数据库访问
- 顺风CSS 4 -UI样式
- FastMCP -动态后端API测试
- 模型上下文协议 -工具集成
- Git/GitHub -存储库管理
- 开放API -API反思
______________________________________________________________________
代理人能做什么
- 浏览网站
- 搜索谷歌、维基百科等。
- 填写表格
- 截图
- 从页面中提取数据
- 点击按钮和链接
- 键入元素并与之交互
- 测试后端API
- 验证API响应
- 运行全面的测试套件
- 跟踪代码覆盖率
- 分析MCDC需求
- 生成覆盖率报告
______________________________________________________________________
许可证
MIT许可证-有关详细信息,请参阅许可证文件
______________________________________________________________________
支持和文档
快速链接
- 覆盖系统:
coverage/README.md - 入门指南:
coverage/GETTING_STARTED.md - 测试持久性:
USER_GUIDE_RERUN.md - API测试:
dynamic_backend_testing/README.md - 例子:
examples/README.md
健康检查
# API health
curl http://localhost:8000/health
# Database health
python scripts/db_health_check.py
# Coverage system
./VERIFY_COVERAGE.sh
# API endpoints
python scripts/test_api_endpoints.py支持
对于问题或疑问:
- 请查看上述链接中的相关文档
- 查看故障排除部分
- 检查登录
logs/latest.log - 运行验证脚本
______________________________________________________________________
最后更新时间: 2025年11月1日 版本: 1.0.0 状态: ✅ 生产就绪 测试覆盖范围: 30+综合测试,0次失败 API状态: 10/12个端点可操作(83%) 浏览器支持: 所有浏览器均正常工作(Chrome、Safari、Firefox)
______________________________________________________________________
建造人:Ahana Srinath,Sky Singh
