AI写测试用例
随着AI和大模型(LLM)的诞生以及技术的成熟和普及,测试工程师不仅可以利用 AI 生成和优化测试用例,还能借助 LLM 提高测试覆盖率、减少测试设计的重复性工作,从而专注于更复杂的测试策略和质量保障。
在测试用例设计方面,大语言模型可以提供以下帮助:
- 根据需求描述生成完整的测试用例,包括 测试名称、测试步骤、前置条件和预期结果。
- AI 能够帮助测试人员探索 边界测试、异常情况(Negative Cases)、场景测试(Scenario-based Testing) 等,确保测试更全面。
- 自动修正测试用例:优化 测试用例的格式、语法和描述方式,提高可读性和一致性。
本篇文章将重点探讨如何 利用 AI 生成测试用例,包括具体的方法、应用场景,以及如何通过优化 Prompt 提高测试用例的质量和覆盖范围。
什么是Prompt?
在使用大模型生成测试用例或其他需求前可以适当了解一些Prompt的基础知识,这样可以更好的使用LLM
在LLM语言模型中, prompt是用于生成内容或输出的而提供给模型的输入。Prompt可以是一个短句,提问,段落或指令。通过精心设计的prompt,可以引导模型生成高质量的、符合预期的稳定一致的内容。
如何设计高效的 Prompt?
在设计prompt时,有一些关键的注意事项:
-
明确的指令:提示应该明确、具体,这样可以减少模型生成模糊或不相关内容的可能性。
例如:✅“为登录功能生成 3 个测试用例,包括测试名称、描述、步骤和预期结果。” 🚫“生成一些测试用例”(过于宽泛)
-
上下文信息:提供足够的上下文信息可以帮助模型更好地理解和生成内容。上下文可以包括背景信息、特定的词汇或风格要求等。
例如:如果生成边界测试用例,可以添加背景说明:“系统的用户名最大长度为 20 个字符,最小长度为 3 个字符。”
-
示例:提供示例可以让模型更清楚地理解预期的输出格式或内容。
例如,可以通过给出一个测试用例的例子来说明你希望的回答方式以帮助大模型输出更符合预期的结果,这也是One-Shot Prompt的技巧
- **示例:**
- 测试名称:登录成功
- 测试描述:用户输入正确的用户名和密码后应成功登录
- 前置条件:用户已注册
- 测试步骤:
- 1. 打开登录页面
- 2. 输入正确的用户名和密码
- 3. 点击“登录”按钮
- 预期结果:用户成功跳转至主页
-
迭代优化:通过不断尝试和调整prompt,可以逐步优化生成的内容质量。可以根据模型的输出进行反馈和修改,直到达到满意的效果。
-
多轮对话:在复杂任务中,可以通过多轮对话逐步引导模型生成所需内容。每一轮对话都可以提供新的信息或指令,以逐步完善输出 例如可以先让AI生成测试点,然后再逐步生成测试用例。将完整的测试用例设计分成几个步骤去完成
测试用例生成与优化
在软件测试过程中,生成高质量的测试用例是确保系统功能正确性和稳定性的关键步骤。使用大语言模型辅助测试用例设计和生成,可以提高测试效率,并覆盖更多边界情况。
在设计测试用例时可以指定输出的格式、比如Json、表格,并提供一些Example给到大模型
Prompt
- 你的任务是为给定的功能需求 **生成高质量的测试用例**,确保涵盖正向路径(Positive Test Case)、异常情况(Negative Test Case)以及边界测试(Edge Case)。
-
- Feature:
-
- [需求内容]
-
- 请按照以下格式输出测试用例:
-
- 1. **测试名称**:简洁描述测试目标
-
- 2. **测试描述**:概述测试的目的
-
- 3. **前置条件**(如适用):执行该测试所需的前提条件
-
- 4. **测试步骤**:按步骤列出执行流程
-
- 5. **预期结果**:测试通过时的预期行为
假设我们拿到如下需求,需要进行测试用例设计时
用户账户
1.注册/登录(Registration/Login)
用户可以使用电子邮件或社交媒体账户(如 Google、Facebook)进行安全注册和登录。
2.个人资料管理(Profile Management)
允许用户更新个人信息(姓名、电话号码)、收货地址和支付信息。
3.订单历史(Order History)
用户可以查看过去的订单记录,并跟踪当前订单的状态(如“处理中”、“已发货”)。
将上面的需求直接复制到Prompt中的需求内容,然后输入给大家熟悉的大模型(这边就不具体介绍了). 这边我的答案如下
- ### 测试用例 - 用户账户(User Accounts)
-
- #### **1. 注册/登录(Registration/Login)**
-
- ##### **测试名称:使用电子邮件成功注册**
- - **测试描述:** 验证用户使用电子邮件正确注册账户
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面
- 2. 输入有效的电子邮件地址(如 `test@example.com`)
- 3. 输入符合密码规则的密码(如 `Test@12345`)
- 4. 确认密码
- 5. 点击“注册”按钮
- - **预期结果:** 用户成功注册,收到确认邮件,并跳转到登录页面
-
- ---
-
- ##### **测试名称:使用已注册电子邮件注册**
- - **测试描述:** 验证使用已存在的电子邮件注册时的错误处理
- - **前置条件:** 电子邮件 `test@example.com` 已注册
- - **测试步骤:**
- 1. 访问注册页面
- 2. 输入已注册的电子邮件地址 `test@example.com`
- 3. 输入符合规则的密码
- 4. 点击“注册”按钮
- - **预期结果:** 显示错误消息“该电子邮件已注册,请使用登录功能”
-
- ---
-
- ##### **测试名称:使用社交媒体(Google)成功登录**
- - **测试描述:** 验证用户使用 Google 账户成功登录
- - **前置条件:** 用户已在 Google 账户注册
- - **测试步骤:**
- 1. 访问登录页面
- 2. 点击“使用 Google 登录”按钮
- 3. 在弹出的 Google 登录窗口中选择一个已注册的 Google 账户
- 4. 允许访问权限(如适用)
- - **预期结果:** 用户成功登录,跳转到个人主页
-
- ---
-
- ##### **测试名称:输入错误密码登录**
- - **测试描述:** 验证用户输入错误密码时的错误提示
- - **前置条件:** 电子邮件 `test@example.com` 账户已注册
- - **测试步骤:**
- 1. 访问登录页面
- 2. 输入 `test@example.com`
- 3. 输入错误密码 `WrongPassword!`
- 4. 点击“登录”按钮
- - **预期结果:** 显示错误提示“邮箱或密码错误,请重试”
-
- ---
-
- ##### **测试名称:输入格式错误的电子邮件**
- - **测试描述:** 验证注册时输入错误格式的电子邮件是否被拦截
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面
- 2. 输入无效电子邮件 `test@com`
- 3. 输入符合规则的密码
- 4. 点击“注册”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:输入过短的密码**
- - **测试描述:** 验证密码不符合最低长度要求时的错误提示
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面
- 2. 输入有效的电子邮件
- 3. 输入过短的密码 `Test1`
- 4. 点击“注册”按钮
- - **预期结果:** 显示错误提示“密码长度至少为 8 位”
-
- ---
-
- ### **2. 个人资料管理(Profile Management)**
-
- ##### **测试名称:成功更新用户姓名**
- - **测试描述:** 验证用户可以更新姓名
- - **前置条件:** 用户已登录
- - **测试步骤:**
- 1. 进入个人资料页面
- 2. 修改姓名字段(如 `张三` → `李四`)
- 3. 点击“保存”按钮
- - **预期结果:** 显示“个人信息已更新”,页面刷新后显示新姓名
-
- ---
-
- ##### **测试名称:更新电话号码 - 输入无效号码**
- - **测试描述:** 验证系统对无效电话号码的处理
- - **前置条件:** 用户已登录
- - **测试步骤:**
- 1. 进入个人资料页面
- 2. 在电话号码栏输入 `123`(无效号码)
- 3. 点击“保存”按钮
- - **预期结果:** 显示错误消息“请输入有效的电话号码”
-
- ---
-
- ##### **测试名称:添加新的收货地址**
- - **测试描述:** 验证用户可以添加新的收货地址
- - **前置条件:** 用户已登录
- - **测试步骤:**
- 1. 进入个人资料 - 收货地址管理
- 2. 点击“添加地址”按钮
- 3. 输入完整的地址信息(如 `北京市 海淀区 中关村 1 号`)
- 4. 点击“保存”按钮
- - **预期结果:** 显示“地址已添加”,新地址显示在地址列表中
-
- ---
-
- ##### **测试名称:删除收货地址**
- - **测试描述:** 验证用户可以成功删除收货地址
- - **前置条件:** 用户账户已有至少一个收货地址
- - **测试步骤:**
- 1. 进入个人资料 - 收货地址管理
- 2. 选择一个地址
- 3. 点击“删除”按钮
- 4. 确认删除
- - **预期结果:** 该地址从列表中移除,并显示“地址已删除”
-
- ---
-
- ### **3. 订单历史(Order History)**
-
- ##### **测试名称:成功查看订单历史**
- - **测试描述:** 验证用户可以正常查看历史订单
- - **前置条件:** 用户账户已登录,并有至少一笔历史订单
- - **测试步骤:**
- 1. 进入“订单历史”页面
- 2. 检查列表中是否显示过去的订单
- - **预期结果:** 订单列表正确展示历史订单记录
-
- ---
-
- ##### **测试名称:查看当前订单状态**
- - **测试描述:** 验证用户可以正确查看当前订单的状态
- - **前置条件:** 用户账户已登录,并有至少一个正在处理的订单
- - **测试步骤:**
- 1. 进入“订单历史”页面
- 2. 查找最新订单
- 3. 检查订单状态是否正确(如“处理中”)
- - **预期结果:** 订单状态正确显示
-
- ---
-
- ##### **测试名称:订单历史为空**
- - **测试描述:** 验证当用户没有订单时的显示效果
- - **前置条件:** 用户账户没有任何订单
- - **测试步骤:**
- 1. 进入“订单历史”页面
- - **预期结果:** 显示“暂无订单记录”
-
- ---
-
- ##### **测试名称:用户尝试查看不存在的订单**
- - **测试描述:** 验证用户访问无效订单 ID 的错误处理
- - **前置条件:** 用户账户已登录
- - **测试步骤:**
- 1. 访问 `/order-history/999999`(假设该订单 ID 不存在)
- - **预期结果:** 显示错误提示“订单不存在”
-
- ---
-
- 这些测试用例涵盖了**正向路径(Positive Cases)、异常情况(Negative Cases)以及边界测试(Edge Cases)**,确保用户账户的主要功能符合预期。你可以根据具体需求进一步扩展或优化这些测试用例。
AI 生成的测试用例需要仔细审核,以确保测试用例的准确性和覆盖率,这是一个不断优化的迭代过程。
这边我们可以将一些不合格的用例剔除,然后给到大模型进一步的指示,例如请增加一些更多的边界测试用例等等,或考虑哪些情况。例如上面生成的结果中我们需要进一步扩展,生成更多错误格式的电子邮件,可以用以下的方式。
请扩展关于格式错误的电子邮件输入的测试用例,考虑更多异常情况。
因为一般大模型都会有上下文的,所以这时候可以不用将需求以及输出格式给到大模型了。这里返回的内容如下
- ### **扩展测试用例 - 格式错误的电子邮件**
-
- ##### **测试名称:电子邮件缺少 '@' 符号**
- - **测试描述:** 验证用户在注册或登录时输入的电子邮件地址缺少 '@' 符号时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 在电子邮件输入框中输入 `testexample.com`
- 3. 输入有效的密码(如 `Test@12345`)
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误消息“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件缺少域名**
- - **测试描述:** 验证用户输入电子邮件时,省略域名(如 `@gmail.com`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 在电子邮件输入框中输入 `@gmail.com`
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件缺少用户名**
- - **测试描述:** 验证电子邮件地址缺少用户名部分的情况(如 `@example.com`)
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `@example.com` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件缺少顶级域名**
- - **测试描述:** 验证电子邮件地址没有顶级域名(如 `test@example`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test@example` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件包含多个 '@' 符号**
- - **测试描述:** 验证用户输入多个 `@` 符号(如 `test@@example.com`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test@@example.com` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件包含特殊字符**
- - **测试描述:** 验证电子邮件地址包含不允许的特殊字符(如 `test!@example.com`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test!@example.com` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件域名前缀包含非法字符**
- - **测试描述:** 验证电子邮件的域名前缀包含非法字符(如 `test@-example.com`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test@-example.com` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件包含空格**
- - **测试描述:** 验证电子邮件地址中包含空格(如 `test @example.com`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test @example.com` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“电子邮件地址不能包含空格”
-
- ---
-
- ##### **测试名称:电子邮件前后包含空格**
- - **测试描述:** 验证电子邮件地址前后包含空格(如 `" test@example.com "`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `" test@example.com "` 作为电子邮件地址(包含前后空格)
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 应自动去除空格或显示错误提示“电子邮件地址格式不正确”
-
- ---
-
- ##### **测试名称:电子邮件域名部分包含数字但无顶级域**
- - **测试描述:** 验证电子邮件地址包含数字但缺少顶级域名(如 `test@1234`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test@1234` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- ##### **测试名称:电子邮件域名部分仅包含一个字母**
- - **测试描述:** 验证电子邮件地址的域名部分仅包含一个字母(如 `test@x.com`)时的错误处理
- - **前置条件:** 无
- - **测试步骤:**
- 1. 访问注册页面或登录页面
- 2. 输入 `test@x.com` 作为电子邮件地址
- 3. 输入有效的密码
- 4. 点击“注册”或“登录”按钮
- - **预期结果:** 显示错误提示“请输入有效的电子邮件地址”
-
- ---
-
- 这些测试用例涵盖了**更多异常情况(Negative Cases)和边界情况(Edge Cases)**,确保电子邮件格式验证的健壮性。你可以根据需求进一步扩展或调整规则。
如果生成的结果基本满意后,我们可以让大模型将用例整理成一份表格或导出成Excel文件。这时候可以把所有需要保留的用例复制给大模型并在后面加上一句 : 请将以上用例整理并以表格形式输出
以下是最终结果示例(只保留了部分)
测试名称 | 测试描述 | 前置条件 | 测试步骤 | 预期结果 |
---|---|---|---|---|
使用电子邮件成功注册 | 验证用户使用电子邮件正确注册账户 | 无 | 1. 访问注册页面2. 输入有效电子邮件3. 输入符合密码规则的密码4. 确认密码5. 点击“注册”按钮 | 用户成功注册,收到确认邮件,并跳转到登录页面 |
使用已注册电子邮件注册 | 验证使用已存在的电子邮件注册时的错误处理 | 电子邮件已注册 | 1. 访问注册页面2. 输入已注册的电子邮件3. 输入符合规则的密码4. 点击“注册”按钮 | 显示错误消息“该电子邮件已注册,请使用登录功能” |