当前位置: 首页 > news >正文

黑盒测试方法论-等价类

文章目录

  • 一. 什么是等价类
  • 二. 等价类的分类
  • 三. 等价类的使用场景
  • 四. 等价类划分原则
  • 五. 等价类设计步骤
  • 六. 实战示例:两位整数加法计算器
    • 1. 需求分析
    • 2. 等价类划分表
    • 3. 测试用例设计
      • 3.1 用例结构
      • 3.2 多元素输入的注意事项
      • 3.3 测试用例成品示例
      • 3.4 简单的测试用例示例
  • 七. 输入域等价类划分思路总结
  • 八. 优缺点分析


一. 什么是等价类

等价类划分法是黑盒测试中最经典、最广泛使用的设计方法之一。它不关注程序的内部代码结构,而是完全基于输入规格说明来设计测试用例。

  • 其核心思想是:将所有可能的输入数据划分为若干个互不重叠的子集(即"等价类"),然后从每个子集中选取少量具有代表性的数据作为测试用例。由于同一等价类中的数据对程序的处理逻辑是"等价"的,因此只需测试其中一个代表值,即可覆盖整个子集的测试效果。

一句话概括:等价类划分法 = 合理分类 + 代表值选取,用有限的用例覆盖无限的输入空间。



二. 等价类的分类

类别
定义
说明
有效等价类
符合需求文档规定的、合理的输入数据集合验证程序在正常输入下能否正确运行
无效等价类
不符合需求文档规定的、不合理的输入数据集合验证程序对异常输入的容错与提示能力


三. 等价类的使用场景

在测试资源(时间、人力)有限的情况下,等价类划分法能够以少量有代表性的数据获得较高的测试覆盖率,尤其适用于:

  • 输入域范围大、数据量多的场景
  • 需要快速建立基础测试用例集的项目初期
  • 作为其他测试方法(如边界值分析)的前置步骤


四. 等价类划分原则

序号
输入条件描述
划分方式
1规定了输入的取值范围或个数1 个有效 + 2 个无效(超出上界 / 低于下界)
2规定了输入必须遵循的集合或规则1 个有效 + 1 个无效
3输入条件为布尔值1 个有效(True)+ 1 个无效(False)
4输入为一组数据,且每个值做不同处理若干个有效 + 1 个无效
5输入条件规定了必须遵循的某些规则1 个有效 + 若干个无效(每条规则对应一个无效)
6某些输入条件不存在无效情况仅划分有效等价类即可


五. 等价类设计步骤

Step 1 ➜ 划分等价类:穷举所有可能的输入分类 Step 2 ➜ 确定有效等价类:依据需求文档中的合法条件 Step 3 ➜ 确定无效等价类:取条件的反面 + 特殊异常情况 Step 4 ➜ 选取测试数据:从每个等价类中挑选代表性数据 Step 5 ➜ 编写测试用例:组合数据,明确预期结果


六. 实战示例:两位整数加法计算器

1. 需求分析

计算器要求输入两位整数(即 -99 ~ 99),对两个输入框的数值进行加法运算。如果要一个一个测试,那数据量得非常大,这样效率太低了。那为了解决这个问题,可以采用等价类划分的方法。


2. 等价类划分表

确定这个输入框的所有可能的输入集合,在这里就应该是键盘上所有可能的输入。

把键盘上所有的输入分成若干子集:

在确立了等价类之后,可按下表的形式列出所有划分出的等价类表

输入条件
有效等价类
无效等价类
两位整数
-99 ~ 99 的整数
超出范围的整数(如 120、-111)
小数(如 30.12)
字母(如 ab)
汉字(如 十二)
特殊字符(如 $ %)
空输入

3. 测试用例设计

3.1 用例结构

字段
说明
用例编号唯一标识,便于追踪与管理
所属等价类标注该用例覆盖的有效/无效等价类
输入框 1 数据第一个操作数的测试值
输入框 2 数据第二个操作数的测试值
预期结果系统应返回的正确输出或提示信息

3.2 多元素输入的注意事项

用例的最终计算结果依赖于两个输入框的值,属于多元素协同输入的场景。在设计用例时,必须遵循以下原则:

单一变量原则:当某条用例用于覆盖某个元素的无效等价类时,用例中涉及的其余元素必须保持有效。

  • 示例

    • 若要验证输入框 1 的无效输入 → 输入框 2 填入合法值,且按钮操作正常。
    • 若要验证输入框 2 的无效输入 → 输入框 1 填入合法值,且按钮操作正常。
  • 为什么这样做?

    • 如果一条用例中同时存在多个无效输入,当系统报错时,测试人员将无法判断错误究竟由哪个输入引起。保持"一次只引入一个变量",可以精准定位缺陷来源,提高测试效率与缺陷报告的可追溯性。
要点内容
用例粒度初期保持精简,聚焦核心字段
覆盖策略有效用例验证功能正确性,无效用例验证容错能力
关键原则覆盖无效等价类时,其余元素一律保持有效(单一变量)
目的确保每条用例的错误归因清晰、可定位

3.3 测试用例成品示例

用例编号所属等价类输入框 1输入框 2预期结果
1有效504090
2输入框 1 无效12030错误提示
3输入框 1 无效-11130错误提示
4输入框 1 无效30.1220错误提示
5输入框 1 无效ab10错误提示
6输入框 1 无效十二39错误提示
7输入框 1 无效$ %87错误提示
8输入框 1 无效91错误提示
9输入框 2 无效35120错误提示
10输入框 2 无效59-123错误提示
11输入框 2 无效2430.12错误提示
12输入框 2 无效12ab错误提示
13输入框 2 无效76十二错误提示
14输入框 2 无效83$ %错误提示
15输入框 2 无效95错误提示

3.4 简单的测试用例示例



七. 输入域等价类划分思路总结

在设计等价类时,可从以下 6 个维度 全面审视输入域:

维度关注点
① 长度最大/最小长度、超长/过短
② 类型数字、字母、汉字、特殊字符等
③ 组成规则格式约束(如手机号、邮箱格式)
④ 是否为空必填项留空
⑤ 是否重复重复提交、重复数据
⑥ 是否去除空格前后空格、中间空格的处理


八. 优缺点分析

说明
✅ 优点思路清晰、易于理解;覆盖了单个输入域所有可能的取值情况;避免了盲目或随机选取数据导致的测试不完整
❌ 缺点产生的用例数量较多;未对边界值/特殊点做针对性考虑;可能产生冗余或无效的测试用例
💡 建议实际工作中应结合边界值分析法、判定表、场景法等方法进行补充,形成完整的测试用例集
http://www.jsqmd.com/news/1311635/

相关文章:

  • STM32 C语言驱动1.54英寸电子纸:低功耗显示与SPI通信实战
  • 2026用AI做生活总结视频,精准识别高效整理,帮你省心又省力
  • 微信小程序连接本地MySQL数据库:正确架构与全栈开发实战
  • 终极指南:如何用Nucleus Co-Op让单机游戏变多人派对
  • 华为/荣耀手机激活锁(FRP锁)解除全攻略:从官方重置到专业维修
  • 基于ROS与SCOUT MINI PRO的移动机器人定点导航系统实战指南
  • 选四轴精雕机,避开坑的实用干货
  • OpenCV关闭相机自动曝光:原理、代码与工业视觉实战
  • 上位机软件的最新技术趋势
  • 电工证学习笔记-易错题汇总
  • Power Automate变量与Excel数据交互:从自动化流程到复杂业务逻辑实现
  • Tecplot Quick Macro宏录制与编辑:从自动化操作到批量后处理实战
  • 大码女装实体店破局:跳出低价内卷的三大核心路径
  • 告别臃肿:G-Helper如何让华硕笔记本性能翻倍又轻装上阵
  • [具身智能-702]:ROSMASTER-M1 的 WIFI 是终端,还是热点?
  • 从玩具到生产力:构建有效AI智能体的四层能力与工程实践
  • linux新手入门2
  • [具身智能-703]:ROSMASTER-M1(RDK X5 | TogetheROS.Bot)手动切换相机、雷达型号操作指南
  • 彻底清理CUDA环境:Windows与Ubuntu多版本残留清除实战指南
  • OpenCV C++鱼眼相机标定:从模型原理到工程实践全解析
  • 有限元法核心原理与应用:从数学基础到工程实践
  • JAVA项目实战-文字格斗游戏
  • 2026 年新发布:丽水比较好的水下施工施工公司联系电话,水下施工不用潜水?老工人私藏的省钱技巧我不允许你不知道!-鸿腾水下打捞 - 实业推荐官【官方】
  • 新手也能上手!2026年实力出众的专业降AIGC平台
  • Elasticsearch深度分页性能优化:从原理到四种实战解决方案
  • 从音频驱动视频到图表理解:拆解跨模态AI精准对齐的核心技术
  • OpenCV鱼眼相机标定实战:从成像原理到C++代码实现
  • 常年处理长途搬家维权,盘点四类高频骗局,普通人跨省搬家照着规则选就不会上当
  • Java面向对象编程实战:封装、继承、多态核心概念与项目应用
  • 8大网盘直链下载助手:免费高速下载的终极解决方案