专栏进度02 / 10 (测试理论专题)黑盒测试又称功能测试或数据驱动测试。我们不关心代码内部怎么写只关心“输入”与“输出”的对应关系。而**等价类Equivalence Partitioning与边界值Boundary Value Analysis**是每一位专业测试人的“看家本领”。一、 等价类划分集合论在测试中的应用等价类划分的本质是**“化无穷为有限”**。我们将所有可能的输入数据划分为若干个子集等价类并假设如果子集中的一个样本能通过测试那么该子集中的所有其他样本也能通过。核心分类有效等价类符合程序规格说明书、合理的输入集合。验证“功能实现”。无效等价类不符合规格说明书、不合理或无意义的输入集合。验证“健壮性容错能力”。案例推演场景某系统注册页面要求输入年龄范围为 [18, 60] 的整数。有效等价类{x∣18≤x≤60,x∈Z} (如25)无效等价类小于范围{x∣x18} (如17)无效等价类大于范围{x∣x60} (如61)无效等价类非整数/非数字{x∣x∈/Z} (如19.5, “ABC”, 特殊符号)二、 边界值分析Bug 总在边缘徘徊等价类解决了“选什么数”的问题但经验告诉我们Bug 极少出现在中间绝大多数都死在边缘。 这就是所谓的“长尾效应”或“单字节溢出”。边界值的选择原则 (五点法)对于范围 [min,max]我们不仅要测边界点还要测它的“左邻右舍”正好等于min,max刚刚大于min1,max1刚刚小于min−1,max−1为什么边界值比等价类更重要程序员在写代码时最容易写错的是逻辑判断符把 if (age 18) 写成 if (age 18)把 for (int i0; ilen; i) 写成 for (int i0; ilen; i)这些失误只有边界值测试能精准捕捉。三、 实战等价类 边界值综合设计表在专业文档中我们通常采用表格形式来确保逻辑无死角输入条件 有效等价类 无效等价类 边界值取值年龄 [18, 60] 18-60 之间的整数 18, 60, 非数字, 为空 17, 18, 19, 59, 60, 61用户名长度 [6, 12] 6-12 位字符 6 位, 12 位 5, 6, 7, 11, 12, 13四、 避坑指南黑盒测试的局限性无法覆盖代码路径黑盒测试可能测不到代码中的特殊 if-else 分支比如隐藏的后门代码。组合爆炸如果有 10 个输入框每个都有 5 个等价类组合起来就是 510种可能。对策引入 因果图Cause-Effect Graphing 或 正交实验法。过度依赖规格说明书如果文档本身写错了黑盒测试也会跟着错。