前言
随着AI大模型在软件测试领域的广泛应用,提示词工程(Prompt Engineering)已成为测试工程师提升效率的关键技能。通过精准的提示词设计,我们可快速生成测试用例、优化测试场景、生成自动化脚本、以至实现智能化的测试覆盖。
那么如何更有效地在利用大模型时,让大模型更高效地协助我们得到期望的结果,好的提示词能让我们事半功倍。下文就总结下,对测试工程师而言,怎么编写出好的提示词框架
拆分复杂需求,准确描述问题
AI大模型的效果高度依赖输入提示词的清晰度,也就是尽可能减少二义性。所以在输入提示词时,应尽可能将复杂任务拆解为具体需求,例如:
- 场景化的描述:明确测试目标(如“生成登录功能的边界值测试用例”),而非模糊指令(如“帮我写测试用例”)。
- 约束条件:添加格式要求(如“以表格形式输出”)、优先级(如“仅包含高风险场景”)或技术限制(如“不涉及第三方接口”)。
- 示例引导:可以提供示例数据或模板,帮助模型理解期望的输出结构。
利用结构化框架,提升输出稳定性
通过定义结构化的提示词框架,可以约束模型行为,并减少随机性干扰:
- 角色设定:指定模型扮演专业角色(如“你是一位资深测试专家,擅长设计高覆盖率的测试场景”)。
- 分步指令:将复杂任务分解为多步骤(如“第一步:分析需求文档;第二步:识别关键路径;第三步:生成用例”)。
- 思维链(Chain-of-Thought):虽然目前很多模型都提供了深度思考能力,但通过提示词引导模型的分析,可以简化模型的思考推理方向。例如“请先分析用户操作流程,再重点针对异常场景生成测试用例”。
渐进式的迭代优化,持续改进提示词
大模型通常会保留对话上下文,针对每次反馈的结果,应不断校正,逐渐向最佳输出靠拢
- 反馈修正:对模型输出中的错误及时指正(如“第2条用例未覆盖超时场景,请补充”),并要求重新生成。
- 参数调整:控制输出长度(如“请用50字以内描述”)、温度系数(Temperature)以平衡模型的创造性与准确性。
- 交叉比对:目前开放大模型有很多,能力不一,对于分析的结果差别也比较大。可以综合判断,提取最优结果。
常见的一些校正场景:
问题 | 原因 | 改进方法 |
---|---|---|
输出过于宽泛 | 需求描述模糊 | 添加具体场景、格式、优先级约束 |
结果重复或冗余 | 未明确限制输出范围 | 排除不需要的场景(如指定“仅输出未覆盖的边界值场景”) |
技术术语错误 | 模型缺乏领域知识 | 提供术语表或指定角色(如“金融系统测试专家”) |
案例分析
基于以上原则,以我们要测试 https://www.saucedemo.com 这个网站的购物流程为例,要用大模型帮助我们生成一系列测试用例,提示词框架可以按下面的方式设定:
|
|
以上提示词比较好地对应了相关的提示词框架原则:
- 明确的角色:“假设你是一名经验丰富的软件测试工程师…”
- 清晰的任务:“为以下用户场景生成详细的、高优先级的正向和反向测试用例。重点关注从商品选择到成功下单的完整流程”
- 充分的上下文信息: 被测URL、用户信息、用例侧重点、税率假设
- 指定输出格式:“请将测试用例以Markdown表格形式输出,包含以下列:
用例ID
,测试描述
,前置条件
,测试步骤
,预期结果
,优先级
。” - 明确的具体要求和约束:用例和输出的具体要求,
- 引导思考方向:使用problem_user生成异常用例
最终通过这样的提示词,通过Deepseek,我们会得到如下一份生成的用例:
高优先级核心购物流程测试用例
用例ID | 测试描述 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
---|---|---|---|---|---|
正向测试用例 | |||||
TC_SAUCE_SHOP_001 | 标准用户成功登录并进入商品列表页 | 无 | 1. 访问 https://www.saucedemo.com/ 2. 输入用户名 standard_user 和密码 secret_sauce 3. 点击登录按钮 | 登录成功,跳转至商品列表页(Inventory Page) | 高 |
TC_SAUCE_SHOP_002 | 添加两件不同商品到购物车并验证数量 | 用户已登录 | 1. 在商品列表页选择两件不同商品,分别点击“添加到购物车”按钮 2. 检查购物车图标显示数量为2 | 购物车图标数量更新为2,且两件商品均显示在购物车页面 | 高 |
TC_SAUCE_SHOP_003 | 购物车页面验证商品信息和总价(不含税) | 用户已添加两件商品到购物车 | 1. 点击购物车图标进入购物车页面 2. 核对商品名称、数量、单价 3. 计算总价(商品1价格 + 商品2价格) | 商品信息正确,总价显示为两件商品价格之和 | 高 |
TC_SAUCE_SHOP_004 | 完成有效结账信息并验证含税总价 | 用户已进入结账信息页面 | 1. 在结账信息页面输入有效姓、名、邮编(如:John/Doe/12345) 2. 点击“继续”按钮 3. 在概览页面验证总价(总价 = 商品总价 * 1.08) | 跳转至结账概览页面,总价含8%税且计算正确 | 高 |
TC_SAUCE_SHOP_005 | 完成购买并验证订单成功信息 | 用户已进入结账概览页面 | 1. 点击“完成”按钮 | 显示“THANK YOU FOR YOUR ORDER”成功信息,返回商品列表页 | 高 |
反向测试用例 | |||||
TC_SAUCE_SHOP_006 | 结账信息页面姓名为空时提交表单 | 用户已进入结账信息页面 | 1. 留空姓名字段,输入有效邮编(如:12345) 2. 点击“继续”按钮 | 提示“First Name is required”,阻止跳转 | 高 |
TC_SAUCE_SHOP_007 | 结账信息页面邮编格式错误(如非数字) | 用户已进入结账信息页面 | 1. 输入有效姓、名,邮编为“ABC12” 2. 点击“继续”按钮 | 提示“Postal Code is invalid”,阻止跳转 | 高 |
TC_SAUCE_SHOP_008 | 购物车为空时尝试结账 | 用户已登录且购物车为空 | 1. 点击购物车图标进入购物车页面 2. 点击“结账”按钮 | 提示“Cart is empty”或阻止跳转至结账页面 | 高 |
Problem User 测试用例 | |||||
TC_SAUCE_SHOP_009 | Problem User 添加商品时图片显示异常 | Problem User 已登录 | 1. 浏览商品列表页 2. 检查商品图片是否加载正确(如:图片错位、无法显示) | 商品图片显示异常(如空白图、错误图片) | 中 |
TC_SAUCE_SHOP_010 | Problem User 结账时总价计算错误 | Problem User 已添加商品到购物车 | 1. 完成结账流程至概览页面 2. 验证总价是否等于商品总价 * 1.08 | 总价计算错误(如未含税或计算值偏差) | 中 |
补充说明
- 优先级分配:核心流程(登录、添加商品、结账)和关键异常场景(空字段、无效数据)设为高优先级。
- Problem User:用于验证特定异常行为(如UI渲染错误或逻辑漏洞)。
- 实际结果/状态:执行时需根据实际观察填写(如“通过”、“失败”或“阻塞”)。
- 税率计算:假设商品总价为
$X
,含税总价应为X * 1.08
,保留两位小数(如$21.99 * 1.08 = $23.75
)。