Coding

组合测试策略

Try it

当参数多、环境多、"全组合测不完"时运用正交试验法、Pairwise和判定表来解决组合爆炸问题。如果系统有多个输入字段的组合依赖关系(如"A=1且B=2时C不能为3")、或者需要适配多浏览器多操作系统多语言,一定要用此技能来设计高效的组合覆盖方案。不要试图全覆盖——组合测试的核心是用最少的用例达到最高的组合覆盖率。输出组合覆盖矩阵并标注覆盖遗漏。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

What it does

当参数多、环境多、"全组合测不完"时运用正交试验法、Pairwise和判定表来解决组合爆炸问题。如果系统有多个输入字段的组合依赖关系(如"A=1且B=2时C不能为3")、或者需要适配多浏览器多操作系统多语言,一定要用此技能来设计高效的组合覆盖方案。不要试图全覆盖——组合测试的核心是用最少的用例达到最高的组合覆盖率。输出组合覆盖矩阵并标注覆盖遗漏。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

The skill document

⚠️ 安全警告:本技能的示例可能涉及订单号、支付金额、截图、身份证、手机号等敏感数据。 实际使用时请勿粘贴真实生产数据、客户信息或财务凭证;测试前应脱敏/掩码处理。 本技能仅在 workspace/ 输出评估文件,不持久化、不外传、不跨会话复用。

组合测试策略

核心原则

全组合测不完,不测又怕漏——用科学方法简化。提供 Pairwise、正交实验法、风险加权组合三种简化策略。组合数必须少于全量组合,并标注覆盖分析。

三种简化策略

策略1:Pairwise(两两组合)

原理:每个参数的每个值,至少与其他参数的每个值组合一次

适用场景:
- 参数数量中等(3-10个)
- 每个参数取值不多(2-5个)
- 需要较全面覆盖

生成方法:
1. 列出所有参数及其取值
2. 使用Pairwise算法生成最小用例集
3. 人工审核补充高风险组合

示例:
参数A:a1, a2
参数B:b1, b2, b3
参数C:c1, c2

全组合:2×3×2=12个
Pairwise:最多4-5个用例

策略2:正交实验法

原理:用正交表安排实验,均衡分散、整齐可比

适用场景:
- 参数数量多(>10个)
- 需要统计分析
- 因素间交互作用小

正交表选择:
- L4(2^3):3个2水平因素,4次实验
- L8(2^7):7个2水平因素,8次实验
- L9(3^4):4个3水平因素,9次实验
- L16(4^5):5个4水平因素,16次实验

示例:
因素:
- 浏览器:Chrome, Firefox, Safari(3水平)
- 操作系统:Windows, Mac, Linux(3水平)
- 分辨率:1024x768, 1920x1080(2水平)

选择L18(3^7)正交表

策略3:风险加权组合

原理:高风险组合多测,低风险组合少测

适用场景:
- 已有历史缺陷数据
- 能识别高风险区域
- 需要重点突破

风险评估维度:
1. 业务影响:出问题影响多大?
2. 历史缺陷:这里出过Bug吗?
3. 技术复杂度:实现复杂吗?
4. 变更频率:经常改吗?

风险等级:
- 高风险:全组合测试
- 中风险:Pairwise测试
- 低风险:单参数测试

组合测试流程

步骤1:识别参数

参数识别清单:
├─ 输入参数
│   ├─ 用户输入:文本、数字、选择
│   ├─ 系统参数:配置、环境
│   └─ 数据参数:数据状态、数据量
│
├─ 环境参数
│   ├─ 浏览器:Chrome, Firefox, Safari
│   ├─ 操作系统:Windows, Mac, Linux
│   ├─ 设备:PC, Mobile, Tablet
│   └─ 网络:WiFi, 4G, 弱网
│
└─ 状态参数
    ├─ 用户状态:新用户、老用户、VIP
    ├─ 数据状态:空、少量、大量
    └─ 系统状态:正常、高负载、异常

步骤2:评估风险

风险评估矩阵:

参数组合业务影响历史缺陷技术复杂度风险等级
A1+B1
A1+B2
A2+B1

步骤3:选择策略

根据风险等级选择测试策略:

高风险组合 → 全组合测试
  示例:支付+优惠券+退款

中风险组合 → Pairwise测试
  示例:浏览器×操作系统×分辨率

低风险组合 → 单参数测试
  示例:不同字体、不同颜色

步骤4:生成用例

用例生成模板:

用例编号:COMBO-001
组合内容:[参数1=值1, 参数2=值2, 参数3=值3]
风险等级:高/中/低
测试重点:[这个组合要特别关注什么]
前置条件:[测试前需要准备什么]
测试步骤:[具体操作步骤]
预期结果:[期望的输出]

组合测试示例

场景:电商下单功能

参数识别

  • 用户类型:新用户、老用户、VIP
  • 商品类型:普通商品、虚拟商品、预售商品
  • 支付方式:微信、支付宝、银行卡
  • 优惠券:无、满减券、折扣券

风险评估

  • 高风险:VIP+预售+折扣券(复杂业务规则)
  • 中风险:新用户+虚拟商品(特殊流程)
  • 低风险:老用户+普通商品+微信(常规流程)

测试策略

高风险组合(全组合):
- VIP+预售+微信+折扣券
- VIP+预售+支付宝+折扣券
- VIP+预售+银行卡+折扣券
- VIP+预售+微信+满减券
- VIP+预售+支付宝+满减券
- VIP+预售+银行卡+满减券

中风险组合(Pairwise):
- 新用户+虚拟商品+微信
- 新用户+普通商品+支付宝
- 老用户+虚拟商品+银行卡
- 老用户+预售商品+微信

低风险组合(单参数):
- 新用户+普通商品+微信+无优惠券
- 老用户+普通商品+微信+无优惠券
- VIP+普通商品+微信+无优惠券

策略选择速查表

特征推荐策略组合压缩比最佳适用
参数3-10个,每参数2-5值Pairwise全组合的10-30%功能、兼容测试
参数>10个,需统计分析正交实验全组合的5-20%配置、环境兼容测试
有历史缺陷数据风险加权按需调整回归测试、重点突破
高安全/高风险全组合100%支付、安全模块

常见反模式

  1. 一刀切选Pairwise:不管场景都用两两组合 → 高安全场景必须全组合,低风险场景单参数即可
  2. 参数遗漏:只列了输入参数,漏了环境/状态参数 → 参数识别清单必须覆盖输入/环境/状态三类
  3. 对结果不排序:Pairwise跑出100条用例直接全测 → 按风险等级排序,先跑高风险组合
  4. 忽略交互:只测单参数,不测参数间组合 → 所有业务规则设计到的参数间交互必须覆盖

异常处理引导

场景表现处理方式
参数过多导致组合爆炸简化后仍有1000+组合按风险加权:高风险组合全覆盖,低风险抽样
环境差异导致不一致不同环境结果不同锁定基线环境,标注差异,分环境执行
业务规则频繁变化组合条件随需求变更稳定参数做基础组合,易变参数单独测试
遗漏关键组合上线后发现未覆盖的组合有问题更新检查清单,增加历史缺陷驱动的组合权重

输出示例

场景:电商下单功能测试(参数:用户类型×商品类型×支付方式) → 参数识别:用户(新用户/老用户/VIP)、商品(普通/虚拟/预售)、支付(微信/支付宝/银行卡) → 策略选择:Pairwise生成9条组合覆盖所有两两交互 → 风险加权:VIP用户+预售商品+微信支付标记为高风险(深测)

参数太多(10个参数×每个5种取值)全组合2小时跑不完 → 先用Pairwise压缩到核心组合,再补充高风险组合深测

检查清单

组合测试完成后检查:

  • 参数识别是否完整?
  • 风险评估是否合理?
  • 策略选择是否恰当?
  • 高风险组合是否全覆盖?
  • 用例是否可执行?
  • 测试效率是否提升?

Related skills

当新项目启动需要制定测试方案、或者迭代开始前需要确定"这期怎么测"时使用此技能。根据项目特征(新项目/迭代/重构/紧急修复)、风险分布和资源约束设计分层测试策略,明确测试范围、测试手段、准入准出标准和工具选型。一个好的测试策略让团队知道"测什么、不测什么、为什么"。输出包含风险矩阵、分级测试方案的测试策略文档。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

3 installs

当所有分析(需求解构、场景树、边界清单、组合矩阵)都已完成,需要把分析结果转化为结构化的测试用例时使用此技能。专注用例结构规范、分类体系、覆盖策略和优先级编排。不要在分析还没做完时就跳到用例生成——没有充分的输入,用例一定是泛泛的。适用于将前面的分析产出物整合为 P0-P3 分级、可追溯的标准格式测试用例。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

2 installs

根据不同的测试目标和上下文,选择最佳的提示词模式来驱动AI生成高质量的测试用例。当AI输出的测试用例质量不够好、太泛泛、或者深度不够时,问题往往不在AI而在提示词。此技能提供结构化提示词模板,注入前面步骤产出的分析结果,输出包含角色定义、输出格式规范和约束条件的优化提示词。⚠️ 作为工作流的必过步骤,不得跳过。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

2 installs

当脚本化测试覆盖得差不多了、但直觉告诉你"可能还有东西没测到"时使用此技能。用系统化的探索方法(场景漫游、角色扮演、失败路径、标杆对比)来发现预设测试用例覆盖不到的问题。探索式测试不是随便点——它是有明确 charter(任务书)和时长的有目的探索。每次探索需要记录 session 笔记和发现的问题列表。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

2 installs

当功能测试做完之后需要做进一步的质量验证时使用此技能。覆盖性能测试(负载/压力/稳定性)、安全测试(OWASP Top 10 TOP 漏洞)、兼容性测试(多浏览器/多设备)的测试方法。不要在功能测试还没做完时就做专项——先保证功能正确,再评估性能和安全。专项测试的产出是一组可复用的测试方案(性能指标基线、安全渗透用例、兼容性矩阵)。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

1 installs

当团队里有测试新人需要带、想提升团队整体测试水平、或者需要把个人经验转化为团队能力时使用此技能。通过 Pair 测试、经验分享、checklist 沉淀、模板建设和培训材料等方式赋能团队。不要等着新人犯错再教——好的赋能是提前给工具和方法论,让新人在第一次做之前就知道"正确的做法是什么"。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills

1 installs