CrewAI + Gradio搭建禅道测试用例生成助手

本文将介绍如何利用CrewAI多智能体框架和Gradio快速构建一个能够自动读取禅道需求并生成测试用例的智能助手。通过这个项目,你将了解如何将大语言模型与业务系统无缝对接,实现测试用例生成的自动化与智能化。

一、认识两大核心工具:CrewAI与Gradio

1. CrewAI:多智能体协作框架

CrewAI是一个专门设计用于构建多智能体协作应用的高级框架。它基于角色驱动的架构,允许开发者创建专门化的智能体(Agent),每个智能体拥有独特的角色、目标和能力,通过协同工作完成复杂任务。

在测试用例生成场景中,我们可以利用CrewAI创建多个专业智能体:

需求分析智能体:负责理解业务需求和提取关键测试点

SQL生成智能体:根据用户查询生成数据库查询语句

测试用例设计智能体:基于需求生成结构化测试用例

质量验证智能体:确保测试用例的完整性和准确性

2. Gradio:快速构建AI交互界面

Gradio是一个开源的Python库,能够让机器学习开发者快速为模型构建友好的Web界面。它特别适合原型设计和概念验证,只需几行代码就能创建功能完整的交互式应用。

对于我们的测试用例生成助手,Gradio提供了:

即时可用的Web组件:聊天界面、文件上传、结果显示等

简单集成:与Python函数无缝对接

易于部署:支持本地分享和云端部署

二、核心架构设计

测试用例生成助手采用分层架构,核心流程包括构建查询语句、需求查询和测试用例生成三个阶段。

三、环境配置与依赖安装

开始之前,确保安装必要的Python包:

bash 复制代码
pip install crewai gradio langchain-openai python-dotenv pymysql

创建环境配置文件.env,用于安全存储数据库凭证和API密钥:

bash 复制代码
#数据库配置
DB_HOST=your_zen_tao_host
DB_PORT=3306
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_zentao_database

#OpenAI配置(或其他LLM提供商)
OPENAI_API_KEY=your_api_key

四、数据库查询和测试用例生成智能体

首先,我们需要创建能够理解用户需求并生成SQL查询的智能体和测试用例生成的智能体:

python 复制代码
from crewai import Agent

from llms import kimi_llm
from tools import DBTools

DB_SCHEMA = """
CREATE TABLE zt_story (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    title VARCHAR NOT NULL, -- 软件测试需求
    pri INTEGER DEFAULT 0, -- 需求优先级 1-4
    openedDate VARCHAR NOT NULL, -- 创建日期: YYYY-MM-DD
    assignedTo VARCHAR NOT NULL, -- 指派给用户: zhangsan, lisi
);
"""

sql_agent = Agent(
    role="高级数据库工程师",
    goal="根据用户需求生成精准的SQL查询并获取数据库结果",
    backstory=f"""
    给定以下MySQL数据库表, 数据库模式:
    {DB_SCHEMA}
    你是一个SQL语句编写专家, 你的任务是编写符合用户请求的SQL查询这张表, 返回给用户text格式的SQL语句, 只需要返回title字段。
    示例
        请求:张三提交的需求
        响应给用户:SELECT title FROM zt_story WHERE submitter = 'zhangsan'
    示例
        请求:2025年2月8日之前提交的需求
        响应给用户:SELECT title FROM zt_story WHERE date <= '2025-02-08'
    示例
        请求:所有需求
        响应给用户:SELECT title FROM zt_story
    """,
    llm=kimi_llm,
    tools=[DBTools.execute_sql],
    verbose=True
)

testcase_agent = Agent(
    role="测试用例设计专家",
    goal="基于分析的需求生成详细、可执行的测试用例",
    backstory="""你是专业测试工程师,精通等价类划分、边界值分析等测试方法,能够设计覆盖全面的测试用例。""",
    verbose=True,
    llm=kimi_llm
)

五、智能任务编排与执行

接下来,我们创建任务并将它们组合成完整的工作流:

python 复制代码
from crewai import Task, Crew

from requirement_agents import sql_agent, testcase_agent


class TestCaseCrew:
    def __init__(self, prompt):
        self.prompt = prompt

    def __call__(self):
        tasks = self._create_tasks()
        crew = Crew(
            tasks=tasks,
            agents=[sql_agent, testcase_agent],
            verbose=True
        )
        return crew.kickoff()

    def _create_tasks(self):
        sql_task = Task(
            description=f"根据用户输入'{self.prompt}'生成SQL语句并执行查询",
            expected_output="包含查询结果的列表",
            agent=sql_agent,
            callback=self.print,
            output_file="sql_results.txt"
        )
        testcase_task = Task(
            description="基于需求生成详细的测试用例",
            expected_output="""完整的测试用例集,包含:
                - 测试用例ID和标题
                - 前置条件
                - 测试步骤
                - 预期结果
                - 优先级
                - 测试类型(功能、性能、安全等)
                """,
            agent=testcase_agent,
            context=[sql_task],  # 关键:设置任务依赖
            output_file="test_cases.md"
        )
        return [sql_task, testcase_task]

    @staticmethod
    def print(data):
        print("最终结果: ", data)

六、使用Gradio构建用户友好界面

现在,我们创建一个直观的Web界面:

python 复制代码
"""
Gradio App
应用式
"""

import gradio as gr

from main import TestCaseCrew


def gradio_interface(user_input):
    """
    这个函数作为Gradio界面与CrewAI智能体的桥梁。
    """
    try:
        # 调用你的CrewAI智能体
        testcase_crew = TestCaseCrew(prompt=user_input)
        result = testcase_crew()
        return result
    except Exception as e:
        # 错误处理,在界面上显示错误信息
        return f"生成测试用例时出现错误:{str(e)}"


# 创建Gradio界面
demo = gr.Interface(
    fn=gradio_interface,  # 指向你上面创建的接口函数
    inputs=gr.Textbox(
        lines=3,
        placeholder="在这里输入查询描述...\n例如:获取所有优先级为3的需求",
        label="功能需求描述"
    ),  # 文本输入框
    outputs=gr.Textbox(
        lines=10,
        label="生成的测试用例"
    ),  # 文本输出框
    title="禅道测试用例生成助手",
    description="请输入您的查询请求,AI智能体将为您自动生成结构化的测试用例。",
    allow_flagging="never"
)

# 启动界面
if __name__ == "__main__":
    demo.launch()  # share=True会生成一个可公开访问的链接

七、效果展示

八、总结

本文介绍了如何使用CrewAI多智能体框架和Gradio快速构建一个智能的禅道测试用例生成助手。该系统能够:

智能理解用户需求,自动生成数据库查询语句

准确检索禅道需求,获取需求信息

生成专业测试用例,覆盖多种测试场景

提供友好交互界面,降低使用门槛

这种基于多智能体协作的方法不仅适用于测试用例生成,还可以扩展到缺陷分析、测试报告生成等其他测试相关任务中。随着大语言模型技术的不断发展,这样的智能助手将在软件测试领域发挥越来越重要的作用。

相关推荐
KG_LLM图谱增强大模型6 小时前
知识图谱遇上大语言模型:天作之合还是理想泡影?
大模型·知识图谱·知识图谱增强大模型·智能知识库
sight-ai7 小时前
OpenRouter vs. SightAI:统一入口,还是统一“智能体验”?
人工智能·开源·大模型·api
知了一笑9 小时前
独立开发AI产品的那些事
程序员·大模型·产品·独立开发
Qiuner9 小时前
大模型请求/响应参数完全拆解:每个字段都是什么意思?
阿里云·大模型·llm·请求·apifox
胡桃姓胡,蝴蝶也姓胡16 小时前
Rag优化 - 如何提升首字响应速度
后端·大模型·rag
wei_shuo1 天前
Llama-2-7b 昇腾 NPU 测评总结:核心性能数据、场景适配建议与硬件选型参考
大模型·llama·昇腾
bulucc2 天前
一个简答的意图识别Agent
python·大模型·agent