本文将介绍如何利用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快速构建一个智能的禅道测试用例生成助手。该系统能够:
智能理解用户需求,自动生成数据库查询语句
准确检索禅道需求,获取需求信息
生成专业测试用例,覆盖多种测试场景
提供友好交互界面,降低使用门槛
这种基于多智能体协作的方法不仅适用于测试用例生成,还可以扩展到缺陷分析、测试报告生成等其他测试相关任务中。随着大语言模型技术的不断发展,这样的智能助手将在软件测试领域发挥越来越重要的作用。