1 概述
测试的目的决定了如何去组织测试。如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对设计比较复杂的部分,或是以前出错比较多的位置。如果测试目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中经常用到的商业假设。
测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前设计过程的缺陷,以便改进。同时,这种分析也能帮助测试人员设计出有针对性的检测方法,改善测试的有效性。
没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。
2 硬件测试一般流程和各阶段点输出文件
在对某个产品测试前,首先要进行测试前期的准备工作,如硬件设计审查、原理图评审、Gerber 文件评审等工作,这样才能使测试发挥更大的作用,尽可能发现缺陷,提高产品质量。
硬件测试的流程和每个阶段需要输出的文件如图1所示。
图1 硬件测试流程
3 硬件测试的种类与操作
(1) 信号质量测试
基本的信号质量测试是通过测试单板上的各种信号,根据信号种类的不同,用不同的指标来衡量信号的质量,并对信号质量进行分析,发现系统设计中的不足。
开发人员根据已有的信号质量、时序调试和测试方面的规范及指导书,在单板调试阶段完成对单板信号质量的全面测试并完整记录结果。
(2) 时序测试
对板内信号时序进行调试,验证信号实际时序关系是否可靠,是否满足器件要求和设计要求;分析设计余量,评价单板工作可靠性。
开发人员根据已有的信号质量、时序调试和测试方面的规范和指导书,在单板调试阶段完成对单板时序(包括逻辑外部时序)的全面调试和测试。
(3) 功能测试
功能测试是根据硬件详细设计报告中提及的功能规格进行测试,验证设计是否满足要求。
功能测试是系统功能实现的基本,需要严格保证测试通过率。如被测对象与其规格说明、总体/详细设计文档之间存在任何差异,均需要详细描述。
功能测试一般包含电源、CPU、逻辑、复位、倒换、监控、时钟、业务等项目。
(4) 性能测试
即容限测试,指使系统正常工作的输入允许变化范围。容限测试的目的是通过测试明确知道设备在什么样的条件范围下能够正常工作,薄弱环节在哪里。
根据产品设计规格书的要求,通过测试得到元器件的实际降额范围,并找到其临界点(即极限值),从而保证产品设计的可靠性。
(5) 容错测试
容错测试(FIT)指通过冗余设计等手段避免、减小某些故障对系统造成的影响,以及在外部异常条件恢复后系统能够自动恢复正常的能力。容错测试的目的是要检验系统在异常情况发生时是否有足够的保护,某些异常条件是否会造成故障后不能自动恢复的严重后果。
容错测试的一般方法是采用故障插入的方式,模拟一些在产品使用过程中可能会产生的故障因素,进而考察产品的可靠性及故障处理能力。常用的故障插入测试方法有时钟拉偏、误码插入、电源加扰等,常用测试工具有些是专用的,有些是内部开发的。
容错测试项目的来源主要是通过FMEA获得,是验证FMEA分析结果的一种手段。而且某些通过FMEA分析无法准确获得结论的项目也要通过FIT来进行模拟。容错测试的另外一个主要内容是操作方面的,主要模拟在用户使用不当时系统容忍错误的能力。容错测试一般允许出现一些功能异常,但是不能出现功能丧失或故障扩散等严重的安全隐患。
通过容错测试,还可以确定在产品的实际应用过程中哪些错是易产生的,哪些错是可以避免的,以尽量减少损失。
(6) 长时间验证测试
由于电子类产品很多是需要长时间运行的,所以进行长时间的验证测试很有必要。
某些器件应用不当的设计,更容易在长时间的运行中显露出来。系统的散热能力也只有在长时间的大功率运行中才容易暴露。长时间的运行才容易发生某些被忽略的偶然因素,容易发现某些潜在问题。长时间测试不仅对于系统而言,在进行单元测试和集成测试时,对于每一个功能模块均需要进行长时间的功能验证。
长时间验证具体的时间把握与产品的实际使用情况相关。对于通信产品系统,一般建议测试时间要达到1周。对每个功能模块的测试时间一般要求达到2天。
(7) 一致性测试
一致性测试是指将不同批次的产品分别取样,进行测试验证,考察产品功能和性能方面的一致性。
测试至少要包含3次或以上对不同器件批次和生产批次产品的测试。测试项目要包含所有的功能测试项目,以及重要的信号质量和时序等项目。重点需要验证长时间的稳定性是否一致。如果具备条件,需要验证在环境条件变化时(如高温环境)各样品的一致性能。
4 硬件测试的级别
硬件测试按照系统的复杂程度,一般分为:
单元测试——针对独立功能单元的测试;
集成测试——针对具有一定集成度的功能子系统的测试;
系统测试——针对完整的系统整体的测试。
测试不能仅仅在一个层次进行,而是应该打破层次之间的界限。问题出现较多的地方一般都是在层与层之间的配合上,如硬件逻辑与单板软件的配合、单板软件与高层软件的配合。按照子系统来划分,是打破物理层次的较好的方法。如一个系统中的时钟系统,它可能与系统中的各块单板都相关,并可能贯穿高层软件、底层软件及硬件。对这个时钟系统测试,需要将其首先划分为各个子模块,对各模块进行测试,然后对整个时钟系统进行测试。