TestStand工业自动化测试管理
做者:胡典钢数据库
1.1 自动化测试
“ 关键术语
Automated Test(自动化测试)、Automated Test System(自动化测试系统)、Testing Role(测试角色)、Test Operator(测试操做员)、Test Program(测试程序)、Unit Under Test(待测件)、Return On Investment(投资回报率)、Regression Test(回归测试)、Standard Automated Test System Architecture(标准自动化测试系统架构)、Application Development Environment(应用开发环境)、Instrument Driver(仪器驱动)、Test Management Software(测试管理软件)、Commercial Off-The-Shelf(标准商用现成)编程
1.1 自动化测试
“ 一个完整的自动化测试系统由测试站、仪器设备、测试软件三个部分组成。缓存
1.2 自动化测试系统
“ 测试软件组成
笔记:用户界面;测试程序;自动糊测试框架;数据库管理系统;数据分析系统;性能优化
1.2 自动化测试系统
“ 用户界面会设计得比较通用,使它能够用于不一样类型的产品。多线程
1.2 自动化测试系统
“ 自动化测试框架:与测试程序相反,自动化测试框架则包含通用的代码,实现通用的功能,它适用于不一样类型的UUT。自动化测试框架负责测试程序加载、用户界面更新、产品序列号追踪,甚至还接管一些和测试相关的任务,如生成报表、记录数据库、维护测试系统配置信息。在自动化测试框架内,经过编写不一样的测试程序,可实现不一样产品的测试。所以,对于不一样产品之间自动化测试系统的开发,更多的时间将花费在测试程序上面,自动化测试框架能够最大程度地复用,缩短系统开发时间。架构
1.2 自动化测试系统
“ 数据分析系统:数据分析系统从数据管理系统中提取数据,而后对结果进行分析,产品的不良率高、一致性差均可以借助于数据分析系统查找缘由。框架
1.2 自动化测试系统
“ 程序开发者负责开发测试程序,并根据技术员反馈的信息,调试并修改测试程序。程序开发者须要完成整个测试程序的开发,包括每一个具体测试项的代码编写工做,并依据产品规格设置测试项的上下限。程序开发者须要了解产品的每一个技术细节。测试程序的开发会在某个自动化测试框架内进行,而这个框架由架构师负责设计。编辑器
1.2 自动化测试系统
“ 架构师负责自动化测试框架设计。自动化测试框架应该很是通用,这样才能够提供给不一样的程序开发者使用。程序开发者再也不须要考虑如何设计用户界面更新、产品序列号追踪、报表生成、数据库记录这些由框架所定义的通用功能,而只须要专一于测试程序的开发。架构师必须对自动化测试自己有很是深的理解和技术积累,并熟练使用一种或多种语言来编写用户界面和开发测试工具,须要充分考虑框架的扩展、升级和性能优化。架构师不要求对特定产品很是熟悉,但要对产品所在行业有很好的总体了解和把握,同时须要考虑数据管理系统和数据分析系统的设计。模块化
1.3 评估引入自动化测试
“ 可视化的报表方便产品质量评估;函数
1.4 自动化测试趋势
“ 产品开发过程包括调研、开发、系统验证、量产和后期维护五大阶段
1.4 自动化测试趋势
“ 当各个组件设计完成并组装成最终产品时,须要从系统角度对产品总体进行验证,这包括产品性能参数验证、功能性验证、可靠性验证,这个阶段会进行小规模的试产。
1.4 自动化测试趋势
“ 以后是产品量产阶段,包括产线复制,配套设施批量部署,产品大规模生产,这个阶段出现的任何问题都有可能被无限放大,很是考验企业的研发体系管理和质量管控体系规划。最后是产品的后期维护阶段,包括产品维修、市场反馈的产品缺陷修复、提早通知产品停产。
1.4 自动化测试趋势
“ 在产品调研和开发阶段,以设计验证测试为主,评估方案可行性,确保设计的产品是正确的;而在系统验证和量产阶段,以质量验证测试为主,确保产品的功能正常、性能参数知足相关标准。
1.4 自动化测试趋势
“ 综合测试的过程当中,又经常会引入回归测试(Regression Test)。好比,某个组件C1,单独测试时其测试项T1经过,当组成子系统S1时,有可能在综合测试中再次对组件C1执行测试项T1,由于有可能C1在子系统工做时会受到其余组件的影响,致使其功能误差甚至异常,回归测试能够发现这些问题。另外,当子系统有问题时,也常常会采用回归测试以定位问题。
1.4 自动化测试趋势
“ 产品性能测试、功能测试、环境测试和负荷测试。
1.4 自动化测试趋势
“ 若是故障具备必定的表明性且返修率较高,则须要对返修产品作详细检测,生成检测报告,并作故障统计。
1.4 自动化测试趋势
“ 举另外一个以软件为中心的案例FPGA,做为一种可编程逻辑器件,FPGA在短短20多年中从电子设计的外围器件逐渐演变为数字系统的核心。伴随半导体工艺技术的进步,FPGA的设计技术取得了飞跃发展及突破,朝着高密度、高速度、宽频带,同时低电压、低功耗、低成本的方向发展。FPGA技术最大的特色就在于经过软件(硬件描述语言)定义硬件的功能,这种可重编程能力使得它可以高度定制化,轻松知足多元化市场需求。同时,FPGA社区提供愈来愈多的通用IP(知识产权)或客户定制IP,以知足产品快速上市的要求。
1.5 标准自动化测试系统架构
“ 。在测试和测量行业,最通用的自动化测试系统架构即五层结构模型,该模型自下而上分别是仪器设备、测试站、仪器驱动程序、应用开发环境、测试管理软件
1.5 标准自动化测试系统架构
“ PXI(PCI eXtensions for Instrumentation)是一种坚固且基于PC的模块化硬件平台,是PCI总线在仪器领域的拓展,适用于测量和自动化系统。
1.5 标准自动化测试系统架构
“ VXI(VME eXtensions for Instrumentation)是板上仪器系统的另外一个标准,是VME总线在仪器领域的拓展
1.5 标准自动化测试系统架构
“ 仪器驱动使用的常见的标准方法有“Plug and Play”(即插即用驱动PnP)、“Interchangeable Virtual Instrument”(可互换虚拟仪器驱动 IVI)、“Direct I/O”(直接 I/O)。
1.5 标准自动化测试系统架构
“ 现代仪器的直接I/O通讯标准是经过“Virtual Instrument Software Architecture”(虚拟仪器软件架构VISA)的API来实现的。VISA是一种工业标准通讯协议,不管是串口、GPIB,仍是USB,读/写ASCII字符串的VISA命令都是同样的,所以VISA与接口无关,这使得开发人员用一种语言就能够对不一样接口的仪器进行编程。
2.1 初识TestStand
“ Test Management Software(测试管理软件)、Sequence Editor(序列编辑器)、User Interface(用户界面)、TestStand Engine(TestStand引擎)、Module Adapter(模块适配器)、Step(步骤)、Step Group(步骤组)、Code Module(代码模块)、Sequence(序列)、SubSequence(子序列)、Sequence File(序列文件)2.1 初识TestStand
第1章介绍了标准自动化测试系统架构,测试管理软件位于五层结构模型的最上层,用于管理和执行测试。
2.1 初识TestStand
“ TestStand拥有并行执行引擎,能够极大地提升测试效率,知足高容量生产系统最严苛的生产要求。TestStand的特色概括以下:
测试管理和执行;
通用测试架构简化测试软件开发工做;
具备图形化操做界面;
支持主流应用开发环境编写的代码模块;
支持多线程并行测试;
内建测试策略;
具备自定制的用户界面设计;
具备开放式的架构,可自定制;
自动生成ASCII、HTML、XML、ATML报表;
支持与Access、Oracle、SQL Server数据库互联。
2.2 TestStand经常使用术语
“ 在TestStand中,经过序列文件(Sequence File)、主序列(Main Sequence)、子序列(Subsequence)、步骤组(Step Group)、步骤(Step)这种树状结构来组织不一样的测试和操做(如图2-3所示)。
图2-3 TestStand测试和操做树状组织结构
2.2 TestStand经常使用术语
“ 步骤是TestStand测试程序中的最小单元,再复杂的测试程序也是由许多步骤构成的。
2.2 TestStand经常使用术语
“ TestStand 将每一个序列分红三个步骤组,分别是 Setup Group(设置组)、Main Group(主体组)、Cleanup Group(清理组)。
2.2 TestStand经常使用术语
“ 设置组:通常包含初始化仪器、治具、待测件,以及资源分配的步骤。
主体组:序列的主体部分,包含大部分步骤如待测件的测试。
清理组:一般包含关闭系统电源,恢复测试仪器、治具、待测件到初始状态,资源的释放和关闭等操做。
2.3 TestStand组件
“ Sequence Editor(序列编辑器)、User Interface(用户界面)、TestStand Engine(TestStand 引擎)、Module Adapters(模块适配器)、TestStand Deployment Utility(TestStand 部署工具)
2.4 熟悉序列编辑器
“ 若是发现界面调整得不理想,想恢复到初始的样子,能够经过菜单命令 “View Reset UIConfiguration”重置。
2.4 熟悉序列编辑器
“ 序列窗格:显示当前序列文件中的全部序列。
步骤列表窗格:在序列窗格任意选择某一序列,在步骤列表窗格中会显示该序列的全部步骤。
步骤设置窗格:在步骤列表窗格中任意选中某个步骤,相应地在步骤设置窗格能够设置步骤属性。
变量窗格:变量窗格显示全部的变量和属性。
插入面板:插入面板显示了全部的步骤类型,选中某步骤类型,并经过拖拽的方式添加到步骤列表窗格中,即建立了该步骤类型的实例。
模板窗格:对经常使用的步骤、变量、序列预设置以后添加到模板窗格,它们将做为模板,后续能够直接使用模板建立实例,每一个实例都已经有了这些预设置信息,可简化步骤设置工做。
笔记:窗格面板
2.4 熟悉序列编辑器
“ TestStand中有三个重要的目录:﹤TestStand﹥、﹤TestStand Public﹥和﹤TestStand Application Data﹥。在本书中,涉及这三个重要路径时一概用尖括号表示这是缩写的文件路径,如﹤TestStand Public﹥\Examples\Demo\。
2.4 熟悉序列编辑器
“ 于﹤TestStand Public﹥\Examples\Demo\LabVIEW\Computer Motherboard Test目录下。若是是LabWindows/CVI用户,则使用序列文件﹤TestStand Public﹥\Examples\Demo\C\computer.seq,若是是DotNet 用户,则使用序列文件 C:\Users\Public\Documents\National Instruments\TestStand 2013\Examples\Demo\DotNet\computer.seq。
2.4 熟悉序列编辑器
“ 更多快捷方式能够在TestStand帮助文档中搜索关键词 “Toolbar Buttons and Shortcuts”查找到。
2.4 熟悉序列编辑器
“ TestStand经过树状的结构对测试进行管理,层次化的结构有利于管理和代码重用。TestStand最核心的组件是TestStand引擎,序列编辑器、用户界面、模块适配器都是经过TestStand API和它进行交互的。序列编辑器是TestStand中最重要的组成部分,绝大部分的测试管理工做都是在这里完成的,做为一个图形化的开发平台,它具备简单易用的特色。最后对这个开发环境的视图、布局、序列执行进行了简单介绍
第3章 TestStand系统和结构
“ 目标
了解TestStand的系统和结构
了解TestStand过程模型
了解执行入口点和回调序列
了解TestStand开放式架构
关键术语
TestStand System and Architecture(TestStand系统和结构)、Process Model(过程模型)、Client Sequence File(客户端序列文件)、Execution Entry Point(执行入口点)、Callback Sequence(回调序列)
3.3 TestStand开放式架构
“ 过程模型、执行入口点、回调序列
第4章 动手建立序列
“ 有些步骤类型能够调用代码模块,而有些步骤类型却只执行固定的操做,并不调用任何代码模块。
4.1 建立序列
“ 关键术语
Sequence File(序列文件)、Sequence(序列)、Step Group(步骤组)、Step(步骤)、MainSequence(主序列)、SubSequence(子序列)、Steps Perform Defined Operations(执行固定操做的步骤)、Steps Called Code Module(调用代码模块的步骤)、Insertion Palette(插入面板)、Module Adapter(模块适配器)、Properties Tab(属性配置页)、Built -in Properties(内置属性)、Step-Specific Tabs(步骤特定配置页)、Limit(限度)、Tests(测试)、Pass/Fail Test(合格/失败测试)、Numeric Limit Test(数值限度测试)、Multiple Numeric Limit Test(多数值限度测试)、String Value Test(字符串测试)、Action(动做)、Statement(声明)、Expression(表达式)、Label(标签)、Message Popup(消息对话框)、Status(状态)、Pass(合格)、Fail(失败)、Done(完成)、Error(错误)、Flow Control(流程控制)、Synchronization(同步)
4.2 步骤内置属性
“
4.2 步骤内置属性
“
4.2 步骤内置属性
“ “Properties Tab”(属性配置页)
4.2 步骤内置属性
“ General Panel(通用面板)
4.2 步骤内置属性
“ 每种步骤类型都有其独特的图标,图标会出如今步骤列表窗格中,也能够收集一些图标并添加到﹤TestStand Public﹥\Components\Icons\目录下。
4.2 步骤内置属性
“ 运行选项面板(如图4-7所示)中包含代码模块加载和卸载方式设置、运行模式、交互式执行步骤、结果收集以及对测试失败和遇到错误时的处理方式。
4.2 步骤内置属性
“ 加载选项(Load Options):声明何时将代码模块加载至内存中。一共有三种模式,从字面上比较好理解:“Preload when opening sequence file”是在打开序列文件时就开始加载代码模块;“Preload when execution begins”是在序列开始执行时才加载代码模块,这也是默认的设置;“Load dynamically”是在执行到该步骤时才加载它的代码模块,这种模式能够减小内存开销,可是会影响序列执行的速度。
4.2 步骤内置属性
“ 运行模式(Run Mode):一共有四种运行模式,分别是“Normal”、“Skip”、“Force to Pass”、“Force to Fail”,这对于调试颇有帮助
笔记:force迫使;强迫
4.2 步骤内置属性
“ 在交互模式下先决条件的评估(Precondition Evaluation in Interactive Mode):声明在交互模式下执行步骤时,先决条件是否起做用。
4.2 步骤内置属性
“ Looping Panel(循环面板)
循环面板(如图4-8所示)中可设置单个步骤的循环模式。好比,让当前步骤执行固定次数,或者反复执行该步骤数次直到状态为Pass或者Fail才结束。循环方式有如下四种。
4.2 步骤内置属性
“ Post Actions Panel(后动做面板)
后动做指的是当前步骤执行结束后,TestStand根据步骤的执行状态决定接下来进行什么动做。后动做的不少选项能够经过流程控制步骤来实现,所以不建议在后动做面板
4.2 步骤内置属性
“ 调用序列(Call sequence):调用同一序列文件中的其余序列。经过这种方式调用序列,不能给序列传递参数,因此更推荐的方式仍是用“Sequence Call”步骤类型。
4.2 步骤内置属性
“ 状态表达式(Status Expression):状态表达式决定TestStand最终如何计算步骤状态,它的数据类型是字符串。有些步骤类型,如Numeric Limit Test,状态表达式由系统自动生成,不可输入。
4.2 步骤内置属性
“ Requirements Panel(需求面板):需求面板将当前步骤和需求文档中的某个ID关联起来,只有安装了Requirements Management软件时才有用。
4.2 步骤内置属性
“ Additional Results Panel(额外结果面板):TestStand每执行完一个步骤都会产生不少结果,它将结果放到一个特定的地方——结果列表,在结果列表里的数据才可能最终出如今报表或记录到数据库中。若是但愿某些变量一样出如今报表中,可使用额外结果面板先将它添加到结果列表里
4.3 使用任意模块适配器
“ 在序列中,最重要的步骤就是“Tests”,一共有四种类型的测试步骤:Pass/Fail Test、Numeric Limit Test、Multiple Numeric Limit Test、String Value Test,它们将决定产品是否测试经过。
4.3 使用任意模块适配器
“ 观察变量窗格中“Step”属性,它包含了当前步骤的全部数据,除了“Step.Result.Error”、“Step.Result.Status”这些全部步骤类型都包含的基本属性,它的比较重要的属性有“Step.Result.PassFail”、“Step.DataSource
4.3 使用任意模块适配器
“ 在TestStand中第一次调用代码模块时,若是代码模块目录不在TestStand的搜索路径列表中且使用的不是绝对路径,则TestStand会弹出文件没有找到对话框,提示用户选择路径方式,如图4-21所示。通常状况下,除非是特殊系统目录下的文件,不然都会选择第三种方式—— “使用相对路径”。这样,一旦序列文件和代码模块一块儿打包到其余计算机或总体移动位置时,序列文件也能正确的加载代码模块,不会出现文件丢失的问题。
4.3 使用任意模块适配器
“ 关于代码模块路径的问题,这里多探讨一下。当第一次加载任何一个代码模块时,TestStand会弹出文件没有找到对话框,提示选择该文件的路径方式。可是该对话框会根据当前序列文件是否已保存到确切路径而有所区别:如图4-24所示若是是新建的序列文件而且未保存,文件没有找到对话框只有两个选项;只有当新建的序列文件保存到某个具体路径下,文件没有找到对话框中,才会有第三个选项——使用相对路径。由于新建的序列文件在未存盘以前是没有一个确切的路径的,当给测试步骤声明代码模块时,TestStand没法计算序列文件和代码模块之间的相对路径关系,因此强烈建议用户先保存序列文件,而后调用代码模块时在文件没有找到对话框中选择第三种方式——使用相对路径。
图4-24 文件没有找到对话框
可是即便保存了序列文件,仍有可能在文件没有找到对话框只出现两个选项。
状况一:序列文件的路径为E:\PassFailTest.seq,代码模块的路径为E:\Tests DLL Project\Tests.dll。序列文件所在的目录“E:”是代码模块所在目录“E:\Tests DLL Project”的上级目录。这种状况下,文件没有找到对话框有三个选项,可使用相对路径。
状况二:序列文件的路径为E:\Temp\PassFailTest.seq,代码模块的路径为E:\Tests DLL Project\Tests.dll。序列文件所在的目录“E:\Temp”并不是代码模块所在目录“E:\Tests DLL Project”的上级目录,这种状况下,文件没有找到对话框只有两个选项。
因此通常建议将序列文件所在目录置于代码模块的上一级目录,这样规范化以后利于维护代码模块的相对路径关系。固然,若是有些代码模块,如DLL是第三方开发的且只能在固定的目录下,这时在文件没有找到对话框只有两个可选项的状况下,除非是特殊系统目录下的文件,不然选择第一种方式——将包含文件的目录添加到搜索路径列表中。这样,一旦文件不在原来声明的位置时,TestStand会自动去搜索路径中寻找。建议在“Module”一栏中手动输入相对路径关系,如状况二中,序列文件和DLL之间的相对路径是“..\Tests DLL Project\Tests.dll”,如图4-25所示。这样即便序列文件不在代码模块的上一级目录,把整个更上层的目录总体打包或复制的话,也能保证代码模块正确加载。
4.3 使用任意模块适配器
“ 数值限度测试有三个特定配置页:“Module”(模块)、“Limits”(限度)、“DataSource”(数据源)。“模块”页面和以前合格/失败测试是同样的,用于声明代码模块;“数据源”页面,它的默认数据源是Step.Result
4.3 使用任意模块适配器
“ Numeric;在“限度”页面(如图4-27所示),能够设定限度值,选择比较类型,默认比较类型是“GELE”,表示若是知足“Low Limit﹤= Data Source﹤= High Limit”(数据源在上下限之间),则测试经过。Low(下限)和High(上限)能够是常量,也能够是表达式,其余比较类型还有大于等于、小于等于、等于、大于、小于等。
图
4.3 使用任意模块适配器
“ 新建立序列文件并添加数值限度测试步骤,在模块页面一样选择“Tests.dll”,使用“Add”函数,根据Add函数原型double Add(double a,double b),先在变量窗格中建立两个局部变量“x”和“y”,数据类型为数值型,初始值为默认值“0”。添加好以后,局部变量窗格应该看起来是图4-28所示的样子。
图4-28 建立局部变量
在参数列表区域配置参数,“Return Value”参数的“Value Expression”中填写“Step.Result.Numeric”,即代码模块的输出传递给该属性。对于参数列表中的每一个参数,选中后能够在相应的参数配置区对它进行配置,如图4-29所示。
图4-29 数值限度测试步骤特定配置页—模块
4.3 使用任意模块适配器
“ 数值限度测试步骤中,重要属性有“Step.Result.Measurment”、“Step.NumericArray”、“Step.DataSourceArray”。
4.3 使用任意模块适配器
“ 多数值限度测试一样有三个特定配置页:模块、限度、数据源,默认数据源是“Step.NumericArray”
4.3 使用任意模块适配器
“ 在TestStand中,会强制要求预设定字符串的缓存大小,能够设置一个稍大的值,如100,如图4-37所示。
它的默认数据源是“Step.Result.String”,而在限度页面中,比较类型能够选择“Ignore Case”(忽略大小写)或“Case Sensitive”,在“Expected String Value”中输入预期的字符串,字符串能够是常量或表达式,如图4-38所示。
4.3 使用任意模块适配器
“ 动做是TestStand中用的很是频繁的步骤类型。动做类型一样调用代码模块,但它执行某一动做,如初始化仪器、链接数据库、加载配置文件等,它不须要将结果和限度进行比较,所以不一样于上述测试步骤的地方在于测试步骤执行完的状态是合格或失败,而动做步骤的状态就是“Done”(完成)。
4.3 使用任意模块适配器
“ ,选择该VI以后,在代码模块预览区域能够预览其原型,包括VI的接线端和描述信息
4.3 使用任意模块适配器
“ 值得注意的是error out参数,在LabVIEW中,它的数据类型是簇,包含三个元素,数据类型分别是布尔、数值、字符串类型。TestStand默认数据类型“Error”能够和它很好地匹配起来。通常将VI的错误输出传递给当前步骤的属性“Step.Result.Error”,这样一旦VI中产生错误,当前步骤的状态就变成“Error”,TestStand会启动错误处理机制,弹出错误对话框或者直接结束序列执行,避免错误的扩大
4.3 使用任意模块适配器
“ 序列编辑器中调试时,能够进入LabVIEW应用开发环境,并利用LabVIEW的调试工具进行调试,这给开发人员调试带来极大的便利,可见TestStand模块适配器的强大之处
4.4 调用特定模块适配器
“ 就序列文件自己而言,它的完整测试过程是从主序列开始一步步往下执行,遇到调用序列步骤时,TestStand会进入子序列中并逐步执行子序列中的每一个步骤,子序列执行完以后再返回到主序列,并接着往下执行。一般,序列调用步骤的状态为“Passed”或“Failed”,子序列中任何步骤失败都将致使它的状态为“Failed”,而若是有步骤产生运行时错误,它的状态将为“Error”。
4.5 无模块适配器
“ 声明步骤执行一个或多个TestStand表达式。表达式用于修改或设置TestStand中变量的值、对象的属性。默认声明步骤执行完后状态为“Done”,除非表达式出现错误,状态被设置为“Error”。
4.5 无模块适配器
“ 默认序列中的步骤是按顺序执行的,而流程控制步骤能够额外控制步骤的执行方式。好比,条件执行语句能够选择性地执行某些步骤,循环语句可使步骤屡次运行,Goto语句能够直接跳转,打破执行顺序。若是读者有过文本编程的经验,对于这些语句应该并不陌生,它们的原理基本是相通的。大致上可将TestStand中的流程控制步骤分为三类。
4.5 无模块适配器
“ Select-Case步骤相似于文本语言中的Switch-Case语句。若是Select表达式的值与某个Case分支中的常量表达式的值相等,则执行该Case 分支。不一样于文本语言中Switch -Case语句的地方在于:Select-Case步骤中,任什么时候候,只要有一个Case分支匹配,则在执行完该分支后,马上跳出整个Select-Case结构,即最多只有一个Case分支被执行,而且它不须要Default默认分支。
4.5 无模块适配器
“ 在TestStand中通常会使用标签做为跳转目标,标签以后紧接着是相关的测试步骤,这样作的好处是修改或删除测试步骤时,不会影响Goto语句正常跳转。Goto语句不可滥用,因为它改变了序列的执行顺序,增长了调试和追踪的难度,而且屡次采用Goto语句跳转,可能致使死循环。
4.5 无模块适配器
“ Property Loader(属性加载器):在TestStand中有一个属性导入导出工具(经过菜单命令“Tools»Import/Export Properties”访问),它能够导出序列中全部步骤的限度、变量、属性并存储到文件或数据库中,而Property Loader能够从文件或数据库中导入这些数据