AI大模型入门 三:5分钟速成Prompt公式,让AI生成代码的通过率从30%到90%

219 阅读6分钟

为什么你的AI总在“装傻”?‌

测试工程师让AI生成接口测试用例:

  • “帮我写个登录接口的测试用例”‌ → AI返回了包含“用户名包含特殊字符”的案例,但遗漏了“密码加密传输”的验证
  • 改进后‌:“生成基于OAuth2.0协议的登录接口测试用例,覆盖正向场景、边界值(如超长token)、安全场景(加密传输和SQL注入检测)” → AI输出包含12条精准用例

‌问题本质‌:AI是一台需要精确指令的“问答机器”——‌提示工程(Prompt Engineering)‌就是编写这些指令的底层技术。

一、测试工程师眼中的提示工程:不只是“会说话”

1. 技术定义‌

提示工程 = ‌结构化输入设计‌ + ‌模型行为控制‌,核心目标是通过输入文本的优化,引导AI生成‌确定性高、可测试‌的输出。

2. 测试开发场景的价值‌

场景传统方式提示工程加持
测试用例生成手工编写/脚本模板动态生成定制化用例
日志分析正则表达式匹配语义级错误模式提取
自动化脚本固定代码逻辑按需生成自适应脚本

二、提示工程的六大进阶法则

‌▌法则1:输入结构化——像设计测试用例一样写Prompt‌

❌模糊指令:

“模拟用户登录异常场景”  

✅测试工程师专用模板:

角色:安全测试专家  
目标:生成包含OWASP Top 10风险的登录接口测试用例  
输入约束:  
- 请求方式:POST  
- 参数:username(字符串,1-20位)、password(SHA256加密)  
输出要求:  
- 按<场景类型>-<测试步骤>-<预期结果>结构输出  
- 包含:暴力破解、SQL注入、XSS、会话固定攻击检测  

▌法则2:逆向思维——注入“对抗样本”‌ 案例:让AI生成渗透测试方案

"已知系统已防御常规SQL注入攻击,请设计三种绕过WAF的新型注入攻击手法,要求:  
1. 基于时间盲注技术  
2. 利用HTTP协议分块传输特性  
3. 提供检测用Payload示例"  

‌▌法则3:动态上下文控制——类似数据驱动测试

# 使用变量占位符实现动态Prompt  
test_scenarios = ["并发重复提交", "跨站请求伪造", "签名过期"]  
prompt = f"""  
基于以下安全场景生成测试脚本:{', '.join(test_scenarios)}  
要求:  
1. 使用Python+Requests库  
2. 每个场景包含异常处理逻辑  
3. 输出断言语句示例  
"""  

‌▌法则4:元指令优先——设置AI的“测试模式”

[系统指令]  
你是一个资深测试架构师,擅长设计高覆盖率的异常测试方案,严格遵守ISTQB标准。  
[用户指令]  
为电商支付接口设计异常流测试用例,重点覆盖网络抖动、第三方支付超时、对账不平场景。 

‌▌法则5:链式推理——模仿测试思维链

请逐步思考:  
1. 文件上传接口的合法参数边界是什么?  
2. 如何构造超过服务端限制的测试文件?  
3. 预期系统应返回什么错误码?  
4. 如何验证服务端是否真实拦截而非前端伪装?  

‌▌法则6:自验证Prompt——让AI自己写测试

生成一段Python代码实现用户注册功能,需包含:  
- 密码强度校验(大小写字母+数字+特殊符号)  
- 手机号格式验证  
- 并发重复注册检测  

并针对这段代码,设计5个边界值测试用例,以表格形式呈现:  
| 测试数据 | 预期结果 |  
|---------|----------|  
| ...     | ...      |  

三、测试工程师必备的Prompt调试技巧

1. 坏味道检测‌——你的Prompt是否存在这些问题?

问题类型示例优化方案
幻觉指令“确保100%覆盖率”改为“覆盖主要异常码4xx/5xx”
术语混淆“测试所有可能性”明确为“覆盖等价类划分中的有效/无效类”
循环依赖“先写测试用例再写需求”拆分步骤:“第一步:提取需求中的验收条件;第二步:生成用例”

2. 可视化调试工具推荐‌

  • LangChain Prompt调试器‌:跟踪AI推理过程
  • ‌DeepPrompt可视化工具‌:分析Prompt各段落影响力
  • ‌W&B Prompts监控‌:记录不同Prompt版本的输出差异

四、当提示工程遇见自动化测试

AI生成自动化测试脚本的完整流水线

1. 需求输入:  
   "为RESTful API编写Pytest测试脚本,覆盖GET/POST/PUT/DELETE方法,包含认证头和参数化数据驱动"  

2. AI输出:  
   - 生成基础测试类  
   - 自动参数化测试数据(含Edge Cases)  
   - 生成HTML报告配置代码  

3. 验证机制:  
   - 对AI生成的脚本执行静态检查(Pylint)  
   - 运行脚本并验证通过率  
   - 对未覆盖分支追加Prompt:“增加对响应时间超300ms的报警测试”  

五、避坑

  • 不要迷信结果‌:始终对AI输出进行静态检查+动态验证
  • ‌版本控制Prompt‌:像管理测试用例一样管理Prompt迭代
  • ‌防御性设计‌:在Prompt中预置过滤条件,例如:“若需求不明确,请要求用户澄清”

在AI时代,‌Prompt就是测试工程师的新型编程接口‌。掌握提示工程,意味着你可以:

将自然语言转化为精准的测试需求

构建自适应的测试资产生成流水线

️ 通过AI实现测试策略的动态防御

“不会写Prompt的测试工程师,就像只会用记事本写代码的程序员”——‌ 这句话正在成为现实。

推荐阅读

软件测试/测试开发丨常见面试题与流程篇(附答案)

软件测试/测试开发丨学习笔记之Allure2测试报告

软件测试/测试开发丨Pytest测试用例生命周期管理-Fixture

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

软件测试/测试开发丨学习笔记之列表、元组、集合

软件测试/测试开发丨Python常用数据结构-学习笔记

软件测试/测试开发丨Python控制流-判断&循环

软件测试/测试开发丨Python学习笔记之内置库科学计算、日期与时间处理

软件测试/测试开发丨面试题之软素质与反问面试官篇(附答案)

软件测试/测试开发丨iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践