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