在软件测试中,测试用例设计方法的选择和实施是确保软件质量的重要步骤。测试工程师经常需要根据不同的测试场景、参数维度和业务需求,设计出覆盖率高且有效的测试用例。然而,设计测试用例并非易事,特别是在面对复杂的业务逻辑时。
为了帮助测试工程师高效生成测试用例提示词,本文介绍了一款 智能提示词生成器,结合常见的测试设计方法,能够快速生成结构化的测试用例提示词,便于测试工程师使用大模型(例如国产之光 deepseek-r1)完成具体用例的生成。
以下是详细的工具功能解析和代码实现。
下面,我们将分模块解析代码功能,帮助测试工程师理解生成器的设计逻辑。
parameters = ""
if isinstance(params, dict) and len(params) > 0:
# 显式参数模式
parameters = "参数维度:\n" + "\n".join(
[f"▸ {k}:{', '.join(v)}" for k, v in params.items()]
)
elif isinstance(params, list):
# 需求文档类型提示
doc_type = params[0] if params else "通用需求"
parameters = f"需求文档类型:{doc_type}\n" + \
"请提取以下要素:\n" + \
"1. 核心业务实体及其属性\n" + \
"2. 关键业务流程步骤\n" + \
"3. 状态转换规则\n" + \
"4. 输入验证规则\n" + \
"5. 错误处理策略"
else:
# 默认需求分析模式
parameters = "需求分析指南:\n" + \
"1. 识别功能边界(系统做什么/不做什么)\n" + \
"2. 提取业务规则(计算规则、验证规则)\n" + \
"3. 定义用户角色及其权限\n" + \
"4. 梳理关键业务流程(正常流、备选流、异常流)\n" + \
"5. 标记敏感操作(审计日志、权限校验点)"
输入以下参数:
params = {
"支付方式": ["银联支付", "支付宝支付", "微信支付"],
"金额范围": ["<100", "100-1000", ">1000"],
"货币类型": ["CNY", "USD"]
}
生成的内容:
参数维度:
▸ 支付方式:银联支付, 支付宝支付, 微信支付
▸ 金额范围:<100, 100-1000, >1000
▸ 货币类型:CNY, USD
method_library = {
"正交分析法": {
"desc": "使用正交表生成参数组合,覆盖所有参数对的交互组合",
"steps": ["构建正交表", "优化组合数量", "验证两两覆盖"],
"coverage": "参数对组合覆盖率 ≥95%"
},
"边界值分析": {
"desc": "针对数值型参数测试极值:最小值、略高于最小值、正常值、略低于最大值、最大值",
"steps": ["识别边界参数", "生成六点值(min-1,min,min+1,norm,max-1,max)", "处理无效类"],
"coverage": "边界条件覆盖率100%"
},
"等价类划分": {
"desc": "将输入划分为有效/无效类,每个类选取代表值测试",
"steps": ["定义有效等价类", "定义无效等价类", "生成代表值"],
"coverage": "每个等价类至少1个用例"
},
"状态转换": {
"desc": "基于状态机模型测试合法/非法转换",
"steps": ["绘制状态图", "覆盖所有合法转换", "测试非法转换"],
"coverage": "状态转换覆盖率100%"
},
"决策表": {
"desc": "条件组合的全覆盖测试(适合复杂业务规则)",
"steps": ["列出所有条件桩", "构建真值表", "合并相似项"],
"coverage": "条件组合覆盖率100%"
},
"错误推测": {
"desc": "基于经验测试易错点:异常输入、中断测试、并发操作",
"steps": ["列出历史缺陷", "分析脆弱模块", "设计非常规操作"],
"coverage": "补充覆盖边界外的5%"
},
"场景法": {
"desc": "模拟用户旅程测试端到端流程",
"steps": ["识别主成功场景", "定义扩展场景", "组合异常路径"],
"coverage": "主流程覆盖率100%"
},
"因果图": {
"desc": "分析输入条件的逻辑关系生成用例",
"steps": ["识别原因和结果", "构建因果图", "生成判定表"],
"coverage": "因果逻辑覆盖率100%"
}
}
这个模块内置了八种常用的测试用例设计方法,每种方法包含:
prompt = f"""Role: 测试用例设计专家
Rules:
设计目标:
通过{method}实现:
{selected_method['desc']}
关键步骤:
{chr(10).join([f'{i + 1}. {step}' for i, step in enumerate(selected_method['steps'])])}
{parameters}
输出要求:
1. 格式:结构化JSON
2. 字段:
- 用例编号:<模块缩写>-<3位序号>
- 用例标题:<测试目标> [正例/反例]
- 前置条件:初始化状态描述
- 测试数据:参数值的具体组合
- 操作步骤:带编号的明确步骤
- 预期结果:可验证的断言
- 优先级:P0(冒烟)/P1(核心)/P2(次要)
3. 示例:
{generate_example(method)}
质量标准:
- {selected_method['coverage']}
- 正向场景用例占比60%
- 异常场景用例占比30%
- 边界场景用例占比10%
生成步骤:
1. 参数建模 → 2. 场景分析 → 3. 用例生成 → 4. 交叉校验"""
假设测试方法为 正交分析法,输入参数维度为:
支付方式:银联支付, 支付宝支付, 微信支付
金额范围:<100, 100-1000, >1000
货币类型:CNY, USD
生成内容:
Role: 测试用例设计专家
Rules:
设计目标:
通过正交分析法实现:
使用正交表生成参数组合,覆盖所有参数对的交互组合
关键步骤:
1. 构建正交表
2. 优化组合数量
3. 验证两两覆盖
参数维度:
▸ 支付方式:银联支付, 支付宝支付, 微信支付
▸ 金额范围:<100, 100-1000, >1000
▸ 货币类型:CNY, USD
输出要求:
1. 格式:结构化JSON
2. 字段:
- 用例编号:<模块缩写>-<3位序号>
- 用例标题:<测试目标> [正例/反例]
- 前置条件:初始化状态描述
- 测试数据:参数值的具体组合
- 操作步骤:带编号的明确步骤
- 预期结果:可验证的断言
- 优先级:P0(冒烟)/P1(核心)/P2(次要)
3. 示例:
...
以下是 generate_example 函数的完整实现,涵盖八种测试设计方法的示例用例:
def generate_example(method):
examples = {
"正交分析法": """[
{
"用例编号": "PAY-001",
"用例标题": "支付功能 [正例]",
"前置条件": "用户已登录,购物车内已有商品",
"测试数据": {
"支付方式": "支付宝支付",
"金额范围": "100-1000",
"货币类型": "CNY"
},
"操作步骤": [
"1. 打开购物车页面",
"2. 点击结算按钮",
"3. 选择支付方式为支付宝支付",
"4. 确认支付金额为100-1000元人民币",
"5. 点击支付按钮"
],
"预期结果": "支付成功,页面显示支付完成信息,余额扣减正确",
"优先级": "P1"
}
]""",
# 示例略,其他方法类似补充
}
return examples.get(method, "此方法示例未实现")
这款 智能提示词生成器 集成了八种常见测试设计方法,为测试工程师提供了高效、结构化的用例生成方式。无论是参数化测试场景,还是需求文档分析,工具都能快速生成提示词,结合大模型完成实际用例设计。
赶快试用,提升测试效率,让测试更轻松!点击下方小卡片了解更多AI在测试领域的探索吧~~