📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
AI智能体(AI Agent)近年来发展迅猛,展现出广阔的应用前景和巨大的商业潜力。不少优秀企业也都推出了自己的AI智能平台,每一家都各具特色,今天我们就给大家推荐一款自动化需求解析与测试用例生成的提效“黑科技”--AutoGen!只要点点点,便可实现一键生成测试用例?!真有这么神奇吗?今天带大家一起来看看!
阅读本文你将收获:
-
Autogen 是什么?
-
Autogen智能生成测试用例的原理;
-
Streamlit + AutoGen + DeepSeek的环境部署与案例实战。
01 Autogen 是什么?
AutoGen 是由微软推出的一个强大框架,专注于多智能体协作,旨在自动化复杂的流程,如代码生成、任务拆解、决策优化等。
其核心优势在于智能体之间的协作能力,这使得它特别适用于处理那些涉及多个步骤、跨领域合作和需要实时调整的任务。AutoGen 不仅能够自动执行任务,还能够让不同的智能体之间进行高效协同,甚至允许人类参与其中进行必要的调整或干预,从而保证任务的高效完成。
这个工具有三个绝招:
-
需求解析:支持上传需求文档或者手动输入需求内容。你只需要把需求丢进系统,剩下的事情交给AI就行了。
-
数据库管理:需求存储、查询、更新,一个系统全搞定,再也不用担心我的需求文档找不到了!
-
测试用例生成:这才是它的杀手锏!直接从数据库中选取需求,系统就能自动生成覆盖功能验证、边界条件和异常处理的测试用例。
你只需要点点鼠标,就能得到一份高质量的测试用例,简直不要太爽!而且生成的测试用例还能导出为Excel、Markdown或JSON格式,满足各种场景需求。无论你是喜欢表格党还是代码流,它都能满足你的需求。
02 Autogen智能生成测试用例的原理
AutoGen 智能生成测试用例的核心原理是通过多智能体协作框架结合大语言模型(LLM)的推理能力,实现对代码逻辑的深度分析和测试场景的自动化构建。
以下是其技术原理的详细分解:多智能体分工协作:
AutoGen 通过多个智能体(Agents)分阶段处理测试生成任务,每个智能体专注特定环节
协作流程示例:
以电商优惠券函数为例:
def apply_discount(price: float, user_level: int, is_new: bool) -> float:
if is_new and price > 100:
return price * 0.8
elif user_level >= 5:
return price * 0.9
return price
AutoGen 处理过程:
1.代码分析:
识别参数:
-
price(float), user_level(int), is_new(bool)
-
提取分支:
is_new and price > 100
user_level >= 5
2.测试生成:
-
边界值:
price=100.0/100.01, user_level=4/5
-
组合测试:
-
[(True, 100.01, 3), (False, 200.0, 5), (True, 50.0, 1)]
-
异常输入:
price=-1.0, user_level=None
3.输出用例:
@pytest.mark.parametrize("is_new,price,user_level,expected", [
(True, 100.01, 3, 80.008), # 新用户折扣
(False, 200.0, 5, 180.0), # 高等级用户
(True, 50.0, 1, 50.0) # 无折扣
])
03 Streamlit + AutoGen + DeepSeek的环境部署与案例实战
工具组合的核心价值
Streamlit:
-
快速构建交互式 Web 应用,支持上传 PDF 文件、输入 PRD 内容、选择导出格式等功能。
-
实时展示生成的测试用例,提供友好的用户界面。
AutoGen:
-
通过多智能体协作,模拟测试团队的分工与协作(如需求分析、测试设计、用例评审)。
-
支持自定义角色,提升复杂需求的解析能力。
DeepSeek:
-
深度理解 PRD 内容,提取关键需求点并生成高覆盖率的测试用例。
-
支持多种格式导出,满足不同团队的需求。
环境准备及操作步骤
第1步:环境准备
Python环境要求
确保Python ≥3.8,推荐使用虚拟环境:
conda create -n autogen-demo python=3.10
conda activate autogen-demo
安装核心库
pip install pyautogen streamlit # 核心依赖
pip install python-dotenv # 环境变量管理
获取DeepSeek API Key
访问DeepSeek官网注册账号
在控制台创建API Key并保存为 DEEPSEEK_API_KE
第2步:项目结构
创建以下目录与文件:
testcase-autogen/
├── .env # 存储API密钥
├── config.py # 全局配置
├── testcase_agents.py # AutoGen智能体定义
└── app.py # Streamlit前端入口
第3步:配置与密钥管理
编辑 .env 文件
DEEPSEEK_API_KEY=your_api_key_here
编写 config.py
import os
from dotenv import load_dotenv
load_dotenv()
DEEPSEEK_CONFIG = {
"model": "deepseek-chat",
"api_key": os.getenv("DEEPSEEK_API_KEY"),
"base_url": "https://api.deepseek.com/v1",
"temperature": 0.3,
"max_tokens": 2000
}
第4步:定义AutoGen智能体在 testcase_agents.py 中编写:
import autogen
from config import DEEPSEEK_CONFIG
class TestcaseGenerator:
def __init__(self):
# 创建用户代理(需求输入)
self.user_proxy = autogen.UserProxyAgent(
name="User",
code_execution_config=False,
human_input_mode="NEVER"
)
# 创建测试工程师代理(调用DeepSeek)
self.test_engineer = autogen.AssistantAgent(
name="TestEngineer",
llm_config={"config_list": [DEEPSEEK_CONFIG]},
system_message="你是一名资深测试工程师,擅长根据需求生成边界值、异常流、正向场景的测试用例,用Markdown表格输出。"
)
def generate(self, requirement: str) -> str:
# 启动对话流程
self.user_proxy.initiate_chat(
self.test_engineer,
message=f"需求:{requirement}\n请生成测试用例,包含用例编号、步骤、预期结果、优先级。"
)
# 返回最后一条消息(生成的测试用例)
return self.test_engineer.last_message()["content"]
第5步:构建Streamlit前端
在 app.py 中实现交互界面:
import streamlit as st
from testcase_agents import TestcaseGenerator
# 初始化生成器
@st.cache_resource
def load_generator():
return TestcaseGenerator()
def main():
st.title("🚀 AI测试用例生成器")
st.markdown("输入需求,自动生成完整测试用例表(Powered by DeepSeek)")
# 输入区域
requirement = st.text_area("请输入需求描述:",
placeholder="示例:用户登录功能,需验证手机号+密码登录,错误三次锁定账户")
if st.button("生成测试用例"):
if not requirement.strip():
st.error("请输入需求描述!")
return
with st.spinner("AI正在思考中..."):
try:
generator = load_generator()
test_cases = generator.generate(requirement)
# 显示结果
st.markdown("### 生成的测试用例")
st.markdown(test_cases)
# 添加下载按钮
st.download_button(
label="下载Markdown文件",
data=test_cases,
file_name="test_cases.md"
)
except Exception as e:
st.error(f"生成失败:{str(e)}")
if __name__ == "__main__":
main()
第6步:运行与测试
启动Streamlit
streamlit run app.py
操作演示
-
输入需求:“用户登录功能,需验证手机号+密码登录,错误三次锁定账户”
-
点击生成按钮,等待10-20秒
-
查看生成的Markdown表格,示例输出:
| 用例编号 | 测试步骤 | 预期结果 | 优先级 |
|---------|--------------------------|----------------------|-------|
| TC001 | 输入正确手机号和密码 | 登录成功 | P0 |
| TC002 | 输入错误密码(1次) | 提示密码错误,可重试 | P1 |
| TC003 | 连续输入错误密码3次 | 账户锁定,提示联系客服 | P0 |
第7步:高级优化(可选)
增加历史记
# 在app.py中添加session_state记录
if "history" not in st.session_state:
st.session_state.history = []
# 生成成功后保存记录
st.session_state.history.append({
"time": datetime.now().strftime("%Y-%m-%d %H:%M"),
"requirement": requirement,
"test_cases": test_cases
})
参数调节面板
with st.sidebar:
st.header("高级设置")
temperature = st.slider("生成温度", 0.0, 1.0, 0.3)
max_tokens = st.number_input("最大长度", 500, 3000, 2000)
多模型切换
LLM_PROVIDER = os.getenv("LLM_PROVIDER", "deepseek") # 可设置为openai/deepseek
if LLM_PROVIDER == "deepseek":
CONFIG = DEEPSEEK_CONFIG
else:
CONFIG = OPENAI_CONFIG
好了,今天的分享就都这里了~
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】