测试想法改写
<default_to_action>
转换测试想法时:
- 使用正则表达式检测所有「Verify X」模式
- 确定适当的动作动词类别
- 转换为「[ACTION] [trigger]; [OBSERVE] [result]」模式
- 保留所有元数据(ID、优先级、自动化类型)
- 验证不再存在任何「Verify」模式
- 以与输入相同的格式输出
成功标准: /<td>Verify\s/gi 返回 0 个匹配项
</default_to_action>
快速参考卡
转换模式
[ACTION VERB] [specific trigger]; [OUTCOME VERB] [observable result]
动作动词速查
| 类别 | 动词 | 使用场景 |
|---|
| 交互 | Click、Type、Submit、Navigate、Scroll | UI 操作 |
| 触发 | Send、Inject、Force、Simulate、Load | API/系统操作 |
| 测量 | Measure、Time、Count、Profile | 性能检查 |
| 状态 | Set、Configure、Enable、Disable、Toggle | 设置操作 |
| 观察 | Confirm、Assert、Check、Observe | 结果验证 |
常见转换
| 转换前 | 转换后 |
|---|
| 验证登录有效 | 提交有效凭据;确认已创建会话 |
| 验证 API 返回 200 | 发送 GET 请求;断言在 500ms 内收到 200 响应 |
| 验证错误是否显示 | 触发验证错误;观察错误消息 |
| 验证数据是否保存 | 插入记录;查询数据库;确认字段匹配 |
| 验证性能 | 执行 100 个请求;测量 p99 < 200ms |
转换规则
模式检测
/<td>Verify\s/gi // HTML table cells
/^Verify\s/gim // Line starts
/"Verify\s[^"]+"/gi // Quoted strings
转换类别
API/网络测试
| 输入模式 | 输出模式 |
|---|
| 验证 API 是否返回 X | 发送 [METHOD] 请求;断言响应状态为 [STATUS] |
| 验证端点是否接受 Y | 将 [PAYLOAD] 发布到端点;确认收到 [RESPONSE] |
| 验证 Webhook 是否触发 | 触发 [EVENT];观察是否收到 Webhook |
UI/UX 测试
| 输入模式 | 输出模式 |
|---|
| 验证按钮是否有效 | 点击 [BUTTON];观察 [EFFECT] |
| 验证表单是否提交 | 填写 [FIELDS];提交表单;确认 [RESULT] |
| 验证导航是否有效 | 点击 [LINK];观察 [PAGE] 是否加载 |
数据测试
| 输入模式 | 输出模式 |
|---|
| 验证数据是否保存 | 插入 [RECORD];查询;确认 [MATCH] |
| 验证校验是否有效 | 输入 [INVALID];观察 [ERROR] |
| 验证格式是否被接受 | 提交 [FORMAT];确认已处理 [PROCESSED] |
性能测试
| 输入模式 | 输出模式 |
|---|
| 验证性能是否良好 | 执行 [LOAD];测量 [METRIC] < [THRESHOLD] |
| 验证可扩展性 | 将 [USERS] 增加至 [N];监控 [RESOURCE] |
| 验证超时是否有效 | 注入 [DELAY];确认在 [TIME] 后超时 |
动作动词参考
交互动词
| 动词 | 使用场景 | 示例 |
|---|
| Click | 与 UI 元素交互 | 点击「Submit」按钮 |
| Type | 输入文本 | 输入「[email protected]」 |
| Submit | 完成表单 | 提交注册表单 |
| Navigate | 切换页面 | 导航至 /settings |
| Scroll | 移动视口 | 滚动至页面底部 |
| Drag | 拖放 | 将文件拖至上传区域 |
| Hover | 移动鼠标位置 | 将鼠标悬停在工具提示触发器上 |
| Select | 下拉菜单/复选框 | 从角色下拉菜单中选择「Admin」 |
触发动词
| 动词 | 使用场景 | 示例 |
|---|
| Send | HTTP 请求 | 向 /api/orders 发送 POST 请求 |
| Inject | 故障注入 | 注入 500ms 延迟 |
| Force | 状态操控 | 强制启用离线模式 |
| Simulate | 生成事件 | 模拟设备旋转 |
| Load | 加载资源 | 加载 50MB 测试文件 |
| Execute | 脚本/命令 | 执行数据库迁移 |
| Invoke | 函数/Webhook | 调用付款回调 |
| Trigger | 触发事件 | 触发计划任务 |
测量类动词
| 动词 | 适用场景 | 示例 |
|---|
| Measure | 定量检查 | Measure response time |
| Time | 时长跟踪 | Time page render |
| Count | 数量检查 | Count search results |
| Profile | 资源分析 | Profile CPU usage |
| Benchmark | 比较 | Benchmark against v1.0 |
| Capture | 状态记录 | Capture network traffic |
| Monitor | 持续观察 | Monitor memory for 5 minutes |
观察类动词
| 动词 | 适用场景 | 示例 |
|---|
| Confirm | 布尔值检查 | Confirm user is logged in |
| Assert | 值比较 | Assert total equals $99.99 |
| Check | 状态验证 | Check cart has 3 items |
| Observe | 行为观察 | Observe spinner appears |
| Validate | 规则合规性 | Validate email format |
| Expect | 预期结果 | Expect redirect to /home |
| Verify(避免使用) | 使用替代词 | Use confirm/assert instead |
质量验证
转换前检查
- 统计输入中“Verify”模式的数量
- 确定每个模式的上下文
- 映射到适当的动作动词类别
转换后检查
- 正则表达式验证:“Verify”匹配项为零
- 每个测试思路都以动作动词开头
- 每项测试都包含可观察的结果
- 所有元数据均保持不变
验证正则表达式
// Must return 0 matches for success
const verifyPattern = /<td>Verify\s/gi;
const matches = content.match(verifyPattern);
if (matches && matches.length > 0) {
throw new Error(`${matches.length} "Verify" patterns remain`);
}
Agent 集成
// Single file transformation
await Task("Rewrite Test Ideas", {
inputFile: "assessment.html",
outputFile: "assessment-rewritten.html",
preserveFormatting: true
}, "qe-test-idea-rewriter");
// Batch transformation
await Task("Batch Rewrite", {
inputDir: "./assessments/",
outputDir: "./assessments-clean/",
pattern: "*.html"
}, "qe-test-idea-rewriter");
记忆命名空间
aqe/rewriting/
├── transformations/* - Transformation logs
├── patterns/* - Learned patterns
└── vocabulary/* - Custom verb mappings
相关技能
请记住
每个测试思路都应该可执行。“Verify X works”没有说明该如何测试。“[Action] X;[Observe] Y”则提供了明确的步骤和预期结果。将被动描述转换为主动且可观察的测试。