mcpField
Q
qe-test-design-techniques

qe-test-design-techniques

github.com/proffesor-for-testing测试与质量51993 次安装今天更新
代码仓库

关于 qe-test-design-techniques

面向 QA 工程师和编码 Agent 的测试设计 Skill,介绍系统化设计测试用例的方法,以减少冗余。它根据场景选择边界检查、组合测试等技术。

主要功能

  1. 01边界值分析
  2. 02等价类划分
  3. 03业务规则决策表
  4. 04状态转换建模
  5. 05成对与全因子测试

适用场景

  1. 01设计数值输入边界测试
  2. 02覆盖多条件业务规则
  3. 03测试有状态工作流
  4. 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> 系统化设计测试用例时:

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

快速选择设计方法:

  • 数值范围 → 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'
});

相关技能


请牢记

系统化设计 > 随机测试。 40 多年的研究表明,与临时方法相比,这些技术能以更少的测试发现更多缺陷。

结合多种技术,实现全面覆盖。 使用 BVA 测试边界,使用 EP 划分等价类,使用决策表处理规则,使用成对测试覆盖组合。

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

评论

支持 Markdown