# OpenTester

**MCP-First 测试执行基础设施**

OpenTester 是专为 AI 编码工具（Claude Code、Cursor、OpenCode 等）设计的测试执行引擎。它提供统一的 DSL 格式和 MCP 接口，让 Agent 能够生成、执行和管理测试用例，实现"编码-测试-修复"的自动化闭环。

## 核心定位

```
┌─────────────────────────────────────────┐
│  AI Agent (Claude Code / Cursor / ...)  │
│  ├─ 生成 DSL 测试用例                    │
│  ├─ 决策测试策略                         │
│  └─ 分析失败原因                         │
├─────────────────────────────────────────┤
│  OpenTester (MCP Server)                │
│  ├─ 验证 DSL 语法                        │
│  ├─ 执行测试 (CLI/GUI/TUI)               │
│  ├─ 存储用例/项目                        │
│  └─ 返回结构化结果                       │
├─────────────────────────────────────────┤
│  Web UI (辅助观察面板)                    │
│  ├─ 查看执行进度                         │
│  ├─ 调试用例（创建/编辑）                 │
│  └─ 查看历史报告                         │
└─────────────────────────────────────────┘
```

## 安装

```bash
pip install opentester
```

## 快速开始

### 启动服务

```bash
# 一键启动 FastAPI + MCP（前台模式）
opentester start

# 后台运行
opentester start --daemon

# 只启动 API
opentester start --api

# 只启动 MCP
opentester start --mcp

# 查看状态
opentester status

# 停止服务
opentester stop

# 环境检查
opentester doctor
```

### 配置 Claude Code

在 `.claude/settings.json` 中添加 MCP 配置：

```json
{
  "mcpServers": {
    "opentester": {
      "url": "http://localhost:8001/mcp"
    }
  }
}
```

### 配置 Claude Desktop (STDIO)

```json
{
  "mcpServers": {
    "opentester": {
      "command": "opentester",
      "args": ["start", "--mcp", "--stdio"]
    }
  }
}
```

## 核心功能

- **DSL 验证**: YAML 格式的测试定义语言验证
- **测试执行**: 支持 CLI、GUI、TUI 多种执行目标
- **项目管理**: 项目存储于 `~/.opentester/projects/`
- **实时监控**: WebSocket 实时推送执行进度

## MCP 工具列表

| 工具 | 描述 |
|------|------|
| `listProjects` | 列出所有测试项目 |
| `getProject` | 获取项目详情 |
| `createProject` | 创建项目 |
| `deleteProject` | 删除项目 |
| `validateDSL` | 验证 DSL 语法 |
| `saveCase` | 保存用例 |
| `deleteCase` | 删除用例 |
| `runCase` | 执行单个用例 |
| `runProject` | 执行整个项目 |
| `stopExecution` | 停止执行 |
| `getExecutionStatus` | 获取执行状态 |
| `getExecutionLog` | 获取详细日志 |
| `listTemplates` | 列出模板 |
| `createTemplate` | 创建模板 |
| `instantiateTemplate` | 从模板创建用例 |

## 端口

- FastAPI: http://localhost:8000
- MCP Server: http://localhost:8001/mcp
- API Docs: http://localhost:8000/docs

## 数据存储

- 项目数据: `~/.opentester/projects/{project_id}.json`
- 执行日志: `~/.opentester/executions/`
- PID 文件: `~/.opentester/pids/`

## 开源协议

MIT License
