名称: 测试想法重写
描述: “将被动的’验证X’测试描述转换为主动、可观察的测试动作。当测试想法缺乏特异性、使用模糊语言或质量验证失败时使用。转换为动作动词格式,以获得更清晰、更可测试的描述。”
类别: 测试设计
优先级: 中等
令牌估计: 800
代理: [qe-test-idea-rewriter]
实施状态: 优化
优化版本: 1.0
最后优化: 2026-01-17
依赖: []
快速参考卡: true
标签: [测试想法, 重写, 动作动词, 质量, 转换]
测试想法重写
<默认到动作>
当转换测试想法时:
- 通过正则表达式检测所有"验证X"模式
- 识别适当的动作动词类别
- 转换为"[动作] [触发器]; [观察] [结果]"模式
- 保留所有元数据(ID、优先级、自动化类型)
- 验证零"验证"模式剩余
- 以相同格式输出
成功标准: /<td>Verify\s/gi 返回0个匹配
</默认到动作>
快速参考卡
转换模式
[动作动词] [特定触发器]; [结果动词] [可观察结果]
动作动词快速参考
| 类别 |
动词 |
使用时机 |
| 交互 |
点击、输入、提交、导航、滚动 |
UI动作 |
| 触发 |
发送、注入、强制、模拟、加载 |
API/系统动作 |
| 测量 |
测量、计时、计数、分析 |
性能检查 |
| 状态 |
设置、配置、启用、禁用、切换 |
设置动作 |
| 观察 |
确认、断言、检查、观察 |
结果验证 |
常见转换
| 之前 |
之后 |
| 验证登录有效 |
提交有效凭据;确认会话创建 |
| 验证API返回200 |
发送GET请求;断言200响应在500毫秒内 |
| 验证错误显示 |
触发验证错误;观察错误消息 |
| 验证数据保存 |
插入记录;查询数据库;确认字段匹配 |
| 验证性能 |
执行100个请求;测量p99 < 200毫秒 |
转换规则
模式检测
/<td>Verify\s/gi // HTML表格单元格
/^Verify\s/gim // 行开始
/"Verify\s[^"]+"/gi // 引号字符串
转换类别
API/网络测试
| 输入模式 |
输出模式 |
| 验证API返回X |
发送[方法]请求;断言[状态]响应 |
| 验证端点接受Y |
发布[负载]到端点;确认[响应] |
| 验证webhook触发 |
触发[事件];观察webhook接收 |
UI/UX测试
| 输入模式 |
输出模式 |
| 验证按钮有效 |
点击[按钮];观察[效果] |
| 验证表单提交 |
填充[字段];提交表单;确认[结果] |
| 验证导航有效 |
点击[链接];观察[页面]加载 |
数据测试
| 输入模式 |
输出模式 |
| 验证数据保存 |
插入[记录];查询;确认[匹配] |
| 验证验证有效 |
输入[无效];观察[错误] |
| 验证格式接受 |
提交[格式];确认[处理] |
性能测试
| 输入模式 |
输出模式 |
| 验证性能良好 |
执行[负载];测量[指标] < [阈值] |
| 验证可扩展性 |
增加[用户]到[N];监控[资源] |
| 验证超时有效 |
注入[延迟];确认超时在[时间]后 |
动作动词参考
交互动词
| 动词 |
使用时机 |
示例 |
| 点击 |
UI元素交互 |
点击"提交"按钮 |
| 输入 |
文本输入 |
输入"user@example.com" |
| 提交 |
表单完成 |
提交注册表单 |
| 导航 |
页面更改 |
导航到 /settings |
| 滚动 |
视口移动 |
滚动到页面底部 |
| 拖动 |
拖放 |
拖动文件到上传区域 |
| 悬停 |
鼠标定位 |
悬停在工具提示触发上 |
| 选择 |
下拉/复选框 |
从角色下拉选择"管理员" |
触发动词
| 动词 |
使用时机 |
示例 |
| 发送 |
HTTP请求 |
发送POST到 /api/orders |
| 注入 |
故障注入 |
注入500毫秒延迟 |
| 强制 |
状态操作 |
强制离线模式 |
| 模拟 |
事件生成 |
模拟设备旋转 |
| 加载 |
资源加载 |
加载50MB测试文件 |
| 执行 |
脚本/命令 |
执行数据库迁移 |
| 调用 |
函数/webhook |
调用支付回调 |
| 触发 |
事件触发 |
触发计划任务 |
测量动词
| 动词 |
使用时机 |
示例 |
| 测量 |
定量检查 |
测量响应时间 |
| 计时 |
持续时间跟踪 |
计时页面渲染 |
| 计数 |
数量检查 |
计数搜索结果 |
| 分析 |
资源分析 |
分析CPU使用率 |
| 基准 |
比较 |
基准对v1.0 |
| 捕获 |
状态记录 |
捕获网络流量 |
| 监控 |
持续观察 |
监控内存5分钟 |
观察动词
| 动词 |
使用时机 |
示例 |
| 确认 |
布尔检查 |
确认用户已登录 |
| 断言 |
值比较 |
断言总额等于$99.99 |
| 检查 |
状态验证 |
检查购物车有3个商品 |
| 观察 |
行为观察 |
观察旋转器出现 |
| 验证 |
规则合规 |
验证电子邮件格式 |
| 期望 |
预测结果 |
期望重定向到 /home |
| 验证(避免) |
使用替代词 |
使用确认/断言替代 |
质量验证
转换前检查
- 统计输入中的"验证"模式
- 识别每个模式的上下文
- 映射到适当的动作动词类别
转换后检查
- 正则验证:零"验证"匹配
- 每个测试想法以动作动词开始
- 每个测试包括可观察结果
- 所有元数据保留不变
验证正则表达式
// 必须返回0个匹配以成功
const verifyPattern = /<td>Verify\s/gi;
const matches = content.match(verifyPattern);
if (matches && matches.length > 0) {
throw new Error(`${matches.length} "Verify" 模式剩余`);
}
代理集成
// 单文件转换
await Task("重写测试想法", {
inputFile: "assessment.html",
outputFile: "assessment-rewritten.html",
preserveFormatting: true
}, "qe-test-idea-rewriter");
// 批量转换
await Task("批量重写", {
inputDir: "./assessments/",
outputDir: "./assessments-clean/",
pattern: "*.html"
}, "qe-test-idea-rewriter");
内存命名空间
aqe/重写/
├── 转换/* - 转换日志
├── 模式/* - 学习到的模式
└── 词汇/* - 自定义动词映射
相关技能
记住
每个测试想法应该是可操作的。 “验证X有效"没有告诉你如何测试。”[动作] X; [观察] Y"给出清晰步骤和预期结果。将被动描述转换为主动、可观察的测试。