""" QA Agent - 测试工程师智能体 负责根据 SRS 生成自动化测试用例(Pytest 格式) """ from typing import Dict, Any from crewai import Agent, Task from models.qwen_config import get_llm def create_qa_agent() -> Agent: """ 创建测试工程师智能体 Returns: Agent: QA 智能体实例 """ return Agent( role="高级测试架构师", goal="根据软件需求规格说明书 (SRS) 设计并生成完整的自动化测试用例", backstory="""你是一位拥有 8 年经验的高级测试架构师,擅长: 1. 基于需求文档设计全面的测试策略 2. 编写高质量的 Pytest 自动化测试脚本 3. 覆盖单元测试、集成测试、端到端测试 你的测试用例将作为开发实现的验证标准,务必保证覆盖率和可执行性。""", verbose=True, allow_delegation=False, llm=get_llm() ) def create_qa_task(srs_document: str) -> Task: """ 创建测试用例生成任务 Args: srs_document: 软件需求规格说明书 Returns: Task: QA 任务实例 """ return Task( description=f""" 请根据以下 SRS 文档,生成完整的自动化测试用例: 【SRS 文档】 {srs_document} 【输出要求】 请按照以下结构输出测试方案: ## 1. 测试策略概述 - 1.1 测试范围 - 1.2 测试方法(单元测试/集成测试/E2E 测试) - 1.3 测试工具和技术栈 ## 2. 测试场景列表 - 2.1 功能测试场景(对应每个功能性需求) - 2.2 边界值测试场景 - 2.3 异常场景测试 - 2.4 性能测试场景 ## 3. Pytest 测试代码 为每个核心功能生成 Pytest 测试脚本,包含: ```python # 测试文件:test_.py import pytest class Test: \"\"\"<功能>测试类\"\"\" def test__(self): \"\"\"测试场景描述\"\"\" # Arrange - 准备测试数据 # Act - 执行操作 # Assert - 验证结果 pass ``` ## 4. 测试数据准备 - 4.1 测试 fixtures - 4.2 Mock 数据 - 4.3 测试数据库种子 ## 5. 测试执行说明 - 5.1 运行命令 - 5.2 环境要求 - 5.3 预期通过率 【注意事项】 - 遵循 AAA(Arrange-Act-Assert)测试模式 - 使用描述性的测试函数命名 - 包含充足的断言验证 - 考虑边界条件和异常情况 """, expected_output="完整的测试方案和 Pytest 测试代码", agent=create_qa_agent() ) def execute_qa_stage(srs_document: str) -> Dict[str, Any]: """ 执行 QA 阶段任务 Args: srs_document: 软件需求规格说明书 Returns: Dict[str, Any]: 包含测试方案和执行结果 """ qa_agent = create_qa_agent() qa_task = create_qa_task(srs_document) crew = Crew( agents=[qa_agent], tasks=[qa_task], verbose=True ) result = crew.kickoff() return { "stage": "测试用例设计", "test_plan": result.raw, "status": "completed" }