关于 qe-test-design-techniques
面向 QA 工程师和编码 Agent 的测试设计 Skill,介绍系统化设计测试用例的方法,以减少冗余。它根据场景选择边界检查、组合测试等技术。
主要功能
- 01边界值分析
- 02等价类划分
- 03业务规则决策表
- 04状态转换建模
- 05成对与全因子测试
适用场景
- 01设计数值输入边界测试
- 02覆盖多条件业务规则
- 03测试有状态工作流
- 04精简多参数组合测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill qe-test-design-techniques安装后在 Claude Code 中输入/qe-test-design-techniques确认已加载。
详细介绍
测试设计技术
<default_to_action> 系统化设计测试用例时:
- 应用边界值分析(在最小值、最大值和边界处测试)
- 使用等价类划分(每个分区测试一次)
- 创建决策表(用于复杂业务规则)
- 建模状态转换(用于有状态行为)
- 使用成对测试进行精简(针对组合)
快速选择设计方法:
- 数值范围 → BVA + EP
- 多个条件 → 决策表
- 工作流 → 状态转换
- 参数众多 → 成对测试
关键成功因素:
- 系统化设计能以更少的测试发现更多缺陷
- 随机测试效率低
- 40 多年的研究为这些技术提供了支持 </default_to_action>
快速参考卡
适用场景
- 设计新的测试套件
- 优化现有测试
- 复杂业务规则
- 减少测试冗余
技术选择指南
| 场景 | 技术 |
|---|---|
| 数值输入范围 | BVA + EP |
| 多个条件 | 决策表 |
| 有状态工作流 | 状态转换 |
| 大量参数组合 | 成对测试 |
| 所有组合都至关重要 | 全因子法 |
边界值分析(BVA)
原则: 缺陷往往集中在边界处。
在边界处测试:
- 最小有效值
- 略低于最小值(无效)
- 略高于最小值(有效)
- 最大有效值
- 略高于最大值(无效)
// Age field: 18-120 valid
const boundaryTests = [
{ input: 17, expected: 'invalid' }, // Below min
{ input: 18, expected: 'valid' }, // Min boundary
{ input: 19, expected: 'valid' }, // Above min
{ input: 119, expected: 'valid' }, // Below max
{ input: 120, expected: 'valid' }, // Max boundary
{ input: 121, expected: 'invalid' } // Above max
];
等价类划分(EP)
原则: 每个等价类测试一次。
// Discount rules:
// 1-10: No discount
// 11-100: 10% discount
// 101+: 20% discount
const partitionTests = [
{ quantity: -1, expected: 'invalid' }, // Invalid partition
{ quantity: 5, expected: 0 }, // Partition 1: 1-10
{ quantity: 50, expected: 0.10 }, // Partition 2: 11-100
{ quantity: 200, expected: 0.20 } // Partition 3: 101+
];
// 4 tests cover all behavior (vs 200+ if testing every value)
决策表
适用场景: 包含多个条件的复杂业务规则。
Loan Approval Rules:
┌──────────────┬───────┬───────┬───────┬───────┬───────┐
│ Conditions │ R1 │ R2 │ R3 │ R4 │ R5 │
├──────────────┼───────┼───────┼───────┼───────┼───────┤
│ Age ≥ 18 │ Yes │ Yes │ Yes │ No │ Yes │
│ Credit ≥ 700 │ Yes │ Yes │ No │ Yes │ No │
│ Income ≥ 50k │ Yes │ No │ Yes │ Yes │ Yes │
├──────────────┼───────┼───────┼───────┼───────┼───────┤
│ Result │Approve│Approve│Reject │Reject │Reject │
└──────────────┴───────┴───────┴───────┴───────┴───────┘
// 5 tests cover all decision combinations
状态转换测试
对状态变化建模:
States: Logged Out → Logged In → Premium → Suspended
Valid Transitions:
- Login: Logged Out → Logged In
- Upgrade: Logged In → Premium
- Payment Fail: Premium → Suspended
- Logout: Any → Logged Out
Invalid Transitions to Test:
- Logged Out → Premium (should reject)
- Suspended → Premium (should reject)
test('cannot upgrade without login', async () => {
const result = await user.upgrade(); // While logged out
expect(result.error).toBe('Login required');
});
成对(组合)测试
问题: 所有组合的数量会呈指数级增长。
// Parameters:
// Browser: Chrome, Firefox, Safari (3)
// OS: Windows, Mac, Linux (3)
// Screen: Desktop, Tablet, Mobile (3)
// All combinations: 3 × 3 × 3 = 27 tests
// Pairwise: 9 tests cover all pairs
const pairwiseTests = [
{ browser: 'Chrome', os: 'Windows', screen: 'Desktop' },
{ browser: 'Chrome', os: 'Mac', screen: 'Tablet' },
{ browser: 'Chrome', os: 'Linux', screen: 'Mobile' },
{ browser: 'Firefox', os: 'Windows', screen: 'Tablet' },
{ browser: 'Firefox', os: 'Mac', screen: 'Mobile' },
{ browser: 'Firefox', os: 'Linux', screen: 'Desktop' },
{ browser: 'Safari', os: 'Windows', screen: 'Mobile' },
{ browser: 'Safari', os: 'Mac', screen: 'Desktop' },
{ browser: 'Safari', os: 'Linux', screen: 'Tablet' }
];
// Each pair appears at least once
Agent 驱动的测试设计
// Auto-generate BVA tests
await Task("Generate BVA Tests", {
field: 'age',
dataType: 'integer',
constraints: { min: 18, max: 120 }
}, "qe-test-generator");
// Returns: 6 boundary test cases
// Auto-generate pairwise tests
await Task("Generate Pairwise Tests", {
parameters: {
browser: ['Chrome', 'Firefox', 'Safari'],
os: ['Windows', 'Mac', 'Linux'],
screen: ['Desktop', 'Tablet', 'Mobile']
}
}, "qe-test-generator");
// Returns: 9-12 tests (vs 27 full combination)
Agent 协作提示
记忆命名空间
aqe/test-design/
├── bva-analysis/* - Boundary value tests
├── partitions/* - Equivalence partitions
├── decision-tables/* - Decision table tests
└── pairwise/* - Combinatorial reduction
Fleet 协作
const designFleet = await FleetManager.coordinate({
strategy: 'systematic-test-design',
agents: [
'qe-test-generator', // Apply design techniques
'qe-coverage-analyzer', // Analyze coverage
'qe-quality-analyzer' // Assess test quality
],
topology: 'sequential'
});
相关技能
- Agentic 质量工程 - Agent 驱动的测试
- 基于风险的测试 - 按风险确定优先级
- 变异测试 - 验证测试有效性
请牢记
系统化设计 > 随机测试。 40 多年的研究表明,与临时方法相比,这些技术能以更少的测试发现更多缺陷。
结合多种技术,实现全面覆盖。 使用 BVA 测试边界,使用 EP 划分等价类,使用决策表处理规则,使用成对测试覆盖组合。
使用 Agent: qe-test-generator 会自动应用这些技术,生成覆盖率最高、冗余最少的优化测试套件。Agent 会通过代码分析识别边界、分区和组合。
评论
支持 Markdown