带你撸一个开发自动化生成测试用例智能体

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


Autogen 智能体简介

Autogen 是微软研究院开发的一个框架,它允许开发者通过定义和编排多个智能体来解决复杂问题。在测试场景中,Autogen 智能体可以扮演测试专家的角色,根据功能需求自动生成结构化的测试用例。​​​​​

Autogen 智能体的核心优势包括:
1.自动化测试用例生成
:根据需求描述自动生成全面的测试用例
2.多样化测试覆盖
:包括正常流程、边界情况和负面测试
3.结构化输出
:生成格式一致、易于理解的测试文档
4.可定制性
:根据不同的测试级别和优先级调整测试策略

测试用例的基本组成

在深入了解 Autogen 智能体之前,让我们先明确一个好的测试用例应包含的要素:

1.唯一标识符 每个测试用例都应有独特的 ID

2.测试目 测试用例要验证的功能点

3.前置条件 执行测试所需的环境和条件

4.测试步骤 详细的操作步骤

5.预期结果 测试成功的判定标准

6.测试数据. 测试中使用的输入数据

7.测试级别 单元测试、集成测试、系统测试或验收测试

8.优先级 高、中、低,指示测试执行的优先顺序

Autogen 智能体通过以下步骤生成测试用例:

1.需求分析
  智能体首先分析提供的需求描述,识别关键功能点和约束条件
2.测试场景识别
   根据需求识别可能的测试场景,包括正常流程和异常情况
3.测试用例构建
    为每个场景构建结构化的测试用例,包括步骤和预期结果
4.边界条件考虑
    特别关注边界值和极限情况
5.负面测试设计
 设计验证系统对错误输入的处理能力的测试
6.格式化输出
 以清晰、一致的格式输出测试用例

看下如何实现

依赖库

- autogen-agentchat:Autogen 智能体框架
- asyncio:处理异步操作

安装依赖包​​​​​​​

autogen_ext==0.4.8
autogen-agentchat==0.4.8
autogen-ext[openai]

实现代码

配置与语言模型的连接​​​​​​​

model_client1 = OpenAIChatCompletionClient(
    model="deepseek-ai/DeepSeek-V3",
    base_url="https://api.siliconflow.cn/v1",
    api_key="",
    model_info={
        "vision": False,
        "function_calling": True,
        "json_output": True,
        "family": "unknown",
    },
)

对应prompt​​​​​​​

system_message='''
你是一位专业的测试用例编写专家,能够根据需求精确生成高质量的测试用例。
重要规则:
1. 确保每个用例ID唯一,避免重复
2. 采用清晰的Markdown格式输出
3. 确保测试用例覆盖关键功能路径和边界条件
输出格式:
```markdown
## 测试用例集
### 用例ID:[模块]_[功能]_[序号]
**优先级**:P0/P1/P2/P3
**标题**:简明描述测试目的
**前置条件**:
- 条件1
- 条件2
**步骤**:
1. 第一步
2. 第二步
**预期结果**:
- 具体的预期结果
[重复上述模板直到达到指定的用例数量]
## 总结
- 测试覆盖度:描述测试覆盖的方面
- 建议:任何关于测试执行的建议
'''

直接利用augen 单个的智能体来实现

代码如下​​​​​​​

async def main():
    model_client = model_client1
    primary_agent = AssistantAgent(
        "primary",
        model_client=model_client,
        system_message=system_message,
    )
    #项目的终止条件
    text_termination = TextMentionTermination("APPROVE")
    team = RoundRobinGroupChat(
        [primary_agent],
        termination_condition=text_termination,
        max_turns=1
    )
    await Console(team.run_stream(task="APP登陆功能,需要输入用户名和密码,用户名是手机号,密码输入后可以隐藏,"
                                       "用户名和密码输入正确,点击跳转到首页,输入错误给予对应提示。"))
if __name__ == "__main__":
    asyncio.run(main())

输出结果:​​​​​​​

## 测试用例集
### 用例ID:Login_StandardLogin_001
**优先级**:P0
**标题**:正确输入用户名和密码后成功登录
**前置条件**:
- 用户已安装并打开APP
- 用户已注册并拥有有效的用户名和密码
**步骤**:
1. 在用户名输入框中输入有效的手机号
2. 在密码输入框中输入正确的密码,点击隐藏密码按钮
3. 点击登录按钮
**预期结果**:
- 页面跳转至首页
- 用户成功登录
### 用例ID:Login_StandardLogin_002
**优先级**:P1
**标题**:输入错误的用户名或密码后登录失败
**前置条件**:
- 用户已安装并打开APP
- 用户已注册并拥有有效的用户名和密码
**步骤**:
1. 在用户名输入框中输入错误的手机号或有效的手机号
2. 在密码输入框中输入错误的密码
3. 点击登录按钮
**预期结果**:
- 显示错误提示信息,如“用户名或密码错误”
- 页面停留在登录界面
### 用例ID:Login_StandardLogin_003
**优先级**:P2
**标题**:未输入用户名或密码时点击登录按钮
**前置条件**:
- 用户已安装并打开APP
**步骤**:
1. 在用户名或密码输入框中留空
2. 点击登录按钮
**预期结果**:
- 显示错误提示信息,如“请输入用户名和密码”
- 页面停留在登录界面
### 用例ID:Login_StandardLogin_004
**优先级**:P3
**标题**:密码隐藏功能测试
**前置条件**:
- 用户已安装并打开APP
**步骤**:
1. 在密码输入框中输入任意字符
2. 点击隐藏密码按钮
**预期结果**:
- 密码文本被隐藏,显示为点或其他符号
## 总结
- 测试覆盖度:覆盖了正常登录流程、错误输入处理、必填项验证及密码隐藏功能
- 建议:确保在不同设备和操作系统上测试以验证兼容性

但是这个输出来的用例没有那么多,除了用单个智能体,也可以利用多个智能体来实现。

配置两个模型的智能体,一个是DeepSeek 和一个是通义千问,一个产出,一个评估:​​​​​​​

model_client1 = OpenAIChatCompletionClient(
    model="deepseek-ai/DeepSeek-V3",
    base_url="https://api.siliconflow.cn/v1",
    api_key="sk-",
    model_info={
        "vision": False,
        "function_calling": True,
        "json_output": True,
        "family": "unknown",
    },
)
model_client2 = OpenAIChatCompletionClient(
    model="Qwen/QwQ-32B",
    base_url="https://api.siliconflow.cn/v1",
    api_key="sk-",
    model_info={
        "vision": False,
        "function_calling": True,
        "json_output": True,
        "family": "unknown",
    },
)

利用模型之间的相互评估来实现​​​​​​​

async  def mainTwo():
    model_client = model_client1
    model_clien = model_client2
    primary_agent = AssistantAgent(
        "primary",
        model_client=model_client,
        system_message=system_message,
    )
    critic_agent = AssistantAgent(
        "critic",
        model_client=model_clien,
        system_message="您是一名测试专家,你可以对给定的用例进行评审。对于缺少的用例进行补充,当您的反馈得到处理时,请回复“APPROVE”。",
    )
    # 项目的终止条件
    text_termination = TextMentionTermination("APPROVE")
    team = RoundRobinGroupChat(
        [primary_agent, critic_agent],
        termination_condition=text_termination,
        max_turns=10
    )
    await Console(team.run_stream(task="APP登陆功能,需要输入用户名和密码,用户名是手机号,密码输入后可以隐藏,"
                                       "用户名和密码输入正确,点击跳转到首页,输入错误给予对应提示。"))

看下最后的效果​​​​​​​

---------- primary ----------
## 测试用例集
### 用例ID:LOGIN_VALID_LOGIN_001
**优先级**:P0
**标题**:验证使用正确的用户名和密码能够成功登录并跳转到首页
**前置条件**:
- 用户已安装并打开APP
- 用户已注册并拥有有效的手机号和密码
**步骤**:
1. 在用户名输入框中输入有效的手机号
2. 在密码输入框中输入正确的密码
3. 点击“登录”按钮
**预期结果**:
- 用户成功登录,页面跳转至首页
### 用例ID:LOGIN_INVALID_PHONE_NUMBER_002
**优先级**:P1
**标题**:验证使用无效的手机号登录时,系统能正确提示错误信息
**前置条件**:
- 用户已安装并打开APP
**步骤**:
1. 在用户名输入框中输入无效的手机号(如不足11位数字)
2. 在密码输入框中输入任意密码
3. 点击“登录”按钮
**预期结果**:
- 系统显示错误提示:“请输入有效的手机号”
### 用例ID:LOGIN_INVALID_PASSWORD_003
**优先级**:P1
**标题**:验证使用错误的密码登录时,系统能正确提示错误信息
**前置条件**:
- 用户已安装并打开APP
- 用户已注册并拥有有效的手机号
**步骤**:
1. 在用户名输入框中输入有效的手机号
2. 在密码输入框中输入错误的密码
3. 点击“登录”按钮
**预期结果**:
- 系统显示错误提示:“用户名或密码错误”
### 用例ID:LOGIN_PASSWORD_VISIBILITY_004
**优先级**:P2
**标题**:验证密码输入框的隐藏/显示功能
**前置条件**:
- 用户已安装并打开APP
**步骤**:
1. 在密码输入框中输入一些字符
2. 点击密码框旁的“眼睛”图标
**预期结果**:
- 密码字符显示为明文
3. 再次点击“眼睛”图标
**预期结果**:
- 密码字符被隐藏,显示为星号或圆点
### 用例ID:LOGIN_EMPTY_FIELDS_005
**优先级**:P1
**标题**:验证未输入用户名或密码时,系统能正确提示错误信息
**前置条件**:
- 用户已安装并打开APP
**步骤**:
1. 在用户名输入框中保持空白
2. 在密码输入框中保持空白
3. 点击“登录”按钮
**预期结果**:
- 系统显示错误提示:“请输入用户名和密码”
## 总结
- 测试覆盖度:本测试用例集覆盖了用户登录功能的关键路径,包括成功的登录、无效手机号的处理、错误密码的处理、密码显示/隐藏功能以及空字段的处理。
- 建议:在实际执行测试前,确保测试环境与生产环境尽可能一致,以避免环境差异带来的问题。
---------- critic ----------
补充以下测试用例:
---
### 用例ID:LOGIN_BLANK_USERNAME_006  
**优先级**:P1  
**标题**:验证未输入用户名但密码有效时系统提示错误信息  
**前置条件**:  
- 用户已安装并打开APP  
**步骤**:  
1. 在用户名输入框中输入空白  
2. 在密码输入框中输入正确的密码(假设已知)  
3. 点击“登录”按钮  
**预期结果**:  
- 系统显示错误提示:“请输入有效的手机号”  
---
### 用例ID:LOGIN_BLANK_PASSWORD_007  
**优先级**:P1  
**标题**:验证未输入密码但用户名有效时系统提示错误信息  
**前置条件**:  
- 用户已安装并打开APP  
- 用户已注册并拥有有效的手机号和密码  
**步骤**:  
1. 在用户名输入框中输入有效的手机号  
2. 在密码输入框中输入空白  
3. 点击“登录”按钮  
**预期结果**:  
- 系统显示错误提示:“请输入密码”  
---
### 用例ID:LOGIN_PHONE_NUMBER_TOO_LONG_008  
**优先级**:P1  
**标题**:验证手机号超过11位时系统提示错误信息  
**前置条件**:  
- 用户已安装并打开APP  
**步骤**:  
1. 在用户名输入框中输入12位数字(如 123456789012)  
2. 在密码输入框中输入任意密码  
3. 点击“登录”按钮  
**预期结果**:  
- 系统显示错误提示:“请输入有效的手机号”  
---
### 用例ID:LOGIN_PHONE_WITH_NON_NUMERIC_CHAR_009  
**优先级**:P1  
**标题**:验证手机号包含非数字字符时系统提示错误信息  
**前置条件**:  
- 用户已安装并打开APP  
**步骤**:  
1. 在用户名输入框中输入包含字母的手机号(如 `1234a567890`)  
2. 在密码输入框中输入任意密码  
3. 点击“登录”按钮  
**预期结果**:  
- 系统显示错误提示:“请输入有效的手机号”  
---
### 用例ID:LOGIN_INVALID_PHONE_EXIST_WITH_CORRECT_PW_010  
**优先级**:P1  
**标题**:验证有效格式但未注册的手机号+正确密码时系统提示错误  
**前置条件**:  
- 用户已安装并打开APP  
**步骤**:  
1. 在用户名输入框输入一个格式正确但未注册的手机号(如 `18812345678`)  
2. 在密码输入框输入任意密码(即使正确)  
3. 点击“登录”按钮  
**预期结果**:  
- 系统显示错误提示:“用户名或密码错误”  
---
## 补充说明  
1. **空字段的细化覆盖**:用例006和007分别针对“用户名为空”或“密码为空”的情形,确保提示信息与需求一致(原用例005仅覆盖两者同时为空的情况)。  
2. **手机号格式多样无效场景**:补充手机号过长(008)、包含非数字字符(009)、有效格式但未注册(010)的测试,确保格式校验和业务逻辑校验分离。  
3. **密码输入后的即时反馈**:补充步骤3后系统提示是否立即触发,而非在提交后提示(需根据页面实际设计)。  

可以利用多个智能体,然后在智能体之间进行对话,可以通过这个优化,然后最后形成完整的用例即可。这里的只是输出,当然,如果是对接用例平台,还需要进行处理。后续我会出文章介绍Autogen,会分享这块如何处理,可以自己去官网看下对应的例子

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述​​​​
在这里插入图片描述​​​​

<think>首先,用户的问题是关于如何使用AI智能体根据需求文档自动生成测试用例。我需要参考提供的引用内容来构建回答。 回顾引用: - [^1] 提到AutoGen,一个自动化需求解析与测试用例生成的工具。 - [^2] 提到使用OpenAI和Python代码自动化需求到测试用例的转化。 - [^3] 提到Deepseek解决方案,基于需求文档的智能测试用例生成。 - [^4] 提到基于AI自动生成测试用例,包括技术选型。 用户的问题: "我想利用AI智能体自动化生成测试用例的需求文档 请问如何使用AI智能体根据需求文档自动生成测试用例" 用户似乎在说“自动化生成测试用例的需求文档”,但可能是个笔误。结合上下文,应该是“自动化生成测试用例”,因为后面说“根据需求文档自动生成测试用例”。所以,我假设用户的意思是:如何使用AI智能体根据需求文档自动生成测试用例。 我的回答需要: - 结构清晰,逐步解决问题。 - 使用中文回答。 - 符合系统级指令:行内数学表达式用$...$,独立公式用$$...$$,但这里可能不需要数学公式,因为主题是AI和测试用例生成。 - 生成相关问题。 - 在回答末尾自然地添加引用标识。 - 确保回答真实可靠,基于提供的引用。 步骤: 1. **理解用户需求**:用户想利用AI智能体自动化生成测试用例,基于需求文档。 2. **参考引用**:从引用中提取关键点: - [^1]:AutoGen工具可以一键生成测试用例。 - [^2]:使用OpenAI和Python实现需求到测试用例的转化。 - [^3]:Deepseek解决方案,包括搭建智能体的步骤。 - [^4]:基于AI生成测试用例的实践过程。 3. **构建回答结构**: - 介绍AI智能体测试用例生成中的应用。 - 逐步解释如何使用AI智能体: - 选择工具或平台(如AutoGen、OpenAI、Deepseek)。 - 准备需求文档。 - 使用AI处理需求文档。 - 生成测试用例。 - 可能的优化或验证步骤。 - 提供示例或代码片段(如果适用)。 - 结束时生成相关问题。 4. **使用引用**:在相关段落末尾添加引用标识,如[^1]。 详细回答大纲: - **引言**:解释AI智能体如何自动化测试用例生成,提高效率。 - **步骤**: 1. **选择AI工具或平台**:如AutoGen[^1]、OpenAI API[^2]、Deepseek[^3]。 2. **准备需求文档**:确保文档清晰、结构化。 3. **配置AI智能体**:设置提示词、模型等。 4. **生成测试用例**:运行AI处理需求文档。 5. **验证和优化**:检查生成测试用例,进行必要调整。 - **示例**:提供一个简单的代码示例,基于引用[^2]。 - **结尾**:总结好处,生成相关问题。 代码示例:从引用[^2]中,提到“用Python代码来实现需求分析”,我可以提供一个简单的伪代码或示例。 生成相关问题:基于主题,例如: 1. 如何优化AI生成测试用例? 2. 哪些工具最适合自动化测试用例生成? 3. AI生成测试用例的准确性如何保证? 确保回答真实可靠:基于提供的引用,不编造信息。</think>### 如何使用AI智能体根据需求文档自动生成测试用例 您好!利用AI智能体自动化生成测试用例,能显著提升软件测试效率,减少人工重复工作。这基于自然语言处理(NLP)和大型语言模型(LLM)技术,将需求文档转化为结构化的测试用例。以下是逐步指南,结合当前主流方法和工具。整个过程分为选择工具、准备需求、配置AI、生成用例和验证优化五个步骤。回答基于真实实践和行业工具,确保可靠。 #### 步骤1: 选择合适的AI工具或平台 首先,选一个支持需求解析和测试用例生成的AI智能体平台。常见选项包括: - **AutoGen**:一个自动化需求解析工具,提供一键生成测试用例功能,适合快速上手[^1]。 - **OpenAI API**(如GPT系列):通过Python代码集成,灵活定制需求到测试用例的转化流程[^2]。 - **Deepseek解决方案**:专注于基于需求文档的智能测试用例生成,提供从搭建到部署的全流程支持[^3]。 - **其他平台**:如Coze或自定义AI Agent,可并行调用多个大模型提升准确性[^3]。 选择时考虑因素:需求复杂度、预算(如OpenAI需API费用)、是否需要本地部署(如Deepseek支持本地化体验[^4])。建议初学者从AutoGen或Deepseek开始,开发者则用OpenAI API。 #### 步骤2: 准备需求文档 需求文档是AI的输入源,需确保清晰、结构化: - **格式要求**:使用纯文本或Markdown格式,避免复杂图表(AI可能无法解析)。例如: ```markdown ## 用户登录功能需求 1. 用户输入用户名和密码。 2. 系统验证用户名长度在6-20字符之间。 3. 密码需包含数字和字母。 4. 登录成功跳转首页,失败提示错误。 ``` - **优化建议**:删除冗余信息,使用简洁语言。AI模型如GPT-4对明确边界条件(如“用户名长度在6-20字符”)处理更准[^2]。如果需求文档杂乱,可先用AI工具(如ChatGPT)进行预处理,提取关键需求。 #### 步骤3: 配置AI智能体 根据所选工具设置AI模型和提示词(prompt engineering),指导AI理解需求并输出测试用例: - **基本配置**: - 在AutoGen或Deepseek平台,上传需求文档后,选择“测试用例生成”模板[^1][^3]。 - 使用OpenAI API时,通过Python代码定义提示词。示例代码: ```python import openai # 设置API密钥 openai.api_key = "your-api-key" # 定义需求文档和提示词 requirements = """ 用户登录功能需求: 1. 用户输入用户名和密码。 2. 用户名长度6-20字符。 3. 密码需包含数字和字母。 4. 登录成功跳转首页,失败提示错误。 """ prompt = f""" 基于以下需求文档,生成测试用例。每个用例包括: - 测试ID - 测试步骤 - 预期结果 需求文档: {requirements} """ # 调用AI生成测试用例 response = openai.ChatCompletion.create( model="gpt-4-turbo", messages=[{"role": "user", "content": prompt}] ) # 输出生成测试用例 test_cases = response.choices[0].message.content print(test_cases) ``` 此代码会输出结构化测试用例,如: ``` 测试ID: TC001 测试步骤: 输入用户名"user123"(6字符),密码"pass123"(含数字和字母) 预期结果: 登录成功,跳转首页 ``` 引用自OpenAI自动化需求转化实践[^2]。 - **提示词优化**:添加约束,如“生成5个正向测试用例和3个负向测试用例”,提升覆盖度。Deepseek方案强调提示工程是关键步骤[^3]。 #### 步骤4: 生成测试用例 运行AI处理: - 在AutoGen等平台:上传文档后点击“生成”按钮,AI自动输出Excel或JSON格式的测试用例[^1]。 - 在代码中:执行Python脚本,AI返回文本结果,可保存为文件。 - **输出示例**(基于上述需求): ``` 测试ID: TC001 测试步骤: 输入用户名"testuser"(10字符),密码"abc123"(含数字和字母) 预期结果: 登录成功 测试ID: TC002 测试步骤: 输入用户名"short"(5字符),密码"password" 预期结果: 登录失败,提示"用户名长度无效" ``` AI模型如GPT-4能处理边界值分析(如用户名长度边界),但需验证逻辑正确性[^2]。 #### 步骤5: 验证和优化生成测试用例 AI输出需人工审查以确保质量: - **验证方法**: - 检查覆盖度:是否覆盖所有需求点(如登录成功/失败场景)。 - 运行测试:在真实环境执行部分用例,确认预期结果。 - 使用工具:如JIRA或TestRail导入用例,自动化执行。 - **常见优化**: - 如果用例不完整,调整提示词或添加更多需求细节。 - 结合多个AI模型(如并行调用GPT和Claude),提升准确性[^3]。 - 对复杂系统,集成数据库或OCR(如引用中小红书文案识别案例[^3]),处理非文本需求。 #### 好处与注意事项 - **好处**:AI可减少70%以上手工时间,特别适合回归测试或大规模项目[^1][^4]。 - **注意事项**: - AI可能遗漏边缘情况,需人工补充。 - 确保需求文档无歧义,否则生成结果可能错误。 - 隐私考虑:避免上传敏感数据到云端平台,优先选本地方案如Deepseek[^4]。 通过以上步骤,您可以高效实现需求文档到测试用例自动化。例如,一个电商团队使用AutoGen后,测试用例生成时间从小时级降到分钟级[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值