# TestBrain **Repository Path**: test-dev-qa/TestBrain ## Basic Information - **Project Name**: TestBrain - **Description**: 一套使用AI(如deepseek)大模型自动生成功能测试用例、接口测试用例和测试用例评审、RAG知识库管理的web平台系统 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-26 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TestBrain > 基于大语言模型的智能测试平台,聚焦手工&接口测试用例生成、评审与知识复用、java源码分析,帮助测试团队打造高效、可扩展的“AI 测试助手”。 ## 🧭 项目概览 TestBrain 通过 Django + LangChain + 多模型接入的方式,提供以下核心能力: - **多 Agent 协同**:针对不同测试场景提供专用智能体(测试用例生成、评审、PRD 分析、接口用例生成、Java 代码分析等)。 - **多 LLM 供应商**:支持 DeepSeek、Qwen 等模型,并可按 Agent 维度配置默认模型/参数,前端也可手动切换。 - **知识库加持**:集成 Milvus 向量数据库与 BGEM3 Embedding和阿里云嵌入模型,支持文档解析、入库、向量检索与上下文增强。 - **可扩展架构**:模块化的 LLM 工厂、Agent 封装、知识库服务,便于新增模型、Agent 或自定义流程。 ## 🛠️ 功能模块 | 模块 | 功能 | 关键实现 | | --- | --- | --- | | **AI Agents** | - `test_case_generator`:根据需求生成用例(支持同步/异步调用 LLM)
- `test_case_reviewer`:对生成的用例进行评审与打分
- `prd_analyzer`:解析 PRD,提炼测试点/场景(内置 JSON 修复兜底)
- `iface_case_generator`:基于接口描述生成测试用例
- `java_code_analyzer`:分析 Java 代码并梳理潜在测试点,依赖自封装java源码分析服务https://github.com/MangoFisher/java-analyzer | `apps/ai_agents/*`,配合统一的 Prompt 管理与服务调用 | | **LLM 集成** | - `LLMServiceFactory` 动态创建模型客户端
- `get_agent_llm_configs()` 返回 Agent 默认模型与 Provider 列表
- 支持同步 `invoke` 与异步 `ainvoke` | `apps/llm/base.py` / `apps/llm/utils.py` | | **知识库** | - `KnowledgeConfig.ready()` 预热 Milvus + BGEM3 单例
- `KnowledgeService` 封装向量入库、检索、相似度匹配
- 支持多格式文档解析、批量嵌入与检索 | `apps/knowledge/*` | | **核心应用** | - Web 页面与 API(Django View)
- 用例管理(`TestCase` 模型)
- 配置管理、日志、权限预留 | `apps/core/*` | ## 🏗️ 技术栈 & 服务依赖 - **运行框架**:Python 3.12、Django 5.1.6、LangChain - **向量数据库**:Milvus 2.4.x(需先启动 Milvus 服务) - **Embedding 模型**:`BAAI/bge-m3`(通过 `sentence-transformers`,首启由 `KnowledgeConfig` 预热) - **数据库**:MySQL 8.x(默认使用 `mysqlclient`) - **其他依赖**:Celery、Redis(如需异步任务,可在后续扩展) ## 📁 项目结构 ``` TestBrain/ ├── apps/ │ ├── ai_agents/ # 各类智能体实现 │ │ ├── test_case_generator/ │ │ ├── test_case_reviewer/ │ │ ├── prd_analyzer/ │ │ ├── iface_case_generator/ │ │ └── java_code_analyzer/ │ ├── core/ # 公共视图、模型、页面 │ ├── knowledge/ # Milvus & Embedding 服务 │ └── llm/ # LLM 工厂、Provider 定义 ├── config/ # Django 配置(INSTALLED_APPS、数据库、LLM 设置等) ├── templates/ # 页面模板 ├── static/ # 静态资源 ├── videos/ # 功能演示视频 ├── requirements.txt # 依赖列表 └── manage.py ``` ## ⚙️ 配置说明 ### 1. 环境变量(`.env` 模板) ```dotenv # LLM Keys DEEPSEEK_API_KEY=your_key QWEN_API_KEY=your_key # 数据库 MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=123456 MYSQL_DB=testbrain # 向量数据库 MILVUS_HOST=127.0.0.1 MILVUS_PORT=19530 MILVUS_COLLECTION=vv_knowledge_collection ``` ### 2. LLM Provider 配置 `config/settings.py` 中维护: ```python LLM_PROVIDERS = { "default_provider": "deepseek", "deepseek": {...}, "qwen": {...} } AGENT_LLM_DEFAULTS = { "test_case_generator": {"provider": "deepseek"}, "prd_analyzer": {"provider": "deepseek"}, ... } ``` - 前端使用 `providers` 渲染下拉列表,可手动切换模型。 - 后端通过 `get_agent_llm_configs(agent_name)` 获取默认 Provider 及配置。 ### 3. 知识库单例初始化 `apps/knowledge/apps.py` 中的 `KnowledgeConfig.ready()`: ```python class KnowledgeConfig(AppConfig): name = "apps.knowledge" def ready(self): from .embedding import BGEM3Embedder from .vector_store import MilvusVectorStore if not hasattr(self, "embedder"): self.embedder = BGEM3Embedder() if not hasattr(self, "vector_store"): self.vector_store = MilvusVectorStore() ``` 业务侧通过 `KnowledgeService()` 自动复用该单例。 ## 🚀 本地运行 1. **准备依赖** ```bash python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate pip install -r requirements.txt ``` 2. **配置环境变量** - 复制 `.env` 示例并补全数据库、Milvus、LLM Key。 3. **初始化数据库** ```bash python manage.py migrate ``` 4. **启动服务** ```bash python manage.py runserver 0.0.0.0:8000 ``` 5. **启动java源码分析服务** ```bash mvn spring-boot:run -Dspring-boot.run.profiles=dev ``` #TODO: 仓库地址待提供 6. **访问页面** - Web 控制台:http://127.0.0.1:8000/ ## 🧠 Agent 详情 | Agent | 入口页面 | 描述 | | --- | --- | --- | | 测试用例生成 | `/test_case_generator/` | 根据需求文本生成结构化测试用例列表,支持自定义设计方法、测试类型、生成条数,并可保存到数据库。 | 测试用例评审 | `/test_case_reviewer/` | 对既有用例进行评审,输出风险 & 改进建议。 | PRD 分析 | `/prd_analyzer/` | 解析 PRD Markdown,产出测试点与测试场景;内置 JSON 修复逻辑以提升容错。 | 接口用例生成 | `/iface_case_generator/` | 根据接口定义生成测试思路,支持模型切换。 | Java 代码分析 | `/java_code_analyzer/` | 静态分析 Java 源码,输出潜在缺陷与测试关注点。 ## 📚 知识库最佳实践 为了让 LLM 生成的测试用例更加贴合业务,建议: 1. 上传与需求相关的文档:PRD、设计文档、API 文档、过往测试用例、UI 设计稿等。 2. 确保文件命名规范、内容清晰,便于向量检索与上下文匹配。 3. 使用知识库检索功能,确认相关内容已写入 Milvus 并能搜索到。 ## 🧪 常见问题(FAQ) **Q1. 为什么日志里多次出现 “正在加载 BGE-M3 模型…”?** 默认 `runserver` 会启动监视进程 + 工作进程,两次初始化属正常现象。上线部署(Gunicorn/Uvicorn)或使用 `--noreload` 可验证单例。 **Q2. LLM 输出的 JSON 仍解析失败怎么办?** 系统已内置 `_basic_json_fix()` 处理未转义换行、中文引号、缺逗号等常见问题。如仍失败,建议检查 Prompt 或手动修正模型输出。 **Q3. 如何新增模型供应商?** 在 `LLM_PROVIDERS` 中新增配置,并在 `LLMServiceFactory` 里实现创建逻辑。随后可在 `AGENT_LLM_DEFAULTS` 或前端下拉中引用。 **Q4. 是否支持异步调用?** `TestCaseGeneratorAgent` 已支持 `async_generate`,可在异步视图或任务中直接 `await` 调用,LangChain 内部使用 `ainvoke`。 ## 📼 演示视频 - 测试用例生成:`videos/测试用例生成.mp4` - 测试用例评审:`videos/测试用例评审.mp4` - 知识库文档上传:`videos/知识库文档上传.mp4`