一种自动化测试系统的设计与实现
2022-09-22颜士博
颜士博
(上海铁路通信有限公司,上海 200071)
自动测试系统(Automatic Test System,ATS)主要是指采用计算机技术实现自动化测试的设备或系统。从系统构成上看,通常主要包括:测试条件发生-信号输入、数据采集、数据处理、显示-输出等几部分,实际应用中也包括报表生成、故障统计等功能。从软硬件构成的角度讲,可分为测试设备和测试程序集两部分:前者主要指各种仪器仪表和相关的硬件设备。后者主要指各种软件,包括底层的仪器仪表设备驱动软件、各个业务测试项目软件和应用软件,其中业务软件主要的实现方法是通过软件定义对象和过程,利用计算机技术自动完成对被测对象的建模、输入/输出控制、状态控制、收集对象和过程数据,然后根据需要对数据进行分析处理,最后形成测试结果或测试报告。
自动化测试与人工测试相比较,通常具备速度快、精度准、错误少、效率高、存储和查询方便快捷等优势,特别是对产能大、重复性高、参量多和测量范围广等场合非常适用。近年来,随着智能化、自动化和信息化技术的深入发展,自动化测试装备、测试技术已经成为研发和生产企业投入的一个重要领域和研究方向。
1 项目背景
本文介绍的测试系统是为某公司所生产的一款相对复杂的产品系统开发的。该产品系统在研发阶段与生产初期,已经分别购置了几套昂贵、独立式的专业仪器仪表,用于各阶段各种需求项指标的测试。这个阶段的各项测试主要是通过技术人员手动操作各类仪器仪表,通过人工读取并记录测试结果和数据,最终完成测试。由于被测试系统的构成相对复杂,由十几个单板级的板卡构成,如电源板、发送板、解码板、接收板、MVB通信板、记录板、射频单元等。对该系统的测试,共涉及十几款仪器仪表的使用操作,如不同程式的程控电源、示波器、信号发生器、网络分析仪、频谱分析仪、功率计、万用表等。在全人工测试的模式下,无法满足生产测试需求。
2 系统硬件设计
由于前期已投入不少资源在仪器仪表等设备购置上,为充分利用此类资产,减少投资浪费,优先利用已有的仪器仪表,通过软件集成的方案实现。
按照这一思路,系统所采用的仪表都具备通信能力,提供不同形式的通信接口,如常用的以太网口、GPIB口、USB口和串口等。有网口的通过交换机连接到测试平台计算机,GPIB口、USB口或串口设备则通过直连的方式连接到测试平台计算机,通过计算机软件完成对所连接的各种仪器仪表的驱动、控制和远程操作。系统的主要硬件设备构成如图1所示。主要包括:测试接口单元、功率计、万用表、网络分析仪、频谱分析仪、信号发生器、示波器、程控电源和I/O控制器等,为便于实现人机交互,还设计了辅助操作设备。
图1 系统构成Fig.1 System composition diagram
系统的整个工作流程如下。
测试时将被测板卡插入测试接口单元中,测试接口通过测试矩阵完成测试所需要的条件输入和测试结果输出的自动化配置工作,如:测试需要的电压由程控电源提供,需要的输入波形由信号发生器提供,输出的结果通常由万用测量获取,射频信号的测量则由网络分析仪采集读取等。
测试平台软件的驱动层完成各仪表测试时的初始化,测试过程的设置、输入/输出控制,并从仪器仪表中读取需要的测试结果;测试平台业务处理层主要是依据测试大纲的各测试项,通过软件完成对测试过程的定义,实现各测项的测试,最终将各测试项编成测试序列,形成一个测试集,由系统按序自动完成所有项的测试。对于人工参与或干预的测试项,则开发了直观的测试人机接口 (HMI)界面,辅助并引导测试人员快速完成该测试项的测试。
系统测试完并确认后,根据需要自动生成测试报表和报告,记录每项的过程数据,并经过自动处理得出测试结论,最终输出测试报告。
3 系统软件设计
整个系统软件框架的设计如图2所示,主要包括3层:仪器仪表驱动、各测试项业务逻辑和各测试板卡测试项序列文件,每一层都设计专用的应用程序接口(API)为上层提供服务。此外还包括报表处理、操作界面和用户管理功能模块,系统每一部分都采用模块化设计思想设计实现。
图2 系统软件框架Fig.2 System software framework
3.1 仪器仪表对象的开发
设备驱动相对比较复杂,主要是不同功能的仪器仪表涉及不同的厂商,不同类型的接口,不同的接口协议,虽然各式各样,但是大多数厂商都会提供相关的驱动,或第三方的驱动,只需在此基础上做二次驱动程序的开发即可。常见的协议有SCPI、USBTMC、VISA等,因此,系统软件的开发主要集中在对仪器仪表类的开发,本系统主要采用面向对象的软件设计方法,每个仪器仪表都作为一个单独的类进行定义,向下封装了该设备的底层驱动,向上提供API。程序在运行时按照单例创建对象,避免底层的资源抢占和冲突。例如程控电源相关部分API设计参考如图3所示,包括程控电源对象的创建、系统参数设置、状态控制和输出参数设置、参数读取等。
图3 程控电源部分API设计Fig.3 API design of programmed power supply
3.2 测试项业务逻辑的开发
除了仪器仪表对象的开发,另一个开发的重点是根据测试项进行的业务逻辑的开发。测试项通常要封装成动态链接库(DLL),由更上一层的应用调用,每个测试项通常对应一个或多个API。每个链接库均由一组模块化的程序实现,以下是一个为发送板测试项而开发的部分API,如图4所示。
图4 发送板各测试项部分API设计Fig.4 API design of each test item of sending board
除了测试项业务逻辑的开发,测试过程中需要一些交互HMI图形化操作界面、告警或提示信息的图形化界面,也需要在此进行开发并封装到DLL中,供应用层测试序列程序调用,为操作人员提供良好的操作界面。
3.3 测试序列的开发
测试序列程序是按照测试大纲,通过Teststand软件完成开发、调用、判决、执行的。该软件是一个专门为自动化测试而开发的流程编辑与执行为一体的软件。本方案主要用到的功能包括底层测试项API的调用,上下文数据生成,测试项条件的输入、输出和处理,测试结果的输出与测试报表的自动生成等。软件主要将各个板卡的测试项按照序列文件的形式编辑在一起,以实现流程流水化,同时设计以不同的出条件、入条件等逻辑关系,以及过程参数的设置和结果的收集处理。
本系统最终开发的集成-执行-界面如图5所示。左侧一栏为各个待测板卡测试序列文件列表;右侧一栏为一个具体的测试序列文件,包括若干测试项,每个测试项又分为测试步骤、测试描述、设置3个属性对象;variable-value一栏则为测试过程变量和过程数据,可实时显示过程结果。
图5 测试序列文件开发集成界面Fig.5 Integrated interface of test sequence file development
4 总结
目前该测试系统已经应用到产线上,实践证明该系统可以大幅提高产品的测试效率,减轻员工的劳动强度,提高自动化水平和效率。但在开发和应用过程中也发现一些问题,其中有一个比较突出的是:由于前期研发阶段对生产自动化测试需求考虑的不是很周全,没有预留足够的测试点,造成测试夹具制作起来比较困难,部分测试仍需辅助以手动点触才能完成测试。因此,自动化测试需要从设计、研发阶段就开始统筹考虑,生产阶段需要作为重点,持续跟进、实施和落实。