乐于分享
好东西不私藏

在软件测试里,LLM 能干什么?

在软件测试里,LLM 能干什么?
LLM 不是替代测试工程师的洪水猛兽,而是测试工程师的智能辅助工具

它不能帮你做测试设计决策,但它能帮你:

  • 省时间
  • 少写重复代码
  • 少做重复劳动

简单说:能交给AI写的,就交给AI;需要人判断的,人来。

一、自动生成测试用例:需求 → 用例

这是最多人关注的场景。

传统做法:读需求文档 → 手工写用例 → 整理到Excel

LLM做法

请根据以下需求,生成完整的测试用例

需求描述:
用户登录功能
1. 支持手机号+验证码登录
2. 支持账号密码登录
3. 连续输错5次密码锁定账号
4. 验证码有效期5分钟

要求:
- 包含:用例编号、测试模块、前置条件、测试步骤、测试数据、预期结果、优先级
- 覆盖:正常场景、异常场景、边界值场景

LLM 会直接输出一版完整的测试用例,涵盖:

  • 正常登录(验证码登录、密码登录)
  • 异常场景(手机号格式错误、验证码错误、密码错误)
  • 边界值(连续输错4次、5次、6次)
  • 权限场景(token过期、异地登录)

实测效果:一个登录模块的用例,从2小时缩短到5分钟。

二、自动写自动化脚本:Python、Selenium、Playwright、接口

这波操作直接解放双手。

1. Web 自动化脚本(Selenium/Playwright)

用 Python + Playwright 写一个自动化测试脚本:
测试场景:搜索功能
1. 打开百度首页
2. 输入关键词"软件测试"
3. 点击搜索按钮
4. 验证搜索结果页面标题包含"软件测试"
5. 截图保存结果

LLM 直接输出完整脚本:

from playwright.sync_api import sync_playwright

def test_search():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()

        page.goto("https://www.baidu.com")
        page.fill("#kw", "软件测试")
        page.click("#su")

        page.wait_for_load_state("networkidle")
        assert "软件测试" in page.title()
        page.screenshot("search_result.png")

        browser.close()

2. 接口自动化脚本

用 Python + requests + pytest 写接口测试脚本:
测试目标:用户登录接口
- URL: http://api.example.com/login
- 方法: POST
- 参数: {"username": "test", "password": "123456"}
- 期望: 返回 token 和 user_id

3. 断言规则自动生成

LLM 还能根据响应结构自动生成断言:

# 断言响应状态
assert response.status_code == 200

# 断言必填字段
assert "token" in response.json()
assert "user_id" in response.json()

# 断言数据类型
assert isinstance(response.json()["token"], str)
assert isinstance(response.json()["user"], dict)

三、分析日志、报错、定位问题

这简直是调试救星。

场景1:分析报错日志

报错信息:
java.lang.NullPointerException
    at com.example.service.UserService.getUser(UserService.java:45)
    at com.example.controller.UserController.getUserById(UserController.java:23)

直接丢给 LLM:

请分析这个Java报错:
1. 报错原因是什么?
2. 可能出现在哪一行?
3. 如何修复?

LLM 会告诉你:

  • NullPointerException 通常是因为对象为 null 时调用了方法
  • UserService.java:45 行可能获取的用户对象为 null
  • 需要加空值判断,或检查数据库查询逻辑

场景2:分析接口返回异常

接口返回:
{"code": 500, "message": "System error", "data": null}

LLM 分析:

  • 500 是服务端错误
  • 可能是数据库超时、服务异常、业务逻辑报错
  • 需要查看服务端日志定位具体原因

场景3:日志分析

把大段日志丢给 LLM:

请分析以下日志,找出:
1. 异常堆栈
2. 可能的根因
3. 建议的排查方向

LLM 会提取关键信息,过滤噪音,给你清晰的排查思路。

四、生成测试数据、造 Mock 数据

这是最容易被忽视但巨好用的功能。

1. 生成正向测试数据

生成10条用户注册测试数据,包含:
- 用户名(3-20位字母数字)
- 邮箱(有效格式)
- 手机号(11位数字,以13/15/18开头)
- 密码(6-20位)

2. 生成异常测试数据

生成边界值测试数据:
- 空字符串
- 超长字符串(200字符)
- 特殊字符(<>{}"/')
- HTML标签
- SQL注入尝试

3. Mock 数据生成

用 Python 的 faker 库,生成100条用户数据,包含:
姓名、邮箱、手机号、地址、公司、身份证号

五、写测试计划、测试总结、缺陷描述

文书工作交给 LLM,测试工程师专注核心。

1. 测试计划

请根据以下信息,生成测试计划:

项目:电商APP v2.0
测试范围:用户模块(注册、登录、个人信息)
测试类型:功能测试、兼容性测试
测试周期:2024.1.1 - 2024.1.7
测试资源:2人

2. 测试总结

请根据以下测试结果,生成测试总结:

- 执行用例数:150
- 通过:145
- 失败:5
- 阻塞:0
- 缺陷分布:UI问题2个、功能问题3个

3. 缺陷描述(Bug Report)

请优化以下缺陷描述,使其更规范:

缺陷描述:
系统出问题了,用户登录不了,提示错误

LLM 优化后:

【缺陷标题】
登录接口返回500错误,导致用户无法登录

【缺陷描述】
用户在客户端输入正确的手机号和密码后,点击登录按钮,接口返回500 Internal Server Error

【复现步骤】
1. 打开APP
2. 输入手机号 13800001001
3. 输入密码 Test123456
4. 点击登录按钮

【预期结果】
登录成功,跳转至首页

【实际结果】
返回500错误,提示"系统错误,请稍后重试"

【环境】
APP版本:v2.0.1
系统:iOS 16.3
网络:WiFi

六、接口自动化、回归测试辅助

这才是真正的效率放大器。

1. 接口用例批量生成

根据以下Swagger接口定义,生成完整的接口测试用例:

GET /api/user/{id} - 获取用户信息
- 参数:id(必填,整数)
- 响应:{id, name, email, phone, status}

POST /api/order - 创建订单
- 参数:{user_id, product_id, quantity, address}
- 响应:{order_id, status, total_price}

LLM 一次性生成:

  • 正常场景用例
  • 参数缺失用例
  • 参数类型错误用例
  • 边界值用例
  • 异常业务场景用例

2. 回归测试辅助

这是上次回归测试的用例清单:
[粘贴用例]

本次新增功能:用户个人资料编辑
请帮我:
1. 筛选出可能受影响的用例
2. 生成新增功能的测试用例
3. 评估测试风险

3. 测试数据准备

为接口测试准备测试数据:
1. 创建10个有效用户
2. 创建5个订单(不同状态:待支付、已支付、已发货、已完成、已取消)
3. 每个订单关联不同用户

七、实战提示词模板库

我把高频场景的提示词整理出来,直接抄:

1. 生成测试用例

请根据以下需求,生成测试用例:
[需求内容]

要求:
- 覆盖正常、异常、边界值
- 包含:用例编号、模块、前置条件、步骤、测试数据、预期结果、优先级
- 用Excel表格格式输出

2. 写自动化脚本

用 [Python/Java/Go] + [框架名] 写自动化测试:
[测试场景描述]

要求:
- 包含setup和teardown
- 合理使用断言
- 添加日志输出
- 符合代码规范

3. 分析报错

请分析以下报错信息:
[报错日志/堆栈]

请给出:
1. 错误原因
2. 根因分析
3. 修复建议

4. 生成测试数据

生成[数量]条[类型]测试数据:
[字段要求]

要求:
- 正向数据+反向数据
- 包含边界值

5. 写缺陷报告

请优化以下缺陷描述:
[原始描述]

要求:
- 包含:标题、步骤、预期、实际、环境
- 描述清晰、可复现

写在最后

LLM 在测试领域的价值,不是替代测试工程师,而是放大测试工程师的能力

它擅长:

  • ✅ 重复性工作(写脚本、改用例、造数据)
  • ✅ 信息整理(分析日志、写文档)
  • ✅ 快速生成初稿

它不擅长:

  • ❌ 测试策略设计
  • ❌ 业务逻辑理解
  • ❌ 复杂场景判断

最好的使用方式:AI生成初稿 → 人工审核优化 → 最终使用。

把省下来的时间,用在更核心的测试设计和缺陷挖掘上,它不香吗?

你在测试工作中用 LLM 做什么?有什么好用场景评论区聊聊~