科技>电子技术>电子技术应用
TestStand工业自动化测试管理(典藏版)

TestStand工业自动化测试管理(典藏版)"

作者:胡典钢
ISBN:9787121427459
定价:¥168.0
字数:529千字
页数:420
出版时间:2022-01
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书以作者多年的实际项目经验为基础,系统介绍了工业自动化测试管理软件TestStand的实用功能和常见问题的解决方法。全书共15章,包括基础入门和高级进阶两部分。其中:基础入门部分(第1~9章)介绍工业自动化测试管理的基础知识,使读者对TestStand有较完整的认识;高级进阶部分(10~15章)主要介绍TestStand自定制、面向对象模型、编程技巧和优化策略、TestStand开放式架构,引导读者从测试管理的角度来考虑问题,以便对项目的复杂度和需求进行综合评估,逐步成长为团队核心开发人员。值得一提的是,所有软件的本质上就是一种工具,运用它解决项目中的实际问题是根本,在解决问题的过程中了解整个行业的动态和发展趋势,逐步形成全局化的眼光和思路,这才是本书最希望传达的信息。

前言

序 1998年我们发布了TestStand 1.0,当时的宏伟目标是为自动化测试系统软件的开发者提供一个高质量的带有开放式可扩展架构和高性能组件的模块化体系。现实中,我们经常看到工程师与自行开发或某些集成商提供的欠成熟且功能单一的测试执行器做斗争,而这些执行器的开发和维护常受限于持续投入的缺乏、规模太小或技术和质量问题。在为自动化测试系统开发提供一个行业性平台时,我们面临的最大挑战是,没有任何两家公司在需求和优先级上是相似的。幸运的是,NI公司拥有异常庞大而多样化的测试和测量用户,这是我们在设计和构建TestStand过程中作为输入和意见反馈的宝贵资源。我们别无选择,只能努力让TestStand的每个方面都很灵活、可配置且某些功能支持插件模式。那个时候,在某种程度上要达到这种要求看起来很离谱,甚至现在看来仍然是这样。从用户界面、过程整合、文件格式、并行、结果存储、报表、测试配置,一直到编程语言和集成开发环境的选择,TestStand提供了灵活性、扩展机制甚至组件的源代码,来确保测试系统的开发者能借助这些高度模块化、功能内聚且被广泛验证的组件单元来设计自己想要的系统。 由于TestStand有很多种方式实现应用和定制,对于TestStand的开发者来说,需要了解用什么样的定制或配置来实现他们想要的系统,这不是一种容易的事情。幸运的是,这就是本书要告诉我们的。由于拥有非常丰富的实际项目经验,作者能够准确地呈现TestStand的概念和原理,并将理论知识与实际应用案例相结合。本书所涵盖的TestStand主题,无论从深度还是广度方面,都毫无疑问地创造了世界上最好的TestStand中文学习资源。我非常欣赏作者在撰写本书的过程中所表现出的勤奋、主动和热情,也期望本书能帮助更多的开发者在使用TestStand构建他们的系统中获益。 James Grey(NI公司研发部首席工程师,TestStand之父) 前言 刚进NI(National Instruments)公司的时候,部门就安排了一次为期5天的TestStand内部课程培训,由资深应用工程师授课。那时候笔者还不太了解TestStand,但对它的广泛应用已有所体会,以电子行业为例,在全球顶级的15家电子产品制造商中,就有14家使用了TestStand,并且它几乎每年都会推出新版本,足见其生命力之强。 最初,一些敏锐的科学家和工程师发现,在开发自动化测试系统时,随着系统复杂程度的增加,测试项增多,管理这些测试项变得非常困难。如果中间插入测试项,或者需要调整测试项顺序,必须对测试代码做很大的改动;当频繁进行这些操作时,工作量变得非常大且异常烦琐,从而造成维护上的困难。而且,自动化测试系统往往是一个混合平台,需要用到不同仪器厂商的设备,基于不同语言编写的硬件驱动程序,要求软件具备统一接口,以调用使用不同语言编写的代码模块。另外,当产品升级或设计全新产品时,相应测试系统的大部分代码需要重写,而这其中包含序列号追踪、用户管理、测试流程控制、报表生成、数据存储、用户界面更新、系统配置、弹出提示窗口等一些非常通用的操作,若将这些通用部分提取出来作为框架模板,然后用户在这个模板上进行开发,无疑会节省很多的开发时间。再者,在产品测试过程中,需要将每项测试结果和产品规格的上/下限做对比,随着测试项增多,相应的规格上/下限也急剧增多,管理它们就变得非常重要,有时甚至需要在某个关键测试项不合格时,立即停止对产品的测试,这就涉及测试的管理策略问题。随着开发经验日益丰富,工程师不再满足于现有系统的测试效率,因此自然会想到引入多个产品的并行测试。然而,引入并行测试需要考虑的问题有很多,包括线程的管理追踪、线程安全、线程之间的通信、数据空间等,要做到这些并不简单。总之,TestStand在这样的背景下诞生了。 TestStand是一个现成可用的自动化测试管理软件,用于从组织自动化原型创建、控制设计认证到执行生产测试的整个过程。它与LabVIEW、LabWindows/CVI、Visual Basic和Visual C 等所有主流测试编程环境兼容,且能调用任何编译过的动态链接库(DLLs)、ActiveX自动化服务器、EXE可执行程序,甚至传统开发语言,如HTBasic和HP-VEE。利用TestStand强大的兼容性,可以非常方便地在一个系统中将传统和现代测试编程环境结合起来。由于TestStand与LabVIEW、LabWindows/CVI编程语言完全兼容,开发人员可以更加方便地在TestStand中对程序进行调试、修改或设置断点。此外,TestStand具有极其开放的架构,为满足特定需求,用户可自行对其功能进行修改,例如自定义用户界面和报表生成格式,或者根据不同的测试需求自行定义执行顺序。TestStand建立在高速、多线程执行引擎基础上,其性能可满足最严格的测试吞吐量要求。TestStand可以使工程师将精力集中在更重要的任务上(如考虑如何为产品建立测试策略,以及如何利用这个策略开发出应用程序等),而相对简单通用的工作(如运行序列、执行、报表生成和数据库记录等)均由TestStand来完成。TestStand在提高自动化测试开发效率、加快测试速度、降低测试系统整体成本方面具有非常显著的优势。 笔者曾主导或参与了TestStand方面一些大型项目的开发,深深体会到TestStand的强大和用户需求的多样性,并且很幸运地结识了许多非常优秀的工程师,有机会和他们进行交流,探讨TestStand的开发技巧、资源使用效率、并行测试等话题。在此摘录一些: “TestStand提供了成熟的框架、快速的开发模式,从过程模型、操作界面到用户管理、报表生成、数据库记录等,在着手新项目开发时,我只需要关注产品测试项本身,其他都可以复用,这极大地节省了开发时间。” ——黄华勇(vivo移动通信工程测试经理) “TestStand的调试功能比较突出,设置的测试模式丰富,使调试工作变得轻松。尤其是定位一些产品功能性的问题,因为公司产品功能相对复杂,测试项非常多。” ——陈中梁(华为终端资深测试装备开发工程师) “TestStand有助于功能模块标准化、平台化,减少重复开发工作量。在其框架的基础上,我们能通过一定程度的自定制,最终开发出适合公司使用的通用自动化测试平台。” ——袁秋(迈瑞生命信息与支持事业部装备开发技术经理) “在TestStand中进行测试管理是一件非常轻松的事情,它对测试序列的调度能力可以让使用者非常方便地编辑测试序列。此外,TestStand的多线程管理能力很强,稳定性非常高。” ——林晓斌(亚马逊资深测试工程师) “TestStand自带的并行测试模型大大简化了多线程管理的工作,通过优化策略可以提高资源利用率,进而显著缩短测试时间,满足产能要求,而且其内在同步机制很好地解决了并行测试中竞争、资源冲突、死锁等问题。” ——郭恒章(Bose中国测试经理) 【编写本书的动力】 在一个硬件趋于同质化的时代,如何提高核心竞争力?由于摩尔定律推动而带来的飞速发展,硬件的性能越来越强大,这种势头导致不同厂家之间硬件的性能趋于同质化,而真正体现差异性的方面则在于软件及其带来的用户体验。这种现象普遍存在于各个行业,如消费电子、无线终端、半导体、汽车、仪器仪表等。以仪器仪表行业为例,各种硬件指标,如带宽、频率范围、采样率、绝对精度,在不同厂家的同级别仪器之间差别并不是很大,将这些仪器用于搭建自动化测试系统时,真正影响测试效率、系统开发周期、系统更新升级成本以及系统可靠性的是测试开发软件。在这个以软件为核心的时代,TestStand正是自动化测试领域非常重要的一个软件平台,它具备加速自动化测试系统的开发及完善产品的原型验证、开发测试、系统级测试并最终缩短产品上市周期等独特的优势,近年来得到了广泛的应用,而对其系统性介绍资料的需求也越来越突出。 笔者刚进入NI公司时,作为应用工程师,一部分工作是通过电话或电子邮件解决客户的技术问题,并接手一些项目验证。有些项目难题无法直接解决,需要查阅用户手册和内部数据库,而内部数据库的知识点往往是回答某个具体问题,并没有归纳整体项目案例或整理一系列有代表性的问题,经常花费相当长的时间才找到有价值的资料。在部门经理的支持下,笔者和另一位同事设想将平时所做的项目验证和比较系统的技术问题以文档的形式记录下来,供部门内部参考,以节省大家的时间,并把这项工作命名为Knowledge Sharing(以下简称为KS)。作为KS的第一任编辑,笔者向部门的全体同事征稿,题材不限。出乎意料的是,我们在短时间内就收到了很多文章,这些文档还引起了广泛讨论甚至争辩,大家都觉得从这种文档式的知识分享中受益良多。由于KS最初的目的是在应用工程部门内部实现知识分享,因此许多文章在写作时没有介绍基础知识,并省略了一些较粗浅的细节。这对于内部交流没有影响,但是对于大部分客户,则跳跃性太大,无法参考。另外,我们对KS进行归类时发现,TestStand方面的文章很多,这一方面反映了国内使用TestStand的机会非常多,另一方面则体现出TestStand的功能非常强大,即使是NI工程师也无法了解其所有的功能,只能在遇到某个问题时查阅技术文档将某项功能开发出来。经常有客户抱怨阅读英文帮助文档非常浪费时间,而且不知道如何与实际项目相结合,询问是否有TestStand方面的中文专业书籍,然而让笔者很意外的是,在市场上竟没有找到一本系统性的相关书籍。编写本书的初衷很简单,就是结合笔者多年的项目经验和学习心得,对TestStand常用功能进行系统的归纳和总结,并希望将面对具体项目时如何建立框架的思想传递给读者。有时因为一个很简单的理由,就会选择坚持下来去做一件事。希望本书能够给应用工程部门的同事作为参考,更重要的是让数以千万计的TestStand开发工程师受益。 【本书的特点】 在笔者看来,最详细的TestStand资料莫过于其帮助文档,它涵盖了TestStand所有的知识点,所有操作细节都可以在帮助文档中找到相应的说明,因此本书只在一些重要的地方加以注释,提示读者某个知识点的更多细节可以在帮助文档中查阅到。笔者曾是NI公司官方TestStand高级课程的讲师,在多次授课的过程中,有幸与学员进行直接沟通,从他们的反馈中得以评估TestStand课程内容的选择、难易程度的控制、课程内容对客户实际项目的即时帮助、课程时间的安排等。培训课程中,原理介绍较多,实际案例偏少。以上都对笔者把握本书内容起到了很重要的指导作用。在本书编写过程中,笔者结合了近些年在项目开发过程中积累的经验,将各知识点的理论原理讲述与项目实际应用相结合,有相当大的篇幅是介绍项目开发中遇到的技术问题,以及推荐的解决方法,以帮助读者有效避开典型的问题,节约开发时间。同时,为了更好地说明某些较复杂的问题,书中附上了大量的例程,这些例程都经过精心设计和验证且不随意发散,以便读者更好地吸收和消化。在讲解重点章节时,对开发人员重点关心的一些内容,本书力求提供可供实际工程项目借鉴的范例和模型,这些范例和模型非常便于移植,如报表的自定制、自定义用户界面、混合系统并行测试模型、TestStand语言本地化、常见回调序列的使用、过程模型自定制、系统部署、性能优化等。本书分为基础入门和高级进阶两部分:基础入门部分主要通过系统的讲解来引导TestStand初学者入门,并对TestStand有一个较完整的认识,从而将TestStand运用于实际项目中;而高级进阶部分更多地介绍自定制方面的知识、TestStand面向对象模型、编程技巧和优化策略、深入理解TestStand开放式架构,从而使读者成长为团队的核心开发人员,并逐步从测试管理架构师的角度对项目的复杂度和需求进行评估。 【本书的目标】 本书的目标在于帮助读者快速掌握TestStand并最终成为TestStand开发专家。在通读本书后,读者能熟练掌握以下内容: @ 创建TestStand测试序列; @编写代码模块供TestStand调用; @修改常用TestStand配置; @ 在TestStand中进行调试; @执行并行测试; @ 合理实施用户管理策略; @根据项目需求自定制步骤; @熟练掌握回调序列的使用,深入理解过程模型; @开发自定义用户界面; @TestStand报表自定制; @ 将开发程序部署到目标系统; @优化测试系统,提高系统运行效率。 【本书的编写说明】 >>符号:将引导读者进入嵌套菜单项或通过一系列单击操作到达对话框的最终项。 粗体字:粗体字表示序列名称、步骤名称、参数名称、菜单项。 斜体字:斜体字表示变量、强调、对关键术语或概念的介绍,或者是占位符,必须输入的内容。 等宽字体:等宽字体表示使用键盘输入的文字和字符,如代码片断、语法示例。 注意:提醒读者需要注意细节的地方。 提示:一些操作技巧,可以使操作更有效。 警告:提醒读者特别留意,一些操作可能引起错误、数据丢失或系统崩溃。 【TestStand版本和安装说明】 笔者在编写本书时使用的是TestStand 2013版本,但书中大部分内容同样适用于更早期的TestStand版本。虽然在本书出版时,TestStand已经有了更新的版本,但是书中的思想、所使用的开发技巧基本是通用的,若TestStand内核有重大的改动,笔者将考虑对本书进行修订。在TestStand平台下可调用多种语言编写的代码模块组成测试序列,本书主要使用LabVIEW 2013、LabWindows/CVI 2013编写的代码模块,一个是图形化的平台,另一个是传统的文本编程开发平台。读者可以到NI公司官方网站下载TestStand、LabVIEW和LabWindows/CVI 2013软件。为了保证书中所有的示例都能正常运行,建议读者在个人计算机上安装上述开发环境。如果读者安装的软件是评估版(仅提供45天的试用期),试用期结束后将会失效,读者可以联系NI公司获取许可证。此外,读者可以到华信教育资源网(https://www.hxedu.com.cn/)下载书中涉及的示例和练习(范例资源,按章节分类)。 【插图和示例】 本书的示例和插图都是使用TestStand 2013版本完成的,运行的操作系统是Windows 7。 由于笔者水平有限,书中难免有疏漏之处,希望读者能够指正,也欢迎对书中的任何内容做评论。笔者更希望看到的是,通过本书搭起一座桥梁,在本书给读者提供参考的同时,通过读者相互之间的讨论激发对TestStand的交流热情,而这些讨论得到的收获能更好地应用于各自的项目之中,并从中受益。 编著者

目录

第1章 自动化测试展望 1.1 自动化测试 1.2 自动化测试系统 1.3 评估引入自动化测试 1.4 自动化测试趋势 1.5 标准自动化测试系统架构 第2章 走进TestStand 2.1 初识TestStand 2.2 TestStand常用术语 2.3 TestStand组件 2.4 熟悉序列编辑器 2.4.1 序列编辑器视图 2.4.2 序列编辑器主界面布局 2.4.3 TestStand重要路径 2.4.4 运行主序列 2.4.5 序列编辑器中的快捷键 第3章 TestStand系统和结构 3.1 TestStand思想 3.2 换一种方式执行主序列 3.3 TestStand开放式架构 第4章 动手创建序列 4.1 创建序列 4.2 步骤内置属性 4.3 使用任意模块适配器 4.3.1 合格/失败测试 4.3.2 数值限度测试 4.3.3 多数值限度测试 4.3.4 字符串测试 4.3.5 动作 4.3.6 应用开发环境 4.4 调用特定模块适配器 4.5 无模块适配器 4.5.1 声明(Statement) 4.5.2 标签(Label) 4.5.3 消息对话框(Message Popup) 4.5.4 流程控制步骤 4.5.5 同步(Synchronization) 第5章 TestStand数据空间 5.1 TestStand数据空间概述 5.2 变量 5.2.1 局部变量(Locals) 5.2.2 参量(Parameters) 5.2.3 文件全局变量(FileGlobals) 5.2.4 站全局变量(StationGlobals) 5.3 属性 5.3.1 步骤(Step)属性 5.3.2 运行时(RunState)属性 5.3.3 当前上下文(ThisContext)属性 5.4 表达式 5.5 数据类型 5.5.1 默认数据类型 5.5.2 自定义数据类型 5.5.3 使用容器传递数据给代码模块 5.5.4 数据类型匹配 5.6 工具 5.6.1 属性导入/导出工具 5.6.2 属性加载器 第6章 在TestStand中调试 6.1 TestStand执行窗口 6.2 在序列中调试 6.2.1 断点 6.2.2 单步执行 6.2.3 交互式执行步骤 6.2.4 与调试相关的工作站选项 6.2.5 Find工具 6.3 调试代码模块 6.4 序列分析器 6.4.1 分析序列文件 6.4.2 自定制序列分析器 第7章 TestStand常用配置 7.1 序列编辑器选项 7.2 TestStand工作站选项 7.3 搜索路径 7.4 配置模块适配器 7.4.1 LabVIEW模块适配器 7.4.2 LabWindows/CVI模块适配器 7.4.3 C/C++ DLL模块适配器 7.5 报表选项 7.6 数据库 7.6.1 数据库选项 7.6.2 数据库查看器 第8章 并行测试 8.1 并行测试概述 8.2 TestStand中的多线程结构 8.3 多线程过程模型 8.3.1 在新的执行中运行序列 8.3.2 并行过程模型 8.3.3 批量过程模型 8.4 数据空间的独立性 8.5 同步步骤 8.5.1 等待 8.5.2 上锁/解锁 8.5.3 自动协作 8.5.4 通知和队列 8.5.5 集合点 8.6 常用多线程测试模式 8.6.1 混合多线程模式 8.6.2 资源局部共享模式 8.6.3 主/从模式 8.7 使用并行测试的注意事项 8.7.1 竞争 8.7.2 资源冲突 8.7.3 死锁 第9章 用户管理 9.1 工作站选项用户管理 9.2 用户管理器 9.3 识别用户权限 第10章 自定义步骤 10.1 自定义步骤概述 10.2 创建自定义步骤 10.2.1 添加属性 10.2.2 添加子步骤 10.2.3 类型管理 10.2.4 创建代码模板 10.3 步骤模板 第11章 TestStand API 11.1 TestStand API概览 11.2 TestStand API的组织结构 11.2.1 继承性 11.2.2 包含性 11.3 使用TestStand API 11.3.1 在TestStand中使用TestStand API 11.3.2 在代码模块中使用TestStand API 11.4 监测序列执行状态 第12章 过程模型 12.1 过程模型概述 12.2 过程模型的结构 12.2.1 执行入口点 12.2.2 配置入口点 12.2.3 过程模型回调序列 12.2.4 引擎回调序列 12.3 解析过程模型 12.3.1 过程模型回调序列归类 12.3.2 模型插件(Model Plug-In) 12.3.3 过程模型支持文件 12.4 过程模型自定制示例 12.4.1 提示机制 12.4.2 修改默认回调序列 12.4.3 错误处理 12.4.4 修改结果收集 12.5 序列层级结构 第13章 用户界面设计 13.1 用户界面概述 13.2 TestStand自带用户界面 13.3 TestStand UI控件 13.3.1 管理控件 13.3.2 可视化控件 13.4 单执行用户界面的开发 13.5 用户界面消息(UIMessage) 13.6 多执行用户界面 13.7 加载配置参数 13.8 启动选项 13.9 菜单 13.9.1 LabVIEW用户界面菜单 13.9.2 CVI用户界面菜单 13.10 TestStand语言包 13.11 Front-End回调序列 第14章 报表自定制 14.1 修改结果收集 14.1.1 额外结果 14.1.2 自定义步骤 14.1.3 插入子属性 14.2 报表生成 14.2.1 属性标记 14.2.2 报表生成过程 14.2.3 通过回调序列修改报表 14.3 自定制样式表文件 14.4 报表格式对比 第15章 系统部署和性能优化 15.1 系统部署概述 15.2 系统部署的准备工作 15.3 部署过程 15.3.1 TestStand部署工具 15.3.2 部署过程中常见的问题 15.3.3 在目标系统上安装 15.4 优化系统性能 附录A 操作符/函数 参考文献

作者简介

编辑推荐

作者寄语

电子资料

http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=TN427450

www.luweidong.cn

下一个