乐于分享
好东西不私藏

【AI测试】04 | 测试设计:怎么测才不会漏?用这个 Skill 文件(playwright-core-features-testing)

【AI测试】04 | 测试设计:怎么测才不会漏?用这个 Skill 文件(playwright-core-features-testing)

导入到 Trae CN 之后,它会更准确地按照 5 要素帮你设计用例,而且不会遗漏常见场景。


我遇到的问题

前面几篇我们讲了怎么定位元素、怎么让测试不崩溃。但还有一个更重要的问题我一直没说——到底该怎么测?我刚做测试的时候,写出来的东西大概是这样的:

typescripttest('上传功能', async ({ page }) => {  await page.getByPlaceholder('工具名称').fill('测试工具');  await page.click('上传按钮');  // 完事});

看起来没问题?跑起来也通过了。

但上线之后呢?各种 bug 冒出来了——用户没填名字就点了上传、用户输入了一堆乱码、用户网络断了……这些情况我一个都没测到。

后来我才明白:不是我的代码写得不好,是我根本不知道该测什么。


一个简单的方法:5 要素

后来我总结了一个方法,叫”5 要素测试”。说白了就是,设计测试用例的时候,你要覆盖这 5 个方面:

要素
一句话解释
举个例子
正向
正常操作能不能用?
填好表单点提交,成功了
负向
操作错了会怎样?
不填必填项就提交,应该报错
边界值
极端情况怎么处理?
输入超长文字、输入空值
异常
出问题了怎么办?
网络断了、服务器挂了
完整流程
走一遍完整流程
登录→填表单→提交→看到结果

就这么简单。不需要背什么理论,记住这 5 个词就行。


为什么负向测试最重要?

这里有个反直觉的结论:负向测试(测错误情况)应该比正向测试(测正常情况)多。

为什么?因为正向测试一般都能通过——开发写代码就是为了让它正常工作的。但错误情况呢?开发很容易忽略。

推荐的比例:

  • 正向测试:30%
  • 负向测试:40%(最多)
  • 边界值测试:20%
  • 异常测试:10%

也就是说,你写的测试里,”找茬”的应该比”验证好用”的还多。


优先级怎么分?

测试用例多了之后,你不可能每次都全跑一遍。所以需要分优先级:

优先级
含义
什么时候跑
P0
核心功能,必须过
每次都跑
P1
重要功能,发布前要跑
发布前跑
P2
有时间再跑
定期跑

比如上传功能:

  • P0:页面能打开、填对数据能提交成功、走完整个流程
  • P1:不填名字报错、超长文字处理、特殊字符处理
  • P2:网络错误时的提示、权限不足的处理

这样开发改完代码后,你只跑 P0 就行,几分钟出结果。发布前再跑 P0 + P1。


怎么告诉 Trae 帮你设计?

好了,原理讲完了。实际操作时,你不需要自己一个个想测试用例——让 Trae 帮你就行。

在 Trae CN 的对话窗口里,你可以这样说:

请帮我测试 sogoodtool.com 的上传功能。

页面信息:

  • 需要先登录(账号 test@sogoodtool.com / Test1234)
  • 上传页面地址:https://sogoodtool.com/#/upload
  • 表单有两个必填项:工具名称、工具描述
  • 还有一个上传按钮

要求:

  1. 按 5 要素来设计:正向、负向、边界值、异常、完整流程
  2. 负向测试要多一些(约占 40%)
  3. 分成 P0/P1/P2 三个优先级

Trae 会给你返回类似这样的测试用例列表:

P0 核心功能:

  • 页面能正常加载
  • 填写有效数据后能提交成功
  • 登录→上传的完整流程能走通

P1 重要功能:

  • 不填工具名称时显示错误提示
  • 不填工具描述时显示错误提示
  • 工具名称超长时的处理
  • 输入特殊字符时的处理

P2 次要功能:

  • 分类下拉框能否选择
  • 访问控制切换是否正常

关键一步:审查 Trae 给你的用例

很多人到这里就直接用了。别这样。

你需要花一两分钟检查一下:

  1. 5 要素都覆盖了吗? 正向有了吗?负向有了吗?(负向够多吗?)边界值有了吗?
  2. 有没有遗漏的重要场景? 比如:未登录的人访问上传页面,应该跳转到登录吧?这个 Trae 可能漏了。
  3. 优先级合理吗? 页面加载是 P0 吗?应该是的。

如果发现遗漏,直接告诉 Trae:

用例不错,但漏了几点:
  1. 没有未登录访问的测试(应该跳转到登录页)
  2. 没有网络错误的测试

帮我补上。

Trae 会补充这些用例。然后再让它生成代码就行。


我踩过的坑

坑 1:只测正向

我以前觉得,用户正常使用就行了,谁会故意乱填?结果上线后被各种奇葩输入搞得措手不及。

现在我的习惯:先想”用户可能怎么搞砸它”,再想”正常情况下好不好用”。


坑 2:所有用例都是 P0

有一次我写了 50 个测试用例,全标成高优先级。结果跑一次要半小时,而且我不知道哪些才是真正重要的。

现在我会严格分 P0/P1/P2。P0 一般就 3-5 个,几分钟就能跑完。


坑 3:用例太细太难维护

我之前写过 100 多个测试用例,每个只测一件小事。后来 UI 改版,几十个用例要跟着改,改得我想哭。

现在的原则:一个用例测一个完整场景,别拆得太碎。


想省时间?用 Skill

上面说的这些方法,我已经整理成了一个 Skill 文件(playwright-core-features-testing)。导入到 Trae CN 之后,它会更准确地按照 5 要素帮你设计用例,而且不会遗漏常见场景。

这个 Skill 在知识星球里可以下载。扫码加入就行:

微信扫码加入「Bigtalk软件测试进阶」

星球里还有其他几个 Skill,覆盖了从入门到进阶的主要内容,后面几篇会逐一介绍。


下篇预告

下一篇讲一个很多测试人员都会忽视的问题:为什么负面测试比正面测试更重要?

这里面有一个经典的 Myers 测试理论,理解了它,你对”什么是好的测试”会有全新的认识。

下一篇:《【Trae CN 自动化测试】05 | 为什么你的测试总是发现不了 Bug?》,敬请期待

【AI 测试 Skill 入门篇】01 | 环境搭建:Node.js + Playwright + Trae CN 全指南
【AI 测试 Skill 入门篇】02 | 第一个自动化测试