一、黑盒测试方法
- 边界值法
设计测试用例的核心原则:
- 针对输入范围:取边界值及刚超越边界的值(如最小值、最大值、略小于最小值、略大于最大值);
- 针对输入个数:取最大/最小个数、个数 ±1 的值(如允许输入 1~5 个数,则测试 0、1、2、4、5、6 个);
- 针对输出条件:复用上述规则,分析可能的输出边界;
- 针对有序集合:取第一个、最后一个元素,以及越界访问情况;
- 针对内部数据结构:选其边界值(如数组上限、栈满/空等);
- 分析规格说明,补充其他隐含边界条件(如时间边界、性能阈值)。
- 错误推测法
基于测试人员的经验和直觉,推测程序中可能存在的典型错误,例如:
- 空输入、空指针、null 值处理;
- 除零、溢出、类型不匹配;
- 异常流程未处理(如网络中断、文件不存在);
- 特殊字符或超长字符串输入。
针对这些“常见坑”设计测试用例,提高发现缺陷的概率。
- 因果图法
适用于多种输入条件组合影响输出的场景,步骤如下:
- 明确规格说明中的“因”(输入条件)和“果”(输出动作或状态);
- 绘制因果图,使用逻辑关系(与、或、非)连接因与果;
- 标注约束条件(E:互斥、I:包含、O:唯一、R:要求等),排除非法组合;
- 将因果图转换为判定表(每一列表示一种输入组合及其对应输出);
- 为判定表中的每一列设计一个测试用例。
优点是能系统化减少冗余用例,提升覆盖率。
二、白盒测试方法
又称“结构测试”或“逻辑驱动测试”,关注程序内部结构和代码实现,主要方法包括:
- 逻辑覆盖
按覆盖程度由低到高可分为:
- 语句覆盖:每条语句至少执行一次;
- 判定覆盖(分支覆盖):每个判断的真假分支至少各执行一次;
- 条件覆盖:每个条件的可能取值(真/假)都至少出现一次;
- 判定/条件覆盖:同时满足判定覆盖和条件覆盖;
- 条件组合覆盖:所有条件的可能组合都至少执行一次;
- 路径覆盖:程序中的每一条执行路径都至少走一遍(理想但复杂度高)。
- 循环覆盖
专门针对循环结构设计测试用例,考虑以下情况:
- 零次循环(跳过循环);
- 一次循环(执行一次后退出);
- 典型次数循环(如中间值);
- 最大次数循环;
- 超过最大次数(验证边界控制)。
- 基本路径测试
基于程序的控制流图,计算圈复杂度(Cyclomatic Complexity),确定最少独立路径数:
- 圈复杂度 V(G) = 边数 - 节点数 + 2(或判定节点数 + 1);
- 每条独立路径构成一个测试用例;
- 确保所有可执行语句都被覆盖,且控制结构被充分验证。
该方法有助于系统性地识别程序中的关键执行路径,提升测试完整性。
在实际项目中,边界值分析法和等价类划分法常结合使用,以提高测试用例的覆盖率与效率。两者互补性强:等价类划分减少冗余输入,聚焦代表性数据;边界值法则强化对临界点的验证,捕捉易错区域。
一、方法结合的基本思路:
- 先划分等价类:将输入域划分为有效等价类和无效等价类;
- 再在每类中选取边界值:尤其关注有效类的边界及相邻无效类的边界点;
- 合并测试用例:尽量让一个测试用例覆盖多个设计原则(如同时覆盖边界+无效类);
- 优先级排序:边界附近的用例优先执行,因缺陷高发。
二、实例说明:用户注册年龄输入框(要求:18 ≤ 年龄 ≤ 60)
第一步:等价类划分
| 类别 | 描述 |
|---|---|
| 有效等价类 | 年龄在 [18, 60] 范围内 |
| 无效等价类1 | 年龄 < 18 |
| 无效等价类2 | 年龄 > 60 |
| 无效等价类3 | 非数字输入(如字母、符号) |
| 无效等价类4 | 空输入 |
第二步:应用边界值法
重点关注边界点及其邻近值:
- 下边界附近:17(刚小于最小)、18(最小值)、19(刚大于最小)
- 上边界附近:59(刚小于最大)、60(最大值)、61(刚超过最大)
第三步:设计综合测试用例
| 测试编号 | 输入值 | 所属等价类 | 边界特性 | 预期结果 |
|---|---|---|---|---|
| TC1 | 18 | 有效等价类 | 下边界 | 成功提交 |
| TC2 | 60 | 有效等价类 | 上边界 | 成功提交 |
| TC3 | 17 | 无效等价类1 | 刚低于下界 | 提示“年龄不足” |
| TC4 | 61 | 无效等价类2 | 刚高于上界 | 提示“年龄超限” |
| TC5 | 19 | 有效等价类 | 边界内邻近值 | 成功提交 |
| TC6 | 59 | 有效等价类 | 边界内邻近值 | 成功提交 |
| TC7 | “” | 无效等价类4 | 空输入 | 提示“请输入年龄” |
| TC8 | abc | 无效等价类3 | 非法类型 | 提示“请输入有效数字” |
✅优势体现:
- TC3 同时属于“无效等价类”且是“边界外值”,一举两得;
- TC1 和 TC2 兼顾了有效类代表性和边界测试;
- 减少了穷举所有可能值的需求,仅需关键点即可高效覆盖。
三、最佳实践建议:
- 优先处理数值型输入:适用于范围明确的字段(如金额、数量、年龄、日期等);
- 多维输入时组合使用:若多个参数均有范围,可先单变量分析边界+等价类,再考虑组合;
- 配合错误推测法补充异常场景:如负数、极大数据、特殊字符等;
- 自动化测试中复用模板:建立“边界+等价类”用例生成规则库,提升回归测试效率。
通过这种结合方式,既能系统化地减少测试用例数量,又能精准定位高风险区域,显著提升黑盒测试的有效性与经济性。