1.4 自动化测试趋势
市场需求迫使各个行业的企业不得不在更短的时间内提供更加复杂和更多功能的产品。随着各种技术的融合,产品的复杂度不断升级,而且产品组合也在不断扩大以提供新的功能,这些对测试提出了更大的挑战。在讨论自动化测试趋势之前,需要先了解完整的产品开发过程,在这个过程中有哪些阶段需要测试,哪些阶段适合实施自动化测试,产品开发过程中对测试需求的增长和变化影响着自动化测试趋势。产品开发过程包括调研、开发、系统验证、量产和后期维护五大阶段,如图1-4所示。
图1-4 产品开发过程
首先是调研阶段,将有关市场机会、竞争力、技术可行性、生产需求的信息综合起来,以确定新产品的框架,然后是研发项目审批—批核—立项,之后可以设计原型对关键性的功能进行仿真验证,以确认方案是否现实可行。方案确定后,进入开发阶段,这是产品的详细设计阶段,该阶段主要是产品的设计与构造,产品的各个组件将被分别设计,并进行功能验证,项目的核心是“设计—建立—验证”循环。当各个组件设计完成并组装成最终产品时,需要从系统角度对产品整体进行验证,这包括产品性能参数验证、功能性验证、可靠性验证,这个阶段会进行小规模的试产。之后是产品量产阶段,包括产线复制,配套设施批量部署,产品大规模生产,这个阶段出现的任何问题都有可能被无限放大,非常考验企业的研发体系管理和质量管控体系规划。最后是产品的后期维护阶段,包括产品维修、市场反馈的产品缺陷修复、提前通知产品停产。
在产品开发的每个阶段,都需要验证测试。验证测试又进一步细分为设计验证测试和质量验证测试。在产品调研和开发阶段,以设计验证测试为主,评估方案可行性,确保设计的产品是正确的;而在系统验证和量产阶段,以质量验证测试为主,确保产品的功能正常、性能参数满足相关标准。这两者之间没有严格的界线,比如在设计验证测试阶段就有可能发现潜在的问题,这些问题会影响到产品后期的质量;若在质量验证测试中系统验证失败,有可能需要更改产品设计。图1-5所示的是产品的验证测试内容。
图1-5 产品的验证测试内容
1.原型测试
当开发一个新产品时,最先可测试的对象是产品原型。原型是为了快速验证设计理念而搭建的一个系统工作模型。对原型较常见的测试是检测原型能否满足某个特定的需求,这有利于判断该需求是否合理,基于现有技术是否可行,从而将技术上不可行或者会与其他关键需求相冲突的项剔除。如果有几种不同的方案,原型测试可以帮助我们筛选出满足系统整体需求,同时尽可能缩短开发时间、降低成本的方案。
2.开发测试
一个完整的产品是一个系统,它由很多组件构成。在开发阶段,从每个组件开始,它们在设计完成后都将被测试,以避免后期将错误引入整个系统。一般单个组件的测试是通过给它提供激励信号,然后测量其输出,将组件的输出与预期的结果进行对比,验证设计是否正确。单个组件验证测试通过后,需要将它们组装成更大的子系统或更高级别的组件,将更高级别的组件组装起来形成最终的系统。这时需要对每个组装的子系统进行综合测试,综合测试验证当单个组件存在于更大的体系中时是否可以同样正常工作,同时确保组件之间的协同工作没有问题。在综合测试的过程中,又常常会引入回归测试(Regression Test)。比如,某个组件C1,单独测试时其测试项T1通过,当组成子系统S1时,有可能在综合测试中再次对组件C1执行测试项T1,因为有可能C1在子系统中工作时会受到其他组件的影响,导致其功能偏差甚至异常,回归测试可以发现这些问题。另外,当子系统有问题时,也经常会采用回归测试以定位问题。
3.产品测试
将子系统相互结合形成最终产品后,还要对产品进行产品测试,以确保产品满足所有要求并且无缺陷,这包括产品性能测试、功能测试、环境测试和负荷测试。性能测试用于检测产品具体性能参数,对于每项性能,可以确定一个可接受的容限,然后检验测量结果是否在容限内;性能测试得到的结果是具体的数值,因此可以通过量化的方式评估产品性能。功能测试用于检测产品各项功能是否存在且工作正常,它是定性地评估产品。环境测试模拟产品可能的使用环境,比如不同的温度、湿度、复杂的电磁场环境,看产品是否同样正常工作。负荷测试与环境测试有些类似,但环境测试模拟的是产品真实的使用环境,而负荷测试则是让它工作于极限环境下,以此来寻找产品正常工作的临界点,通过负荷测试,保证产品在标称可允许范围内完全稳定运行。
4.产线测试
产品测试完成后,小规模试产阶段也已经结束,接下来就可以进行批量生产,相应地对测试系统进行大规模复制,并部署到产线中。产线测试过程中有可能出现某些问题,例如部署系统和原有的开发系统有偏差,测试结果不一致,需要定位问题是由于产品差异、环境差异造成的,还是测试系统之间差异造成的,并且由于取样多了,有可能发现一些在开发测试和产品测试阶段没有遇到的问题。在产线测试阶段,基本上不会对产品设计进行较大的改动了,即使改动也会非常谨慎,更多的是通过仔细分析定位问题所在并尽快解决问题。
5.不良产品测试
产品已推向市场,但是有一些故障产品需要返修。如果故障具有一定的代表性且返修率较高,则需要对返修产品做详细检测,生成检测报告,并做故障统计。这些数据可以反馈给产品研发部门,作为产品改进和修复的依据。
在产品调研和开发阶段,项目团队需要考虑使用什么样的测试设备完成原型测试和开发测试,然后在产品测试阶段开始着手搭建自动化测试系统,并在产线测试阶段批量部署测试系统。那么在产品的整个开发过程中,哪些阶段适合引入自动化测试?对于原型测试和开发测试,由于样品数量少、测试项多,测试需求经常变动,引入自动化测试的需求没有那么强烈,并且自动化测试系统开发需要详细规划和大量时间,这种情况下有可能手动测试反而更方便。然而现在产品的复杂度不断升级,功能越来越丰富,导致产品开发过程中,设计验证测试和质量验证测试相互渗透,开发测试中需要的样品数量在不断增加,同时产品功能增加导致测试项增加,这些都极大地增加了手动测试的时间。例如,现在智能手机非常普及,基本上都有无线WiFi功能。WiFi有很多个信道,如果要测试手机的WiFi功能,需要测试其在不同信道的性能参数,一般会有一个很长的列表,手动测试方式的效率会非常低,因此产品的研发阶段就需要引入自动化测试,自动化测试的需求也会越来越多。
一方面,自动化测试需求的急剧增加;另一方面,由于引入自动化测试需要时间、预算和技术支撑,要求在前期做足够的准备工作,因此了解自动化测试趋势将有助于决策层和项目开发团队采取最佳方式对测试进行优化。图1-6引用自NI公司2013年发布的《自动化测试趋势展望白皮书》,它从商业策略、系统构架、数据处理、软件以及硬件I/O五个方面总结出自动化测试展望趋势,这些趋势将会在未来3年内对自动化测试领域产生重大影响。
这里有三个重点:①商业策略部分讲究测试成本控制,如何采用标准化架构实现测试资源整合以及测试组织优化;②系统架构部分提出以软件为中心构建的生态系统;③软件部分如何保证测试软件质量。这些趋势不是突然出现在人们的视野里的,移动设备正在经历的变革暗示着测试和测量行业的一个重要发展趋势——以软件为中心构建的生态系统。早期的手机只能用来拨打电话,之后才出现短信功能,但是这些功能几乎完全是由厂商定义的。这些设备上的软件对用户开放之后,从音乐播放器到摄像头,再到电子邮件等功能便迅速普及,但是这一变革的作用不仅在于开放式软件体验。Apple公司以及之后的Google公司都围绕各自的产品建立了强大的生态系统,并构建了一个应用程序开发者社区来改善产品的使用性。可以说,手机的开放性和社区概念模式本可以由传统手机供应商自己开发,但是真正应用这个理念的却是在部署硬件之前率先开发了软件环境的Apple公司和Google公司。这两家公司通过向用户或第三方开发者提供一定程度的软件自定义化,成功地改变了消费者对手机的看法。这一概念模式也在影响着测试和测量行业,由开发者和集成商组成并且建立于标准软件平台之上的社区正在利用商业现成技术来将复杂硬件的功能扩展到前所未有的应用中。以软件为中心构建的生态系统所具有的生产力和协作性将对未来3~5年的测试系统设计产生深远的影响。举另一个以软件为中心的案例:FPGA作为一种可编程逻辑器件,它在短短20多年中从电子设计的外围器件逐渐演变为数字系统的核心。伴随半导体工艺技术的进步,FPGA的设计技术取得了飞跃发展及突破,正朝着高密度、高速度、宽频带,同时低电压、低功耗、低成本的方向发展。FPGA技术最大的特点就在于通过软件(硬件描述语言)定义硬件的功能,这种可重编程能力使得它能够高度定制化,轻松满足多元化市场需求。同时,FPGA社区提供越来越多的通用IP(知识产权)或客户定制IP,以满足产品快速上市的要求。
图1-6 自动化测试趋势
过去,测试系统的价值仅等于在该系统上所投资的时间和金钱。展望未来,测试系统将得益于以软件生态系统核心且由第三方供应商、集成商、顾问和衍生标准构成的社区。这对于满足新一代设备测试需求至关重要。
——Jessy Cavazos,Frost&Sullivan测试测量行业总监
对于自动化测试而言,最重要的趋势是构建以软件为中心的生态系统,这是一个以软件为中心的时代。这种趋势带来了什么样的好处?首先是更高的测试系统灵活性,对自动化测试系统而言,在标准硬件平台之上,通过软件定义系统的功能,使得系统可扩展至多种应用、业务部门以及各个产品阶段,这种灵活性能够很好地应对产品复杂性增加、测试需求改变、新的测试标准;其次是更低的测试系统投资,由于软件为中心带来的灵活性,它可以实现硬件和IP的复用,测试系统升级不再需要频繁更换仪器设备,减少了维护成本,同时增加了设备利用率;再次是更长的测试系统寿命,基于广泛采纳的标准化架构,允许技术升级来改进性能并满足将来的测试需求,测试系统不再轻易被淘汰;最后是围绕软件生态系统形成的社区,它促进了行业参与者的相互合作交流,每加入一个供应商、制造商、竞争者或利益相关者,软件对每个客户的价值也随之增加。在未来3~5年内,自动化测试系统将会更加依赖于软件,各种生态系统对客户通过这些平台创造的价值也将产生更大的影响。图1-7所示的是基于软件平台的解决方案和缺乏灵活性的固定解决方案之间的对比,横轴是时间刻度,纵轴是投资金额。可以看到,对基于软件平台的解决方案进行正确的前期投资之后,开发支持新技术和新功能的系统,以及对现有系统进行改造的风险和成本,将随着时间的推移而日趋减小,最终实现更低的测试系统投资和更长的测试系统寿命。
图1-7 不同平台解决方案之间的成本变化趋势
我们已经看到对软件设计、开发流程和人才进行大规模投资后,开发及维护复杂测试系统所需的时间、精力和成本均有了显著降低。我们必须提供和支持的是具有较长生命周期的系统,因此在开发之前进行必要的投资是至关重要的。
——国家点火装置和光电子科学董事会实验室系统组项目经理,美国劳伦斯利弗莫尔国家实验室