1.5 标准自动化测试系统架构
构建以软件为中心的生态系统,必须通过标准化架构来实现。人们期望自动化测试系统的性能越来越强大,功能越来越完善,而这意味着系统复杂度的增加。复杂度增加带来的潜在风险是系统稳定性降低、开发周期延长、维护升级难度增加、系统复用率下降从而导致投资回报率降低,因此标准自动化测试系统参考架构就非常重要。在测试和测量行业,最通用的自动化测试系统架构即五层结构模型,该模型自下而上分别是仪器设备、测试站、仪器驱动程序、应用开发环境、测试管理软件,如图1-8所示。
图1-8 标准自动化测试系统架构(五层结构模型)
自动化测试系统包括测试站、仪器设备、测试软件三部分。五层结构模型的第一、二层即自动化测试系统的硬件组成部分,仪器设备可以是P XI模块、VXI模块、传统GP IB总线接口仪器等;测试站可以是桌面PC、工控机或基于标准总线平台,如P XI、VXI。实际项目中,可以从带宽、总线延迟、定时同步、实时处理、成本等方面综合考虑选择合适的硬件。
说明:PXI(PCI eXtensions for Instrumentation)是一种坚固且基于PC的模块化硬件平台,是PCI总线在仪器领域的拓展,适用于测量和自动化系统。PXI于1997年开发,1998年发布,其公开的工业标准由P XI系统联盟(P XISA)所管理。该联盟由70多家公司组成,它们共同推广P XI标准,确保P XI的互通性,并维护PXI规范(http://www.pxisa.org)。
VXI(VME eXtensions for Instrumentation)是板上仪器系统的另一个标准,是VME总线在仪器领域的拓展。VXI于1987年首次发布。VXI的赞助会员有Bustec、VTI Instruments、EADS、Keysight、NI等公司(http://www.vxibus.org)。
五层结构模型的第三、四、五层都是面向软件的,引导开发人员设计和编写测试软件。这种清晰的层次划分有利于测试软件开发任务分工,同时提高了测试软件的开发效率、代码复用率、鲁棒性和可扩展性。仪器驱动程序是用于控制可编程仪器的一个软件程序集,每个子程序对应一个编程操作,如打开、配置、读/写及关闭。仪器驱动使用的常见的标准方法有即插即用驱动(Plug and Play,PnP)、可互换虚拟仪器驱动(Interchangeable Virtual Instrument,IVI)、直接I/O(Direct I/O)。直接I/O是对仪器编程的底层方法,采用可编程仪器标准命令(Standard Commands for Programmable Instruments,SCPI),只有当PnP和IVI不可用时,才考虑使用直接I/O的方式。现代仪器的直接I/O通信标准是通过虚拟仪器软件架构(Virtual Instrument Software Architecture,VISA)的API来实现的。VISA是一种工业标准通信协议,无论是串口、GPIB,还是USB,读/写ASCII字符串的VISA命令都是一样的,因此VISA与接口无关,这使得开发人员用一种语言就可以对不同接口的仪器进行编程。仪器可以被替换,而程序很少改动,P nP、IVI和VISA都极大地体现了以软件为中心的理念。
说明:IVI的目的在于更换仪器后不用更改代码,在多个厂商的仪器之间是可以互换的。IVI联盟的赞助会员有Keysight、NI、R&S等公司(http://www.ivifoundation.org)。
应用开发环境用于代码模块开发,编写具体代码,如调用仪器驱动程序、测试项开发、信号处理、函数分析等。对于一个新的项目,很多时间会花在代码模块开发上。常见的应用开发环境有Visual Studio、Visual C++、LabVIEW、LabWindows/CVI,开发过程中应着重设计高度模块化且可重用的代码模块。测试管理软件位于五层结构模型的最上层,用于管理和执行测试。应用开发环境编写的每个代码模块都将作为测试管理软件的一个步骤,对应一个具体的测试项,测试管理软件将这些步骤排列起来形成序列,并按最终定义的顺序执行序列,从而实现自动化测试。在管理这些步骤的过程中,要求步骤顺序的调整非常方便。同时,代码模块有可能是用不同的语言编写的,这在自动化测试中很常见,因此测试管理软件需要有接口能够同时识别这些代码模块。自动化测试系统需要实现多种任务和功能,在这些任务和功能中,一些与产品紧密相关(如特定仪器的配置、校准、测试项、分析函数),而另一些则对于多数产品都是通用的(如序列号追踪、用户管理、测试流程控制、报表生成、数据存储、用户界面更新、配置和提示窗口)。为了把开发时间减到最短、维护费用降至最低,并且保证测试系统的寿命,实现产品级别的任务与系统级别的任务相分离的测试策略是十分重要的。如果设计得当,产品级别的操作放在代码模块中,由应用开发环境来完成,而系统级别的操作在不同产品、不同测试站之间可以共享,不需要每次都重新开发,由测试管理软件接管这些工作,测试管理软件同时负责代码模块的管理和执行。这将大大减轻开发工程师的工作量,他们可以使用测试管理软件提供的现成框架,而更加专注于代码模块的实现。从1.2节介绍的测试软件的组成可以看到,除测试程序是由应用开发环境编写的外,用户界面、自动化测试框架、数据管理系统、数据分析系统都和测试管理软件有关。一些公司已经编写了自己的测试执行器,并且分配了宝贵的工程资源来从头开始开发测试管理程序。这些测试管理程序的开发以及长时间维护工作耗费了大量的资源,导致无法全力投入到公司核心竞争力业务上,而标准商用现成COTS的成熟软件可以避免上述问题,如TestStand。TestStand除了提供代码模块的管理和执行,以及上述通用操作这些核心功能,还可以方便地实现并行测试,从而提高测试效率,满足高容量生产系统最严苛的生产要求;TestStand可以调用大部分主流应用开发环境编写的代码模块,如LabVIEW、LabWindows/CVI、C++、.NET程序集、Visual Basic等;TestStand提供了现成的架构,专为自动化测试而设计,简化测试软件开发工作并提高系统鲁棒性和可扩展性,并且这些架构是开放的,项目团队可根据自己的需求进行自定制。TestStand还有很多其他的特点,对于测试管理软件而言,其功能远不止于代码模块的管理和执行,测试管理是非常大的一个范畴。
【小结】
自动化测试成为工业界趋势,它带来测试效率和测试结果一致性的提高,并最终降低成本。自动化测试的特点在于减少人工干预,但并非所有测试都值得自动化,这需要进行评估,且有一些准则可以参考。在产品开发过程中,自动化测试的需求越来越多,其最重要的趋势是构建以软件为中心的生态系统,这必须通过标准化架构来实现。在测试和测量行业,最通用的自动化测试系统架构即五层结构模型,测试管理软件位于模型的最顶层,用于管理和执行测试,它通过提供现成的框架而让工程师专注于代码模块的实现,大大节约了开发时间。