2.5 - 黑盒测试技术详解
¶一、黑盒测试技术的常用方法
黑盒测试技术中的常用方法有以下几种:
- 等价类划分法
- 边界值分析法
- 因果图法
- 决策表法
- 错误推测法
- 正交试验法
- 场景法
- 等
¶二、等价类划分法
¶1️⃣ 概念
等价类划分法:指的是依据软件需求对测试输入数据的范围进行细分,然后在每个细分区域中选取一个有代表性的测试数据,以此测试数据来开展测试工作。
等价类划分法摒弃了工作量繁重的穷举测试法,将测试输入数据进行合理的分类,形成对应的有代表性的测试用例,以此来减轻软件测试的工作量。
等价类分为以下两种:等价类 = 有效等价类 + 无效等价类
- 有效等价类:符合需求说明的合理软件测试输入数据的集合。
- 无效等价类:不符合需求说明的无意义软件测试输入数据的集合。
使用等价类划分法的步骤:
- 依据常用方法来为软件的测试输入数据划分等价类 ⬇️
- 为列表中的每一个等价类规定唯一的编号 ⬇️
- 设计一个新的软件测试用例,使其可以覆盖尽可能多的尚未被覆盖的有效等价类 ⬇️
- 重复步骤 3,直至所有的有效等价类全部被测试用例覆盖 ⬇️
- 设计一个新的软件测试用例,使其仅覆盖一个尚未被覆盖的无效等价类 ⬇️
- 重复步骤 5,直至所有的无效等价类全部被测试用例覆盖 🚩
¶2️⃣ 示例
软件测试技术 | 黑盒(等价类划分法) |
---|---|
待测试软件 | 一个可以计算范围均在 0 - 100 之间的两数相加结果的计算器。 |
测试输入数据 (有效等价类) | 输入数据 >= 0 且 <= 100 |
测试输入数据 (无效等价类) | 输入数据 < 0 或 > 100 |
测试输入数据 (无效等价类) | 不在此列表中的其他测试输入情况 |
加数的等价类划分:
- 数值
- 整数
- < 0 [1]
- 0 - 100 [2]
- > 100 [3]
- 浮点数 [4]
- 整数
- 非数值
- 字母 [5]
- 特殊字符 [6]
- 空格 [7]
- 无输入 [8]
编写测试用例:
测试用例编号 | 所属等价类 | 加数 1 | 加数 2 | 预期结果 |
---|---|---|---|---|
0 | [2] - 有效等价类 | 5 | 83 | 软件输出 “88” 的结果。 |
1 | [2] - 有效等价类 | 0 | 100 | 软件输出 “100” 的结果。 |
2 | [1] - 无效等价类 | -1 | 5 | 软件输出 “输入错误” 的提示。 |
3 | [3] - 无效等价类 | 101 | 5 | 软件输出 “输入错误” 的提示。 |
4 | [4] - 无效等价类 | 1.5 | 70.73 | 软件输出 “输入错误” 的提示。 |
5 | [5] - 无效等价类 | G | kx | 软件输出 “输入错误” 的提示。 |
6 | [6] - 无效等价类 | $ | 😁 | 软件输出 “输入错误” 的提示。 |
7 | [7] - 无效等价类 | 空格 | 空格 | 软件输出 “输入错误” 的提示。 |
8 | [8] - 无效等价类 | 无输入 | 无输入 | 软件输出 “输入错误” 的提示。 |
… | … | … | … | … |
¶三、边界值划分法
¶1️⃣ 概念
边界值划分法(又称边界值分析法):指的是对软件的输入或输出的边界值进行着重测试的一种测试方法。在实际应用中,边界值划分法通常会与等价类划分法共同使用,作为等价类划分法的补充。
为什么要使用边界值划分法:根据软件测试领域长时间以来总结的经验,通常情况下,软件中数据范围的边界值是最容易产生错误与缺陷的位置。因此,如果我们将软件测试的重点放在这些边界值周围,可以有效的提高缺陷的发现效率,并且节省一定的测试工作开销。
¶2️⃣ 使用步骤
使用边界值划分法的步骤:
如果软件需求中对输入数据规定了范围,则在实施测试时应当选择范围的边界 [1]、略微超出边界 [2]、略微低于边界 [3] 的三种值作为软件测试的输入数据。
- 示例:待测试软件为一个可以计算 0 - 100 之间的两整数相加结果的计算器。当使用边界值划分法进行测试时,可以选择 0、100、1、101、-1、99 作为加数的主要测试输入数据,而不必测试例如 “30 + 45” 一类的结果。
如果软件需求中对输入数据规定了个数,则在实施测试时应当选择最大个数 [1]、最小个数 [2]、最大个数 +1 [3]、最小个数 -1 [4] 的四种值作为软件测试的输入数据。
- 示例:待测试软件为一个可以计算 4 - 7 个数字相加结果的计算器。当使用边界值划分法进行测试时,可以选择 4 个、7 个、3 个、8 个数字作为加数个数的主要测试输入数据,而不必测试例如 “5 个数字” 或 “6 个数字” 相加时的结果。
如果软件需求中指出输入域或输出域是有序集合的话,则在实施测试时应当选择集合中的第一个与最后一个元素作为测试用例。如果软件中使用了内部数据结构的话,则应当选择内部数据结构的边界上的值作为测试用例。
边界值数据的总体选择原则:刚刚等于、刚刚大于、刚刚小于。
¶四、错误推测法
错误推测法:指的是基于软件测试工程师的经验与直觉,对软件中可能存在缺陷的功能与模块进行推测,并根据这些推测有针对性的设计软件测试用例的一种测试方法。
使用前提:深度熟悉被测试软件、过去已经系统的分析过此软件中存在的缺陷。
错误推测法是等价类划分法与边界值划分法等测试方法的补充,在实际的软件测试工作中可以灵活使用此方法即可,不需要进行详细的学习。
¶五、控件的黑盒测试方法
¶1️⃣ 常用控件
- 文本框
- 按钮
- 单选按钮
- 复选框
- 列表框
- 组合列表框
- 滚动条
- 等
¶2️⃣ 文本框
软件中的文本框的测试工作需要考虑以下情况:内容、长度、类型(大小写 / 是否隐藏等 )、唯一性、空文本框、空格、复制粘贴、特殊字符、功能键等 。
示例:
等待测试的是某个软件的账户登录功能,因此需要对软件的 “账户文本框” 与 “密码文本框” 分别进行测试。在开展测试工作时,应当按照下方的步骤进行操作:
- 输入正确的账户名与密码,密码的每一位均显示为 “*” 符号。点击 “登录” 按钮,可以成功登录账户 ⬇️
- 输入正确的账户名与错误的密码(再测试一次错误的账户名与正确的密码)。点击 “登录” 按钮,无法登录账户,提示 “用户名或密码错误” ⬇️
- 注册新账户,输入未使用过的账户名,可以成功注册 ⬇️
- 注册新账户,输入已注册过的账户名,无法注册,提示 “用户名已存在” ⬇️
- 软件需求文档中应当已经给出了账户名允许的长度范围。注册新账户,按照 “边界值划分法” 进行测试,注册大于长度范围的账户名,无法注册,提示 “用户名过长” ⬇️
- 注册新账户,输入空格账户名,无法注册,提示 “用户名不符合要求”。不输入账户名,无法注册,提示 “未输入用户名” ⬇️
- 软件需求文档中应当已经给出了账户名的格式要求(例如不能使用特殊字符 / 汉字等)。注册新账户,输入不允许使用的特殊字符或汉字作为账户名,无法注册,提示 “用户名不符合要求” ⬇️
- 软件需求文档中应当已经给出了是否允许在 “密码文本框” 中复制粘贴文本。登录或注册新账户,向密码文本框中粘贴文本,确认实际结果是否与预期结果相同 ⬇️
- 软件需求文档中应当已经给出了是否允许注册 “特殊字符集” 为账户名。注册新账户,输入类似 “NULL”、“\0” 等特殊字符集为账户名,确认实际结果是否与预期结果相同 ⬇️
- 执行软件测试用例中的其余操作,确认实际结果是否与预期结果相同 🚩
¶3️⃣ 按钮
软件中的按钮的测试工作需要考虑以下情况:
- 按钮能否实现相应的功能 (例如确认 / 取消等 )
- 按钮能否提示正确的信息 (例如正确性 / 友好性 / 二次确认等 )
- 对于不符合要求的输入数据,按钮能否进行相应的处理 (例如输入错误 / 查询失败等 )
示例:待测试软件与上方 “文本框” 部分的示例相同。账户登录的功能除了需要用于输入账户名与密码的两个文本框之外,还需要一个 “登录” 按钮。在开展测试工作时,应当注意以下情况:
- 输入正确的账户名与密码,点击 “登录” 按钮,可以成功登录账户 ⬇️
- 输入错误的账户名或密码时,按钮给出 “用户名或密码错误” 的提示 ⬇️
- 注册新账户时,应当有 “密码二次确认” 的过程,不能只让用户输入一次密码即可完成注册 🚩
注:按钮应当具备 “友好性”。可能会导致数据丢失的操作不能在用户点击按钮时立即执行,而是应当弹出 “是否确认执行此操作?” 的提示,让用户进行二次确认。
¶4️⃣ 单选按钮
软件中的单选按钮的测试工作需要考虑以下情况:
- 每个按钮是否都能实现相应的功能
- 一组单选按钮是否只能选中一个
- 是否有默认的选中项
¶5️⃣ 复选框
软件中的复选框的测试工作需要考虑以下情况:
- 多个复选框能否同时选中
- 多个复选框能否部分选中
- 多个复选框能否均不选中
- 每个复选项目是否都能实现相应的功能
- 多个复选项目是否可以实现叠加的功能