1. 测试方案概述:量产测试的目的、范围、策略与覆盖率
大家好,我是你们的老朋友。今天咱们聊聊量产测试方案的开篇——测试方案概述。说实话,我见过太多工程师一上来就闷头写测试用例,结果测到一半发现方向偏了。所以,开篇定调很重要。
量产测试,说白了就是给产品做“体检”。不是实验室里那种精雕细琢的验证,而是流水线上快速、高效、不漏检的筛查。我个人的习惯是,先想清楚三个问题:为什么测?测什么?怎么测?
1.1 量产测试的目的
目的其实很单纯——把坏的挑出来,把好的放过去。但这里有个坑:你不可能把每个芯片都测到100%完美,成本和时间都不允许。
我记得有一次,一个同事非要给每个控制器做48小时老化测试,结果产能直接腰斩。老板脸都绿了。后来我们重新梳理了测试目的:
- 筛选早期失效:生产过程中的焊接不良、元器件批次问题、装配缺陷
- 验证功能完整性:确保每个IO口、每个通信接口、每个传感器通道都能正常工作
- 保证一致性:同一批次的产品,性能参数不能差太多
- 降低售后成本:出厂前多花1块钱测试,可能省下售后100块的维修费
核心原则:测试不是为了让产品更好,而是为了证明产品已经够好。
1.2 测试范围
测试范围怎么定?我一般会画一个圈,圈里是必须测的,圈外是可选的。这个圈取决于产品等级和客户要求。
举个例子,汽车级的控制器和消费级的玩具控制器,测试范围天差地别。汽车级你可能要测-40℃到125℃全温区,玩具级室温下跑一遍功能就差不多了。
通常来说,量产测试的范围包括:
- 电气参数:电压、电流、功耗、阻抗
- 数字功能:GPIO、SPI、I2C、UART、CAN等通信接口
- 模拟功能:ADC精度、DAC输出、比较器阈值
- 时序参数:时钟频率、信号上升/下降时间、建立保持时间
- 存储单元:Flash读写、EEPROM保持、RAM自检
- 边界条件:最低供电电压、最高工作频率、最大负载
我的经验:测试范围宁宽勿窄,但要有优先级。先把“不测就会死”的项列出来,再考虑“测了更放心”的项。
1.3 测试策略:ICT / FCT / 老化
测试策略是量产测试的骨架。我习惯把测试分成三个层次,就像盖房子:
ICT(在线测试)—— 地基
ICT主要测焊接质量和元器件安装。说白了就是检查有没有虚焊、短路、漏焊、错件。我在项目中遇到过一批控制器,ICT死活过不去,后来发现是PCB焊盘氧化了。如果没有ICT这道关卡,这批板子流到后面FCT,排查起来就麻烦了。
ICT能测什么?
- 电阻、电容、电感的值
- 二极管、三极管的极性
- IC的电源对地短路
- 开短路测试(Open/Short)
FCT(功能测试)—— 主体结构
FCT是重头戏。它模拟产品实际工作场景,验证所有功能是否正常。我一般会写一个测试序列,让控制器自动跑一遍:
// 伪代码示例:FCT测试序列
void FCT_TestSequence(void)
{
// 1. 上电自检
if (PowerOnSelfTest() != PASS) FAIL("POWER_FAIL");
// 2. 通信接口测试
if (SPI_LoopbackTest() != PASS) FAIL("SPI_FAIL");
if (I2C_ScanDevices() != PASS) FAIL("I2C_FAIL");
// 3. 模拟通道测试
for (ch = 0; ch < ADC_CHANNELS; ch++) {
if (ADC_ReadChannel(ch) < MIN_THRESHOLD) FAIL("ADC_CH%d_LOW", ch);
}
// 4. 输出驱动测试
GPIO_SetAllOutputs(HIGH);
delay_ms(100);
if (GPIO_ReadAllInputs() != ALL_HIGH) FAIL("OUTPUT_FAIL");
// 5. 存储测试
if (Flash_WriteReadTest(0x1000, 0xAA55) != PASS) FAIL("FLASH_FAIL");
PASS("ALL_TESTS_PASSED");
}
老化测试(Burn-in)—— 装修验收
老化测试不是每个产品都做。我建议抽检,而不是全检。全检老化成本太高,而且很多消费类产品根本不需要。
什么时候必须做老化?
- 军工、航天、医疗等高可靠性要求的产品
- 新物料、新工艺导入后的首批验证
- 客户明确要求(比如车厂Tier1的PPAP要求)
避坑指南:我曾经见过一个团队,为了省事把所有产品都做24小时老化,结果老化房不够用,产能卡死。后来改成抽检+加严FCT,问题反而更早暴露了。记住:老化是手段,不是目的。
1.4 测试覆盖率定义
测试覆盖率,这是个容易扯皮的概念。有人说“我测了所有IO口”,但没测IO口的驱动能力;有人说“我测了所有功能”,但没测边界条件。
我一般把测试覆盖率分成几个维度:
| 覆盖率类型 | 定义 | 我的建议值 |
|---|---|---|
| 引脚覆盖率 | 每个引脚是否都被激励和测量过 | ≥95% |
| 功能覆盖率 | 每个功能模块是否都被执行过 | 100% |
| 参数覆盖率 | 关键电气参数是否在规格范围内 | ≥90% |
| 故障覆盖率 | 测试能检测到的潜在故障比例 | ≥85% |
| 边界覆盖率 | 是否测试了极限条件(高低温、高低压) | 视产品等级而定 |
你想想看,如果引脚覆盖率只有80%,那意味着每5个引脚就有1个没测到。万一那个引脚正好是关键的复位引脚呢?后果不堪设想。
我的习惯:写测试方案时,先列一个“测试覆盖矩阵”,横轴是测试项,纵轴是故障模式。每个交叉点打勾或打叉,这样一眼就能看出哪里没覆盖到。
1.5 知识体系总览
下面这张图是我自己总结的测试方案知识体系,你可以把它当作本章的“地图”:
这张图把测试方案拆成了四个维度:目的、范围、策略、覆盖率。每个维度之间是相互关联的。比如,测试范围决定了你要用哪种策略,而策略又直接影响覆盖率。
一个小建议:刚开始写测试方案时,别急着写代码。先把这张图画出来,跟团队过一遍。方向对了,后面的事就顺了。
好了,这一章就聊到这儿。测试方案概述是整门课的基石,后面的章节会逐一展开每个细节。记住:量产测试不是炫技,是实实在在的工程实践。
公众号:蓝海资料掘金营,微信deep3321