测试设计技术Skill test-design-techniques

这个技能涵盖系统化测试设计方法,包括边界值分析、等价类划分、决策表、状态转移测试和组合测试。它帮助设计全面测试用例,减少测试冗余,确保覆盖范围,适用于复杂业务规则和参数组合的场景。关键词:测试设计、边界值分析、等价类划分、决策表、状态转移测试、组合测试、系统化覆盖、软件测试。

测试 0 次安装 0 次浏览 更新于 3/9/2026

名称:测试设计技术 描述:“使用边界值分析、等价类划分、决策表、状态转移测试和组合测试进行系统化测试设计。适用于设计全面测试用例、减少冗余测试或确保系统化覆盖。” 类别:专业化测试 优先级:高 令牌估计:900 代理:[qe-test-generator, qe-coverage-analyzer, qe-quality-analyzer] 实施状态:优化 优化版本:1.0 最后优化时间:2025-12-02 依赖项:[] 快速参考卡:true 标签:[test-design, bva, equivalence-partitioning, decision-tables, pairwise, state-transition] 信任层级:3 验证: 模式路径:schemas/output.json 验证器路径:scripts/validate-config.json 评估路径:evals/test-design-techniques.yaml


测试设计技术

<默认操作> 当系统化设计测试用例时:

  1. 应用边界值分析(测试最小值、最大值、边界)
  2. 使用等价类划分(每个分区一个测试)
  3. 创建决策表(针对复杂业务规则)
  4. 建模状态转移(针对状态行为)
  5. 使用成对测试减少(针对组合)

快速设计选择:

  • 数字范围 → BVA + EP
  • 多条件 → 决策表
  • 工作流 → 状态转移
  • 多参数 → 成对测试

关键成功因素:

  • 系统化设计用更少的测试发现更多错误
  • 随机测试效率低
  • 40多年的研究支持这些技术 </默认操作>

快速参考卡

何时使用

  • 设计新测试套件
  • 优化现有测试
  • 复杂业务规则
  • 减少测试冗余

技术选择指南

场景 技术
数字输入范围 BVA + EP
多条件 决策表
状态工作流 状态转移
多参数组合 成对测试
所有组合关键 全因子测试

边界值分析(BVA)

原理: 错误在边界处聚集。

测试边界:

  • 最小有效值
  • 略低于最小(无效)
  • 略高于最小(有效)
  • 最大有效值
  • 略高于最大(无效)
// 年龄字段:18-120有效
const boundaryTests = [
  { input: 17, expected: '无效' },  // 低于最小
  { input: 18, expected: '有效' },    // 最小边界
  { input: 19, expected: '有效' },    // 高于最小
  { input: 119, expected: '有效' },   // 低于最大
  { input: 120, expected: '有效' },   // 最大边界
  { input: 121, expected: '无效' }  // 高于最大
];

等价类划分(EP)

原理: 每个等价类一个测试。

// 折扣规则:
// 1-10:无折扣
// 11-100:10%折扣
// 101+:20%折扣

const partitionTests = [
  { quantity: -1, expected: '无效' },  // 无效分区
  { quantity: 5, expected: 0 },           // 分区1:1-10
  { quantity: 50, expected: 0.10 },       // 分区2:11-100
  { quantity: 200, expected: 0.20 }       // 分区3:101+
];

// 4个测试覆盖所有行为(vs 如果测试每个值的200+个测试)

决策表

用于: 多条件的复杂业务规则。

贷款审批规则:
┌──────────────┬───────┬───────┬───────┬───────┬───────┐
│ 条件         │ R1    │ R2    │ R3    │ R4    │ R5    │
├──────────────┼───────┼───────┼───────┼───────┼───────┤
│ 年龄 ≥ 18    │ 是    │ 是    │ 是    │ 否    │ 是    │
│ 信用 ≥ 700   │ 是    │ 是    │ 否    │ 是    │ 否    │
│ 收入 ≥ 50k   │ 是    │ 否    │ 是    │ 是    │ 是    │
├──────────────┼───────┼───────┼───────┼───────┼───────┤
│ 结果         │批准   │批准   │拒绝   │拒绝   │拒绝   │
└──────────────┴───────┴───────┴───────┴───────┴───────┘

// 5个测试覆盖所有决策组合

状态转移测试

建模状态变化:

状态:已注销 → 已登录 → 高级 → 已暂停

有效转移:
- 登录:已注销 → 已登录
- 升级:已登录 → 高级
- 支付失败:高级 → 已暂停
- 注销:任何 → 已注销

要测试的无效转移:
- 已注销 → 高级(应拒绝)
- 已暂停 → 高级(应拒绝)
test('没有登录不能升级', async () => {
  const result = await user.upgrade(); // 当已注销时
  expect(result.error).toBe('需要登录');
});

成对(组合)测试

问题: 所有组合呈指数增长。

// 参数:
// 浏览器:Chrome、Firefox、Safari(3)
// 操作系统:Windows、Mac、Linux(3)
// 屏幕:桌面、平板、移动(3)

// 所有组合:3 × 3 × 3 = 27个测试
// 成对测试:9个测试覆盖所有对

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' }
];
// 每个对至少出现一次

代理驱动测试设计

// 自动生成BVA测试
await Task("生成BVA测试", {
  field: 'age',
  dataType: 'integer',
  constraints: { min: 18, max: 120 }
}, "qe-test-generator");
// 返回:6个边界测试用例

// 自动生成成对测试
await Task("生成成对测试", {
  parameters: {
    browser: ['Chrome', 'Firefox', 'Safari'],
    os: ['Windows', 'Mac', 'Linux'],
    screen: ['Desktop', 'Tablet', 'Mobile']
  }
}, "qe-test-generator");
// 返回:9-12个测试(vs 27个全组合)

代理协调提示

内存命名空间

aqe/test-design/
├── bva-analysis/*       - 边界值测试
├── partitions/*         - 等价分区
├── decision-tables/*    - 决策表测试
└── pairwise/*           - 组合减少

车队协调

const designFleet = await FleetManager.coordinate({
  strategy: 'systematic-test-design',
  agents: [
    'qe-test-generator',    // 应用设计技术
    'qe-coverage-analyzer', // 分析覆盖
    'qe-quality-analyzer'   // 评估测试质量
  ],
  topology: 'sequential'
});

相关技能


记住

系统化设计 > 随机测试。 40多年的研究表明,这些技术比临时方法用更少的测试发现更多错误。

结合技术实现全面覆盖。 BVA用于边界,EP用于分区,决策表用于规则,成对测试用于组合。

使用代理: qe-test-generator 自动应用这些技术,生成具有最大覆盖和最小冗余的最优测试套件。代理通过代码分析识别边界、分区和组合。