(前四章阅读笔记)------TestStand工业自动化测试管理

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可以从文件或数据库中导入这些数据

 

你可能感兴趣的:((前四章阅读笔记)------TestStand工业自动化测试管理)