大数跨境

AI测试落地实战:4个场景案例详解(干货)

AI测试落地实战:4个场景案例详解(干货) 51Testing软件测试网
2026-10-20
3
导读:本文介绍AI大模型如何融入Web自动化测试,针对脚本易崩、造数繁琐、失败难定位等痛点,展示智能用例生成、脚本生成、数据构造和问题分析等场景,强调AI用于提效而非取代测试工程师,助力测试人员聚焦业务与质

0

1

为什么你的测试团队需要AI?






1.1 测试人员的三大烦恼



想象一下,你是一个测试工程师,每天面对这些场景:

  • 场景一:页面改版,脚本全崩

产品经理在群里说“按钮换个样式,更圆润一些”,你心里咯噔一下:昨天刚跑通的50个脚本,今天又得熬夜改定位器了。这已经是本月第三次因为UI微调而批量修改脚本了。


  • 场景二:造数据比测Bug还累

测试一个“满100减20”的优惠券功能,需要准备10种不同金额的订单、5种优惠券类型、3种用户等级。手动造数据要半天,写SQL更是心累,数据之间的关联关系经常搞错。


  • 场景三:失败用例查不出原因

凌晨CI跑挂了,报告只有一行“期望页面显示‘支付成功’,实际显示‘系统繁忙’”。你翻日志、查截图、问开发,折腾2小时才发现是测试环境的支付网关配置过期了,而测试脚本根本不会告诉你这个。


这些烦恼,本质上是因为传统自动化测试缺乏理解能力——它只会机械执行指令,无法理解页面变化背后的语义,无法构造复杂业务场景的数据,无法从错误中推理根因。




1.2 AI大模型能做什么?



AI大模型(如GPT-4、Claude)就像是一个“懂测试的实习生”——它读过海量代码和文档,能理解自然语言,还能进行一定程度的推理。以下是它在测试领域的实际能力:

测试活动

AI能做什么

打个比方

写用例

读懂需求文档,自动生成测试点和边界场景

像一位细心的人,读完需求就帮你列好测试清单,连边界都想到了

写脚本

理解自然语言,自动生成可执行的测试代码

像一位代码助手,你说“登录后检查用户名”,它就帮你写好完整的Playwright代码

造数据

根据业务规则,生成真实多样的测试数据

像一位数据专员,你要10个不同等级的用户,它分分钟给你,还带上手机号、地址等关联信息

查问题

分析失败日志,推断根因并给出修复建议

像一位老测试,看一眼日志就知道是数据过期还是代码变更,甚至告诉你该怎么改

修脚本

当元素定位失效时,尝试找到新的定位方式

像一位聪明的导航,原路不通时,自动帮你重新规划路线


关键认知:AI不是来取代测试工程师的,而是来“干掉”那些重复、繁琐、低价值的工作,让我们把时间花在探索性测试、场景设计、质量策略上。未来测试工程师的核心竞争力,将是“懂业务 + 会编程 + 善用AI”。



0

2

四个场景:AI如何融入测试工作流





场景1:智能用例生成——让AI读懂需求


痛点:人工写用例,费时又容易遗漏

一份10页的PRD,测试人员需要逐字阅读,提炼测试点,还要自己脑补边界情况。复杂模块(如优惠券、支付)往往需要2-3小时才能写出一份像样的用例清单,而且容易遗漏一些边界组合(比如“满减券+折扣券同时存在”这种场景)。


解决方案:AI读需求,人审质量

图1:AI智能用例生成流程


就像让一位资深测试阅读需求后写出用例草稿,AI负责“初稿”,人工负责“把关”。人工审核时发现遗漏的场景,可以反馈给AI,让它下次生成时更全面。经过2-3轮迭代,AI就能很好地掌握业务风格。


实操案例:优惠券功能

需求原文(电商优惠券功能,来自PRD):

用户下单后可使用优惠券,优惠券分为满减券(满100减20)和折扣券(85折)。系统自动选择最优优惠,不可叠加使用。订单金额小于门槛时不可使用。优惠券有有效期,过期不可用。


AI生成的测试用例(GPT-4输出,经过格式整理):

# 正常场景
场景:满减券满足门槛
假设订单金额为150元
并且用户有一张满100减20的满减券
当用户使用优惠券
那么订单金额变为130元

# 边界场景
场景:订单金额等于优惠门槛
假设订单金额为100元
并且用户有一张满100减20的满减券
当用户使用优惠券
那么订单金额变为80元

场景:订单金额刚好低于门槛
假设订单金额为99.99元
并且用户有一张满100减20的满减券
当用户使用优惠券
那么提示“不满足使用条件”

# 最优选择场景
场景:折扣券与满减券同时存在
假设订单金额为200元
并且用户有满减券(减20)和折扣券(85折)
当系统自动选择优惠
那么系统选择折扣券,订单金额变为170元

# 时间相关场景
场景:优惠券已过期
假设订单金额为150元
并且用户有一张满100减20的满减券,有效期昨天结束
当用户使用优惠券
那么 提示“优惠券已过期”


AI不仅生成了正常场景,还主动补充了边界场景(等于、低于门槛)、组合场景(两种券同时存在)、时间场景(过期)——这些都是人容易遗漏的,而AI通过训练数据中大量类似案例,天然具备这种“边界意识”。


落地细节:如何让AI生成更高质量的用例?

1、明确输入格式:不要直接把PRD全文丢给AI,而是先提取关键业务规则,以结构化方式输入:

请根据以下业务规则生成Gherkin格式的测试用例:
- 规则1:满减券满100减20
- 规则2:折扣券85折
- 规则3:不可叠加,自动选最优
- 规则4:金额小于门槛不可用
- 规则5:有效期限制


2、使用统一的输出模板:要求AI按照指定格式输出,方便后续导入测试管理工具(如Jira、TestRail):

请以以下格式输出:
【场景名称】
前置条件:...
操作步骤:...
预期结果:...


3、建立反馈循环:每次人工审核后,将补充的用例作为“正例”反馈给AI,通过few-shot学习提升质量。


效率数据

  • 传统方式:复杂模块用例设计平均4小时

  • AI辅助:AI生成30分钟 + 人工审核30分钟 = 1小时

  • 效率提升:75%



场景2:智能脚本生成——用自然语言写代码


痛点:写脚本费时,定位器容易失效

一个登录功能的脚本,看似简单,但要考虑等待、断言、异常处理,新手可能要写半小时。更头疼的是,定位器(如#username)一旦被开发改了,脚本就挂了。


解决方案:AI理解意图,自动生成稳定脚本

图2:自然语言到自动化脚本的转换


就像对助理说“帮我订个外卖”,AI自动完成下单、支付、跟踪。你说“测试登录”,AI自动生成包含定位、输入、点击、断言的完整代码。


实操案例:用GitHub Copilot生成登录脚本

你在代码中写下注释(支持自然语言):

// 测试登录功能:访问登录页,输入用户名test@example.com,密码123456,点击登录,验证跳转到首页并显示用户名


Copilot自动补全(按Tab接受):

test('登录功能', async ({ page }) => {

  await page.goto('https://example.com/login');

  await page.fill('#username', 'test@example.com');

  await page.fill('#password', '123456');

  await page.click('button[type="submit"]');

  await expect(page).toHaveURL('https://example.com/dashboard');

  await expect(page.locator('.user-name')).toHaveText('test@example.com');

});


AI不仅生成了代码,还自动添加了等待(fill内部已含等待)和断言,比很多新手写的还规范。


进阶:让AI推荐稳定的定位器

当元素属性经常变化时,告诉AI你的困境:

输入:需要定位“提交订单”按钮,id和class经常变,但页面有唯一文本“提交订单”,请推荐最稳定的定位方式


AI会输出:

// 推荐方案1:基于角色和名称(最稳定)

await page.getByRole('button', { name: '提交订单' }).click();

// 推荐方案2:基于文本(次稳定)

await page.getByText('提交订单').click();

// 不推荐:基于CSS选择器(易失效)

await page.locator('#submit-btn').click();


对比说明:

  • getByRole:不依赖具体属性,只要按钮的role和文本不变,就能稳定定位。

  • getByText:依赖文本,如果按钮文字改了(如“提交”变“确认”),就会失效。

  • CSS选择器:依赖id/class,最容易因UI改动而失效。


落地细节:如何让AI生成高质量的脚本?

  • 使用最新的Playwright API:在提示词中明确“请使用Playwright的最新API”,AI会优先使用getByRole、getByText等稳定定位器。

  • 添加等待策略:如果页面有异步加载,告诉AI“等待某个元素出现后再操作”,它会自动插入waitForSelector。

  • 异常处理:可以让AI生成重试逻辑,比如:

await expect(page.locator('.result')).toHaveText('成功', { timeout: 10000 });


效率数据:

  • 传统方式:编写10个测试用例的脚本平均8小时

  • AI辅助:AI生成2小时 + 人工调试1小时 = 3小时

  • 效率提升:62%



场景3:智能数据构造——告别手动造数

痛点:测试数据是“隐形成本”

一个支付功能测试,需要准备:

· 正常金额(100元、200元...)

· 边界金额(0.01元、100.00元、9999.99元)

· 异常金额(负数、非数字、超长)

· 特殊场景(组合支付、优惠券抵扣、分期支付)


手动构造这些数据,往往需要编写SQL脚本或调用API,还要保证数据之间的关联关系(如用户、订单、优惠券)。这个过程比写测试用例还花时间,而且容易遗漏边界。


解决方案:AI根据业务规则生成结构化数据

提示词模板(可以设计成可复用的):

请生成10条用户注册测试数据,包含以下字段:- 用户名:6-12位字母数字,不能以数字开头- 邮箱:有效格式,支持常见域名(@example.com, @test.com)- 手机号:中国大陆手机号,11位数字,以1开头

- 密码:至少8位,包含大小写字母和数字,允许特殊字符

同时生成3条边界数据:- 用户名超长(>12位)- 邮箱无@符号- 手机号包含字母


以JSON格式输出,分为normal和boundary两个数组。

AI输出(部分):

{  "normal": [    {      "username": "alice123",      "email": "alice@example.com",      "phone": "13812345678",      "password": "Alice@2025",      "description": "正常用户"    },    {      "username": "bob_test",      "email": "bob@test.com",      "phone": "15987654321",      "password": "Bob#1234",      "description": "正常用户"    }  ],  "boundary": [    {      "username": "thisisaverylongusernamethatexceeds12chars",      "email": "invalid",      "phone": "abcd12345",      "password": "short",      "description": "边界:用户名超长,邮箱无效,手机号含字母,密码过短"    }  ]}


AI不仅生成了正常数据,还自动准备了边界异常数据,覆盖了测试人员容易遗漏的场景。


集成到测试框架:数据驱动测试

// 使用AI生成的数据进行数据驱动测试import testData from './generated_data.json';test.describe('用户注册测试', () => {  for (const data of testData.normal) {    test(`注册用户: ${data.username}`, async ({ page }) => {      await page.goto('/register');      await page.fill('#username', data.username);      await page.fill('#email', data.email);      await page.fill('#phone', data.phone);      await page.fill('#password', data.password);      await page.click('button[type="submit"]');      await expect(page.locator('.success-message')).toBeVisible();    });  }    for (const data of testData.boundary) {    test(`边界测试: ${data.description}`, async ({ page }) => {      await page.goto('/register');      await page.fill('#username', data.username);      await page.fill('#email', data.email);      await page.click('button[type="submit"]');      // 预期错误提示      await expect(page.locator('.error-message')).toBeVisible();    });  }});


落地细节:如何让AI生成符合业务规则的数据?

  • 提示词要具体:不要只说“生成用户数据”,要明确字段类型、长度、格式、关联关系。

  • 使用few-shot示例:如果AI第一次生成的质量不好,可以给它几个正确的示例,让它模仿。

  • 后处理校验:对AI生成的数据进行二次校验,比如用正则验证手机号格式,过滤无效数据。

  • 数据工厂模式:将AI生成的数据保存为JSON文件,测试脚本动态读取。需要刷新数据时,重新运行AI生成脚本。


效率数据:

  • 传统方式:准备10组测试数据平均2小时(包括设计SQL、执行、清理)

  • AI辅助:编写提示词10分钟 + AI生成5分钟 = 15分钟

  • 效率提升:87%


......

本文节选自第九十二期《51测试天地》

原创文章

《智测未来:用AI大模型重塑Web自动化测试》

文章后续为大家详细讲解了:
AI模型怎么选、AI测试流水线与避坑指南等

    

想继续阅读全文

或查看更多《51测试天地》的原创文章

请点击下方 阅读原文或扫描二维码 查看

声明:本文为51Testing软件测试网 半夏 用户投稿内容,该用户投稿时已经承诺独立承担涉及知识产权的相关法律责任,并且已经向51Testing承诺此文并无抄袭内容。发布本文的用途仅仅为学习交流,不做任何商用,未经授权请勿转载,否则作者和51Testing有权追究责任。如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:editor@51testing.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

【声明】内容源于网络
0
0
51Testing软件测试网
博为峰51Testing软件测试网提供各种线上招聘、线上课程等网络服务,出版软件测试系列丛书及电子杂志,组织线上技术交流活动;同时还举办多种线下公益活动,如软件测试沙龙、软件测试专场招聘会等。
内容 3976
粉丝 0
51Testing软件测试网 博为峰51Testing软件测试网提供各种线上招聘、线上课程等网络服务,出版软件测试系列丛书及电子杂志,组织线上技术交流活动;同时还举办多种线下公益活动,如软件测试沙龙、软件测试专场招聘会等。
总阅读5.3k
粉丝0
内容4.0k