Skip to content

Commit a15a9b8

Browse files
committed
提示词补强:测试设计黄金8规则(功能全覆盖+操作断言配对+业务流程串联+状态变化+异常边界+弹窗验证)
1 parent 184d33e commit a15a9b8

2 files changed

Lines changed: 59 additions & 7 deletions

File tree

extension/src/sidebarProvider.ts

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -430,13 +430,47 @@ export class SidebarProvider implements vscode.WebviewViewProvider {
430430
}
431431

432432
private async _handleCopyBlueprintPrompt(platform: string): Promise<void> {
433-
const commonRules = `要求:
434-
1. 分析源代码中所有可操作 UI 元素(按钮/表单/导航/弹窗)
435-
2. 选择器使用代码中的真实 id(如 #login-btn)或稳定 class,禁止用 div:nth-child(3) 这类脆弱选择器
436-
3. 每个功能页面对应一个场景,覆盖正常流程和异常场景(空表单提交、错误输入)
437-
4. 每个 fill 操作后必须有 assert_text 或 screenshot 验证
438-
5. 每次导航后必须有断言验证页面已正确加载
439-
6. 如果应用需要命令行启动(如 npm start、python app.py),必须填写 start_command 字段;纯HTML静态应用留空
433+
const commonRules = `══════ 测试设计黄金规则(必须严格遵守) ══════
434+
435+
【规则1:功能全覆盖】
436+
- 先通读全部源代码,列出所有功能点(每个按钮、每个表单、每个Tab、每个弹窗、每个下拉框)
437+
- 每个功能点必须至少有一个测试场景,不能遗漏任何可操作的UI元素
438+
- 自检清单:数一数代码里有多少个按钮/表单/页面,蓝本里是否每个都覆盖到了
439+
440+
【规则2:操作→断言配对(最核心)】
441+
- 每一个操作(click/fill/select)后面必须跟一个断言(assert_text/assert_visible/screenshot)验证结果
442+
- 错误示范:click登录按钮 → 结束(没验证是否登录成功)
443+
- 正确示范:click登录按钮 → assert_text验证"欢迎回来"或验证用户名显示正确
444+
- 原则:没有断言的操作等于没测
445+
446+
【规则3:业务流程端到端串联】
447+
- 除了单点功能测试,必须有完整业务流程场景:
448+
例:注册→登录→浏览商品→加入购物车→填写地址→提交订单→查看订单详情
449+
- 每个流程场景至少串联3个以上页面/功能
450+
451+
【规则4:状态变化验证】
452+
- 操作前先读取当前状态值,操作后再读取,对比变化是否符合预期
453+
- 例:加入购物车前读购物车数量=0,加入后断言数量=1
454+
- 例:删除商品前列表有3条,删除后断言列表有2条
455+
456+
【规则5:异常和边界测试】
457+
- 每个表单必须测试:空提交、超长输入、特殊字符、格式错误
458+
- 每个需要权限的操作必须测试:未登录访问、无权限操作
459+
- 验证错误提示消息是否正确显示
460+
461+
【规则6:弹窗和提示验证】
462+
- 操作后出现的成功提示、错误提示、确认弹窗,必须用断言验证内容
463+
- 例:提交订单后验证"下单成功"提示
464+
- 例:删除操作后验证确认弹窗文字
465+
466+
【规则7:选择器规范】
467+
- 使用代码中的真实 id(如 #login-btn)或稳定 class
468+
- 禁止用 div:nth-child(3) 这类脆弱选择器
469+
- 必须先阅读源代码确认选择器存在
470+
471+
【规则8:启动命令】
472+
- 如果应用需要命令行启动(npm start、python app.py),必须填写 start_command 字段
473+
- 纯HTML静态应用留空
440474
441475
重要提醒:以后修改代码时,主动审视并更新对应模块的蓝本,无需用户提醒!`;
442476

开发备忘录.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,3 +1125,21 @@ HTTP服务器已就绪(0.5秒)
11251125
- **蓝本清理**:每平台保留最复杂一本(Web/小程序/桌面/Android/iOS各1本)
11261126
- **项目规划更新**:v11.0规划(桌面实测→Android实测→商业化→API开放→发布)
11271127

1128+
#### 插件增强(2026-03-08 下午)
1129+
- **扫描排除test_fixtures**`findFiles`排除模式加入`test_fixtures/``.venv/`
1130+
- **提示词按平台区分**:option加`data-platform`属性,按钮读取platform后生成对应提示词
1131+
- Web:模块拆分+CSS选择器+start_command
1132+
- 小程序:7条铁律+15种action+evaluate用IIFE+无document+reset_state
1133+
- Android:手机浏览器CSS / 原生App用resource-id
1134+
- 桌面:4种选择器(name/automationid/class/point)
1135+
- **提示词补强"测试设计黄金8规则"**
1136+
1. 功能全覆盖(数按钮数对蓝本数)
1137+
2. 操作→断言配对(没有断言的操作等于没测)
1138+
3. 业务流程端到端串联(≥3个页面/功能)
1139+
4. 状态变化验证(操作前后对比)
1140+
5. 异常和边界测试(空提交/超长/特殊字符)
1141+
6. 弹窗和提示验证(成功/错误/确认消息)
1142+
7. 选择器规范(真实id/class,禁脆弱选择器)
1143+
8. 启动命令(start_command字段)
1144+
- **Web测试失败根因**:test_fixtures/buggy_shop的base_url=localhost:8901没启动 → Connection closed。排除后不再出现
1145+

0 commit comments

Comments
 (0)