人工智能测试框架
一个基于Python的测试框架,它利用人工智能通过模型上下文协议(MCP)集成Chrome DevTools来执行自动化网页测试。该框架具备全面的遥测功能,可与Azure Application Insights集成,并支持批量测试执行。
概述
这个框架允许您编写自然语言测试用例,这些用例将由一个使用Chrome浏览器自动化技术的AI代理执行。该代理能够浏览网站、与网页元素进行交互,并提供详细的测试结果分析。
关键特性
- 🤖 机器人 基于人工智能的测试GPT-4执行的自然语言测试指令
- 🌐 代表互联网或全球网络的符号,可直接译为“🌐(互联网/全球网络)”。在实际语境中,可根据需要具体说明其含义。 浏览器自动化通过MCP集成Chrome DevTools进行真实浏览器测试
- 📊 表格 Azure 应用程序见解(或 Azure 应用性能监控)全面的遥测、日志记录和性能监控
- 📋(清单/列表) 批量测试从CSV文件执行多项测试并生成详细报告
- 🔄 翻译为中文是:循环/旋转(这个符号本身在中文里没有直接对应的词汇,但通常表示循环、重复或旋转的动作或状态)。 不可变测试执行每个测试独立运行,不会受到上下文污染
- 🚀 火箭/快速上升/飞速发展(根据上下文可灵活翻译) GitHub Actions自动化测试工作流及结果报告
先决条件
- Python 3.11+
- Node.js(用于Chrome DevTools MCP服务器)
- Azure OpenAI API访问
设置
1. 克隆仓库
git clone
cd AI-Testing2. 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate3. 安装Python依赖项
pip install -r requirements.txt4. 配置环境变量
创建一个 .env 在根目录中放置包含您的 Azure OpenAI 和 Application Insights 凭据的文件:
# Azure OpenAI Configuration (required)
AZURE_OPENAI_API_KEY=your_api_key_here
AZURE_OPENAI_ENDPOINT=your_endpoint_here
AZURE_OPENAI_DEPLOYMENT_NAME=your_deployment_name_here
# Application Insights for Telemetry (optional but recommended)
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=your-key;IngestionEndpoint=https://your-region.in.applicationinsights.azure.com/
# Semantic Kernel Telemetry Settings (optional)
SEMANTICKERNEL_EXPERIMENTAL_GENAI_ENABLE_OTEL_DIAGNOSTICS=true
SEMANTICKERNEL_EXPERIMENTAL_GENAI_ENABLE_OTEL_DIAGNOSTICS_SENSITIVE=true注Application Insights 连接字符串应采用以下格式: InstrumentationKey=;IngestionEndpoint=;LiveEndpoint=;ApplicationId=
运行测试
单次测试执行
运行一个默认的单个测试用例:
source venv/bin/activate
python -m pytest test_agent_assert.py::TestAgentAssert::test_default_single_case -v -s从CSV文件批量执行测试
执行多个测试用例 manual_tests.csv 文件:
source venv/bin/activate
python -m pytest test_agent_assert.py::TestAgentAssert::test_csv_file_cases -v -s运行所有测试
执行所有可用的测试:
source venv/bin/activate
python -m pytest test_agent_assert.py -v -s这个(或:那个) -s 标志显示所有输出,包括AI代理的分析和遥测信息。
测试结果与遥测数据
当配置了 Application Insights 后,框架会自动捕获:
- 📈 表情符号“📈”通常被翻译为“上升趋势”或“上升的箭头”。它常用于表示某种情况或数据正在积极增长或上升。 性能指标测试执行时间,API响应时间
- 📝 详细日志语义内核操作,MCP(可能指某种特定模块或协议)交互
- 🔍 看起来像是放大镜的符号,可以翻译为“放大镜”或保持原样表示“查看/搜索”等含义,具体根据上下文而定。 痕迹端到端测试执行流程
- ⚠️ 错误追踪详细的异常信息和堆栈跟踪
通过Azure Application Insights仪表板访问您的遥测数据。
GitHub Actions 集成
这个仓库包含一个GitHub Action工作流(.github/workflows/python-tests.yml) 用于自动化测试:
- 手动触发该工作流仅在从GitHub Actions选项卡手动触发时运行
- 环境设置镜像了包含Python 3.11、Node.js 20和Chrome DevTools MCP的开发容器环境
- 测试报告使用GitHub原生的报告工具生成全面的测试报告
- 工件上传测试结果以XML格式保存,供下载和分析
通过 GitHub Actions 运行测试:
- 前往 行动 在你的GitHub仓库中的选项卡
- 选择 “Python 测试” 工作流程
- 点击 “Run workflow”翻译成中文是“运行工作流”
- 可选地指定一个测试过滤模式以运行特定测试
它是如何工作的
- 测试定义编写包含自然语言指令的测试用例(单个测试或CSV批量测试)
- 人工智能代理代理使用Chrome开发者工具来浏览和与网页进行交互
- 遥测数据收集所有交互都被记录到 Azure 应用程序见解(Application Insights)中
- 分析人工智能将实际结果与预期结果进行比较
- 报告详细的通过/失败结果,附带解释及性能指标
测试用例格式
单个测试用例
test_case = TestCase(
url="https://example.com",
instructions="Navigate to the page and click the login button",
expected_result="Should redirect to login page within 2 seconds"
)CSV 批量测试
该框架包括一个 manual_tests.csv 包含10个示例测试用例的文件,用于Microsoft Learn Azure DevOps文档。您可以修改此文件或创建自己的CSV文件,其中包含以下列:
url要测试的网页test_instructions自然语言测试指令expected_result预期结果描述
样本测试用例
所包含的测试(test_agent_assert.py执行以下自动化网页测试:
- 目标导航至
https://developer.chrome.com - 行动点击“Chrome 新功能”部分中的“立即探索”按钮
- 性能断言验证页面以HTTP状态码200加载,并且加载时间少于2秒
- AI分析使用AI代理分析实际页面行为与预期结果的对比
⚠️ 预期测试行为
这个测试在首次运行时很可能会失败 出于几个原因:
- 需要Azure OpenAI API凭据
.env文件 - Chrome DevTools MCP服务器必须正确配置
- 根据网络状况,页面加载时间可能会超过2秒
- 自测试创建以来,网站结构可能已发生变化
- “立即探索”按钮的位置/文本可能已更新
这是有意为之,以展示实际测试场景,即测试需要根据实际网站条件进行调整。
关键组件
agent_assert_mcp.py- 主人工智能测试代理,集成遥测功能test_agent_assert.py- 支持单次和批量测试的测试执行框架assertion_result.py- 测试结果数据结构manual_tests.csv- 包含10个网页测试场景的示例CSV文件.env- 环境配置(创建此文件)
依赖项
- 语义内核 - 支持遥测功能的AI编排框架
- Chrome 开发者工具 MCP(注:MCP在此处可能是一个特定上下文中的缩写或专有名词,没有直接的中文对应,因此保留原样。如果MCP有特定含义,请根据上下文替换为相应的中文表述。) - 通过模型上下文协议实现浏览器自动化
- pytest - 测试框架
- Azure OpenAI - 用于测试分析的人工智能模型
- Azure Monitor OpenTelemetry - 望远镜数据收集(或遥测数据收集)与Application Insights集成
GitHub Actions 工作流
该仓库包含一个GitHub Actions工作流,该工作流:
- 设置与开发容器完全相同的环境
- 安装所有来自(指定位置的)Python依赖项
requirements.txt - 支持单个测试和CSV批量测试
- 捕获包含遥测数据的全面测试结果
- 上传测试工件以供后续分析
- 与Application Insights集成以进行CI/CD监控
该工作流程已配置为 仅手动执行 在开发过程中避免不必要的运行。
遥测与监控
该框架通过Azure Application Insights提供全面的可观测性:
自动数据收集
- 请求遥测数据每次测试执行都被记录为一个请求
- 依赖项遥测Azure OpenAI API调用及响应时间
- 自定义事件测试通过/失败事件,附带详细上下文
- 性能计数器测试期间的系统资源使用情况
- 异常跟踪带有堆栈跟踪的详细错误信息
仪表板和警报
配置 Azure 应用程序见解 (Application Insights) 仪表板以监控:
- 随时间变化的测试成功率/失败率
- 平均测试执行时间
- API响应时间和可用性
- 错误趋势和模式
- 测试运行期间的资源利用
______________________________________________________________________
注此框架包含全面的遥测和批量测试功能。所包含的测试可能需要适当的Azure凭据,并且在初次运行时可能会失败,这模拟了实际测试场景,即测试需要根据实际网站行为和适当的环境配置进行调整。请使用Application Insights仪表板来监控测试性能并识别优化机会。
