第2章:等价类划分法基础——概念、有效等价类与无效等价类、划分原则、步骤
章节目标:掌握等价类划分法的核心概念,能够区分有效等价类与无效等价类,遵循划分原则完成测试用例设计的第一步——等价类识别与分类。
2.1 适用场景
- 输入数据为离散值或可枚举范围(如数字、字符、状态码)时。
- 输入条件存在明确的合法边界与非法边界(如年龄1~150、密码长度6~20位)。
- 需要快速覆盖大量输入组合,且每个等价类内行为逻辑一致。
- 验收条件要求“输入合法值应正确响应,输入非法值应给出合理提示”。
2.2 前置条件
- 已完成需求规格说明或功能描述评审,明确输入字段的定义。
- 已识别所有输入数据的数据类型、取值范围、约束关系。
- 测试环境就绪,可执行被测对象的基本功能。
- 团队已确认等价类划分法的应用范围(通常与边界值分析配合使用)。
2.3 核心概念
| 术语 | 定义 | 示例(年龄输入框) |
|---|---|---|
| 等价类 | 一组具有相同输入处理逻辑的数据集合,集合内任意一个值代表整个类的行为。 | “1~150”内的所有整数属于同一个有效等价类。 |
| 有效等价类 | 满足输入条件、期望系统正确处理的数值集合。 | 年龄:整数1~150。 |
| 无效等价类 | 不满足输入条件、期望系统拒绝或给出错误提示的数值集合。 | 年龄:0及以下、151及以上、非数字、小数、空值。 |
关键认知:有效等价类通常只有一个(合理范围),无效等价类可能有多个(各种违反约束的方式)。必须覆盖所有无效等价类才能保证测试充分性。
2.4 划分原则
- 完备性原则:每个输入约束条件都必须对应至少一个有效等价类和所有可能的无效等价类。
- 独立性原则:不同输入条件产生的等价类应互不重叠;如果一个值同时属于多个等价类,需重新划分或采用组合方法。
- 无冗余原则:每个等价类只需选取一个代表值进行测试,避免重复覆盖相同逻辑。
- 边界优先原则:等价类划分后,再对每个等价类的边界值进行补充测试(边界值分析法,将在后续章节详细展开)。
2.5 操作步骤
- 步骤1:识别所有独立输入条件(字段、参数、环境变量)。
- 步骤2:针对每个输入条件,确定其有效取值范围(来自需求、约束文档)。
- 步骤3:将该取值范围定义为一个有效等价类。
- 步骤4:列出所有违反该取值范围的方式(小于最小值、大于最大值、数据类型错误、空值、格式错误等),每个方式为一个无效等价类。
- 步骤5:对每个等价类分配唯一标识(如 EC-1, EC-2, …),并在测试管理工具中记录。
- 步骤6:从每个等价类中选取一个代表值(优先选择中间值或典型值,避开边界)。
- 步骤7:将代表值填入测试用例的输入列,并预期输出结果。
2.6 输入输出物
| 类别 | 物品名称 | 格式/工具 | 责任方 |
|---|---|---|---|
| 输入 | 需求规格说明(含输入约束表) | Word / Confluence | 需求分析师 |
| 输入 | 被测对象可执行版本或 API 文档 | EXE / Swagger | 开发团队 |
| 输出 | 等价类划分清单 | Excel / TestRail | 测试设计人员 |
| 输出 | 等价类代表值列表(映射到测试用例) | Test Case 管理工具 | 测试设计人员 |
2.7 责任边界
- 测试设计人员:主导等价类划分、代表值选择、输出划分清单;确保覆盖所有无效等价类。
- 需求分析师/产品经理:提供输入约束的准确语义,对有效/无效定义有最终解释权。
- 开发人员:验证等价类划分是否可被代码实现覆盖,反馈不可实现的等价类(如“非数字”在底层已统一转换为默认值)。
- 测试经理/QA Lead:评审划分结果是否满足“完备性”和“无冗余”原则。
2.8 等价类划分流程图
2.9 记录材料
- 等价类划分工作表:包含字段名、有效等价类、无效等价类列表、代表值、预期结果。
- 测试用例库:每个等价类代表值对应一条测试用例,并与需求ID关联。
- 评审记录:等价类划分清单经同行评审后的签字或审批截图。
2.10 异常处理
| 异常场景 | 处理方式 |
|---|---|
| 输入条件不明确(如“合理密码”) | 暂停划分,向需求方澄清具体约束,必要时定义“可接受安全策略”作为有效类。 |
| 等价类数量过多(超过50个) | 优先使用等价类合并不重要的无效类(如格式错误统一归为“格式错误”),保留关键类型错误。 |
| 代表值选取导致边界遗漏 | 在划分清单中额外标注“边界待补”,随后用边界值分析法专门处理。 |
| 代码实现与等价类假设不一致 | 记录为缺陷或需求疑问,与开发确认后调整等价类(如“空字符串”被统一转换为“0”则需合并类)。 |
2.11 验收标准
- 每个输入条件至少识别出1个有效等价类,且所有可能的无效等价类(最小值以下、最大值以上、数据类型错误、空值、格式错误等)均被列出。
- 等价类划分清单中的每个类都分配了唯一标识(EC-XXX)。
- 代表值选取不包含边界值(边界值将在后续章节单独测试)。
- 划分清单已通过至少一位同级测试人员或QA Lead的评审,无未解决的备注。
- 若存在依赖关系(如A字段为空则B字段必填),该关系已在等价类备注中声明,避免遗漏组合场景。
常见误区:很多初学者只关注“有效”而忽略“无效”等价类。例如年龄输入框只测试1~150有效值,却漏测“0”“-1”“151”“abc”等无效情况,导致生产环境用户输入特殊字符时系统崩溃。请务必以“无效等价类全覆盖”作为划分质量的硬性指标。