AI 大模型接入 + 自动化测试(手动/AI/定时三种触发)

- 自动化测试核心(packages/core/src/testing.ts):
  - JSONPath 求值($.a.b[0].c)、断言评估(状态码/耗时/Header/Body × 10 种操作)
  - 变量提取(响应 → 当前环境,{{var}} 链式传值)、Markdown 报告导出
- 用例模型:场景用例 = 有序步骤(引用 HTTP 接口 + 断言 + 提取),失败后继续可选
- 执行器 testRunner + 定时调度器 scheduler(应用运行期间按间隔自动执行)
- TestingView:用例列表 / 步骤编排 / 断言与提取编辑器 / 报告(统计卡+断言明细+过滤+再次运行+导出)
- AI 助手:OpenAI 兼容客户端(DeepSeek/智谱/Kimi/OpenAI/Ollama 预设)
  - 设置 → AI 助手:供应商 CRUD + 测试连接 + 当前使用切换
  - AI 生成场景用例:读取集合接口清单 → 编排步骤/断言/提取 → 预览保存
- 入口:侧栏底部「自动化测试」+ ⋯ 菜单;文档新增 /docs/testing /docs/ai
- 新增 11 个引擎单测(总 48 前端用例全绿);本地 E2E:运行通过+断言通过+petId 提取验证
This commit is contained in:
logan committed 2026-09-18 01:57:57 +08:00
1 parent 9a019408ab
commit 1bcd7be2ac
23 files changed
+2538 -7

No files matched your search

@@ -0,0 +1,41 @@
# 自动化测试
把日常联调的接口串成**场景用例**,一条龙验证业务流程。三种触发方式共用同一套用例模型:
| 方式 | 说明 | 适合 |
| --- | --- | --- |
| 手动运行 | 用例编排好后点「运行」 | 日常自测、回归 |
| AI 生成 | 模型按接口清单自动编排步骤与断言 | 快速起盘、补断言思路 |
| 定时任务 | 应用运行期间按间隔自动执行 | 持续监控、冒烟 |
## 场景用例
从侧栏底部「自动化测试」进入。用例 = 有序步骤列表,每个步骤:
- **引用一个 HTTP 接口**(从集合中选择,可跨集合、跨目录);
- **断言**:状态码 / 耗时 / Header / Body 四类目标,支持 等于、不等于、大于、小于、包含、存在 与 **JSONPath** 取值比较;
- **变量提取**:`$.data.id` → 环境变量 `petId`,后续步骤 URL / Body 用 `{{petId}}` 引用,实现「创建 → 查询 → 删除」链式传值;
- 可单独禁用、上下移动、删除。
用例级选项「**失败后继续**」:默认失败即停(快速定位首个问题);打开后跑完全部步骤再看整体报告。
## 运行报告
- 统计卡:通过 / 失败步骤数、总耗时、断言数、通过率;
- 步骤明细:方法 + URL + 状态码 + 耗时,逐条断言的期望 / 实际对照(可按 通过 / 失败 过滤);
- 「再次运行」一键回归;「导出报告」生成 Markdown 存档或归档到缺陷单;
- 每个用例保留最近 50 次运行记录,可下拉切换历史报告。
## 定时任务
用例头部的 ⏱ 按钮或左侧「定时任务」入口:
- 间隔可选 5 / 15 / 30 / 60 分钟、6 小时、每天;
- 独立 启用 / 暂停 开关,显示下次运行时间与上次结果;
- **应用保持运行时生效**:OpsxAPI 窗口(或 Web 页面)开着才会按时触发并记录报告,关闭后自动暂停 —— 适合工作时段的持续监控,不能替代服务器侧的 CI。
> 提示:定时触发的请求同样走当前环境与 Mock 设置;跨环境回归前先在顶栏切换环境。
## AI 生成用例
见 [AI 助手](/docs/ai)。配置模型供应商后,「AI 生成」会读取集合的 HTTP 接口清单(方法、URL、Body 示例),按业务依赖编排步骤、断言与变量提取,生成前可附加一句要求(如「重点覆盖登录态与分页」),预览确认后保存。
@@ -0,0 +1,42 @@
# AI 助手
接入 **OpenAI 兼容协议**的大模型,为接口调试与自动化测试提供 AI 能力。密钥只保存在本机(localStorage),请求直连供应商,不经过任何第三方中转。
## 配置模型供应商
**设置 → AI 助手 → 模型供应商**,点「添加供应商」,内置常用预设:
| 供应商 | Base URL | 模型示例 |
| --- | --- | --- |
| DeepSeek | `https://api.deepseek.com/v1` | `deepseek-chat` |
| 智谱 GLM | `https://open.bigmodel.cn/api/paas/v4` | `glm-4-flash` |
| Moonshot Kimi | `https://api.moonshot.cn/v1` | `moonshot-v1-8k` |
| OpenAI | `https://api.openai.com/v1` | `gpt-4o-mini` |
| Ollama 本地 | `http://127.0.0.1:11434/v1` | `qwen2.5:7b` |
- **API Key**:Ollama 等本地服务可留空;
- **测试连接**:保存前先发一条 ping 验证地址 / 密钥 / 模型名;
- 多个供应商时可切换「当前使用」的模型。
## AI 生成场景用例
自动化测试视图 →「**AI 生成**」:
1. 选择集合(AI 读取其中全部 HTTP 接口:方法、URL、Body 示例);
2. 可选填写一句要求,如「覆盖下单 → 支付 → 查询流程,重点断言金额字段」;
3. 模型按业务依赖编排步骤,输出断言与变量提取(如 `$.data.token → token`,后续步骤用 `{{token}}`);
4. 预览生成的步骤清单(未识别的接口会自动跳过并提示),确认后保存为正式用例。
生成结果只是起点 —— 步骤、断言、提取规则都可再手动调整。
## 隐私与边界
- API Key 仅存本机,随工作区数据一起持久化;导出全量备份时会包含,分享备份文件前请注意;
- 供应商收到的内容为接口清单摘要(方法 / URL / Body 片段)与你的指令,**不含**环境变量值与 API Key;
- 未配置供应商时,Mock 数据、环境变量等离线功能不受影响。
## 常见问题
**生成失败?** 依次检查:Base URL 是否带 `/v1`、模型名是否属于该供应商、Key 是否有效(用「测试连接」验证)、本机能否直连该域名(内网代理环境注意放行)。
**想用公司内网模型?** 添加自定义供应商,Base URL 填内网网关地址即可(需兼容 OpenAI Chat Completions 协议)。
@@ -106,17 +106,34 @@
}
]
},
{
"name": "自动化测试与 AI",
"pages": [
{
"file": "16-testing.md",
"slug": "testing",
"title": "自动化测试",
"updated": "2026-09-17"
},
{
"file": "17-ai.md",
"slug": "ai",
"title": "AI 助手",
"updated": "2026-09-17"
}
]
},
{
"name": "参考",
"pages": [
{
"file": "16-server-api.md",
"file": "18-server-api.md",
"slug": "server-api",
"title": "服务端 API 参考",
"updated": "2026-09-17"
},
{
"file": "17-faq.md",
"file": "19-faq.md",
"slug": "faq",
"title": "常见问题",
"updated": "2026-09-17"