测试基础理论:黑盒白盒测试、边界值分析、等价类划分、正交实验法在硬件中的应用
做硬件量产测试这些年,我见过太多人一上来就铺测试用例,结果测了半天,该漏的漏,该重测的重测。说白了,测试不是靠堆人力,而是靠方法论。今天咱们就把四个最基础、也最实用的测试理论掰开揉碎,看看它们在硬件里到底怎么用。
2.1 黑盒测试 vs 白盒测试:你站在哪一边?
先问个问题:你拿到一块待测板卡,你关心的是它内部怎么跑的,还是只看输入输出对不对?
这就是黑盒和白盒的核心区别。
| 对比维度 | 黑盒测试 | 白盒测试 |
|---|---|---|
| 关注点 | 功能是否符合规格 | 内部逻辑、路径、时序 |
| 测试依据 | 需求文档、规格书 | 原理图、代码、时序图 |
| 典型场景 | 按键功能、接口通信 | 寄存器读写、状态机跳转 |
| 谁来做 | 功能测试、QA | 硬件工程师、固件工程师 |
| 覆盖率 | 功能覆盖 | 逻辑覆盖、路径覆盖 |
我个人习惯,量产测试阶段以黑盒为主。为什么?因为产线上几百块板子同时跑,你不可能每块都拿示波器去量内部信号。黑盒测试效率高,适合快速筛出坏板。
但白盒测试也不能丢。我记得有一次做电源管理芯片的量产测试,黑盒测下来所有输出电压都正常,结果到了客户手里,低温环境下频繁重启。后来一查,是内部欠压保护逻辑的时序窗口没覆盖到。这就是白盒该管的事。
2.2 边界值分析:Bug 最爱藏在边边上
你想想看,一个电压输入范围是 0V 到 5V,你测了 2.5V 和 3.3V,觉得没问题。但实际出问题的往往是 0V、5V、5.01V 这些边界点。
边界值分析的核心就一句话:测试边界,而不是中间。
具体怎么用?我一般按这个步骤来:
- 确定边界:从规格书里找出所有输入/输出的上下限。
- 选点:取边界值、边界值±一个最小步进、边界值±一个容差。
- 组合:多个边界同时出现时,做交叉测试。
举个例子,一个 ADC 输入范围 0~3.3V,分辨率 12bit,最小步进约 0.8mV。我会这样选测试点:
| 测试点 | 理论值 | 预期结果 |
|---|---|---|
| 下边界 | 0V | 输出 0x000 |
| 下边界+步进 | 0.8mV | 输出 0x001 |
| 上边界 | 3.3V | 输出 0xFFF |
| 上边界-步进 | 3.2992V | 输出 0xFFE |
| 超上边界 | 3.5V | 饱和输出或保护 |
2.3 等价类划分:用最少的用例覆盖最多的场景
等价类划分,说白了就是把输入空间分成几个「类」,每个类里选一个代表来测。如果这个代表通过了,那整个类里的其他值大概率也没问题。
我刚开始做测试时,总想把所有值都测一遍。后来发现根本测不完——一个 12bit 的 ADC 就有 4096 个码值,全测一遍产线就别干了。
等价类划分的步骤很简单:
- 找有效等价类:符合规格的输入范围。
- 找无效等价类:超出规格的输入范围。
- 每个类选一个代表值:通常选中间值或典型值。
举个例子,一个串口波特率支持 9600、19200、38400、115200。有效等价类就是这四个值,无效等价类就是其他所有值。测试时,每个有效类测一个,无效类挑几个典型的测一下,比如 2400 和 921600。
2.4 正交实验法:当组合爆炸时,救星来了
假设你要测一个板卡,有 4 个因素,每个因素有 3 个水平。全组合测试需要 3⁴ = 81 个用例。产线上哪有时间跑 81 遍?
正交实验法就是干这个的——用最少的组合,覆盖最大的交互效应。
我常用的正交表是 L9(3⁴),也就是 9 个用例覆盖 4 个因素 3 个水平。怎么用?
- 列出因素和水平:比如电压、温度、负载、频率。
- 选正交表:根据因素数和水平数选合适的表。
- 填表:把因素和水平对应到正交表的列上。
- 执行:按正交表的每一行生成测试用例。
举个例子,一个电源模块的测试:
| 因素 | 水平1 | 水平2 | 水平3 |
|---|---|---|---|
| 输入电压 | 4.5V | 5.0V | 5.5V |
| 环境温度 | -20°C | 25°C | 85°C |
| 负载电流 | 0.5A | 1.0A | 1.5A |
| 开关频率 | 100kHz | 200kHz | 300kHz |
用 L9(3⁴) 正交表,9 个用例就能覆盖所有两两组合。全组合要 81 个,效率差了 9 倍。
2.5 四种方法怎么搭?一张图说清楚
这四种方法不是孤立的,实际项目中我通常这样组合使用:
实际项目中,我一般先判断这个测试项适合黑盒还是白盒。然后对每个输入参数做边界值分析和等价类划分,确定关键测试点。最后用正交实验法把多个参数组合起来,生成最终的测试用例集。