自动化测试系统的软件架构

一.为什么要自动化测试系统

随着产品可测性设计和仪表程控制技术的不断完善和提高,自动化测试系统越来越广泛的被应用于从产品设计研发到生产制造验证的各个环节。自动化测试系统之所以风靡,是因为相比于手动测试系统,它具备以下优点:

* 测试速度快,测试效率高

* 重复测试的可靠性高,一致性好

* 测试操作简单,人为参与导致的差错率低

* 仪表利用率提高,测试成本和费用摊薄

由此可见,自动化测试系统是测试领域发展的必然方向。

二.什么是自动化测试系统

就自动化测试系统本省而言,它是一个复杂的软硬件集成系统,包括了以下主要元素(见图1):

*  控制器,即控制测试过程,测量仪表,被测单元的计算机及其扩展接口

*  测试仪表,即测试过程中调用的仪器仪表或是虚拟仪表的硬件部分

*  测试夹具及平台,即为某测试订制的硬件和机械工具以及辅助附件

*  被测单元,即被测试的对象

*  测试软件,即测试程序及调用的应用软件和数据库平台

图1自动化测试系统

三.自动化测试软件的功能

上述前四项我们可以看作是组成自动化测试系统的硬件部分,测试软件是运行在这些硬件上的,它需要具备和完成下述主要功能:

· 测试进程的管理和控制

· 测试仪表的远程控制和结果读取

· 测试夹具和被测单元的监控和配置

测试数据的自动分析,存储和上传

· 测试结果或者报告的显示,打印

四.为什么自动化测试软件要有一定的体系架构

如果将一个自动化测试系统比作人体,那么我们可以说硬件系统就是人的躯干:控制器好比大脑,仪表好比感官,夹具好比手脚等。软件系统就是人的神经系统,以及思维和智慧,是连接大脑,感官,躯体的内在逻辑体系。如果说人体的神经系统没有一定的体系,人类的智慧没有一定的逻辑,那么也就意味着人体是一个紊乱的系统。

针对不同的应用、多样的仪表、订制的夹具、专属的被测设备、复杂的硬件设计和连接,要实现上述完整和复杂功能,自动化测试系统的软件就必须具有一定的体系架构,以适应复杂多变的应用,以提高系统的鲁棒性和可移植性。

五.自动化测试软件的体系架构

具备一定的体系架构,是一个复杂过程发展的必然,如网络系统需要分层架构一样,我们也倾向于将自动化测试系统的软件架构构架在分层的体系上。下层为上层提供服务,这种服务相对上层而言是透明的。上层提供给下层相应的接口,以便下层获取执行所需的数据和驱动。分层的体系架构还有一个好处是,软件体系的标准化和规范化,便于后续的开发和积累。

基于多年的自动测试开发经验,我们提出了下述分层的自动化测试系统软件架构体系供大家参考(见图2):

图2分层的自动化测试系统软件架构体系

自上而下的四层分别是:顶端应用层(TopLeverApplicationLayer),高端测试序列层(High Lever Library Layer), 中端服务层(Middle Lever Servers Layer)和底端通信接口层(Low Lever Communication Layer)。下面我们自下而上介绍各层的组成和功能。

5.1底端通信接口层(LowLever Communication Layer)

该层作为整个软件体系的基础层,主要功能是驱动软硬件接口,为上层提供透明的I/O驱动服务。根据驱动类型的不同,通常我们将该层分成三部分,分别为:

·硬件I/O驱动类(Hardware I/O Driver Class), 该部分提供各种硬件接口的底层驱动。包括常用的仪表控制,测试夹具控制以及被测设备配置的总线和接口,如:GPIB,USB, LAN, VXI, RS232,Parallel,1394, RS485,GPIO,SPI,I2C等等。

·软件I/O驱动类(Software I/O Driver Class), 该部分提供主测试程序与辅助测试所需的应用软件的接口驱动,包括各类数据库接口应用。通常需要首先安装和配置相应的应用程序或者相应类型的数据库,然后基于API方式或者ActiveX/COM来驱动所需的软件。常见的应用包括:第三方软件的调用,如Xilinx iMPACT API;数据库驱动,如SQL Server 查询,读写等。这里有一个值得一提的应用软件接口就是VISA(Virtual Instrument Software Architecture),这个由NI/Agilent提供的应用软件,可以涵盖大多数类型的仪表硬件接口,也得到很多仪表公司的支持。应用该软件则无需关注底层硬件通道。

· GUI 驱动类(GUI Driver Class),该部分提供对应的编程软件构造的图形化界面底层函数,如表格,图表,对话框,复选框等基类。

该层函数是最基础的,提供上层透明的管道服务,通常而言,对于不同应用均保持一致驱动服务,对于应用层的用户不需要了解该层的内在机制,只需要知道该层的应用服务即可。

5.2中端服务层(MiddleLeverServersLayer)

该层具有承上启下的作用,如果再细分,我们可以将其分为两个子层,即虚拟子层和现实子层,关系像TCP/IP中MAC地址与IP地址的关系,一个IP地址可以对应不同的MAC地址,一个MAC地址唯一对应一个物理地址。虚拟子层的目的是为了给上层提供更透明的服务,现实子层则是为了更好的接收下层的服务。从下面更详细的介绍中,我们就能看出这两层的关系:

·仪表驱动类(Instrument Driver Class), 该部分提供各种仪表基于各种测试需求的仪表驱动指令集合。构建在硬件I/O驱动类基础上的该类,关注于各种仪表基于SCPI(Standard Commands for Programmable Instruments)标准的不同测试需求的应用组合。它无需了解实际的物理接口是什么,因为更底层的类提供了透明的信令通道,而侧重于某个仪表的控制编程。

· 虚拟仪表驱动类(Virtual Instrument Driver Class), 该部分基于仪表驱动类,提供了对更上层的一个透明的仪表类的驱动,例如示波器,无论是来自Agilent还是Tektronix, 只要是示波器,对于上层的应用而言,都是一致和统一的。这样的好处是上层应用无需关注下层仪表的替换。它的实质是一类仪表的应用集合。

· 夹具驱动类(Fixture Driver Class)与虚拟夹具驱动类( Virtual Fixture Driver Class)的关系和上述仪表驱动的关系是类似的,不同在于我们将对DUT的配置和操作一般也归于这两类函数,并按照一定的规则来合并虚拟夹具。

· 对于软件部分的虚拟,我们基于对数据的操作而建立,如程序下载,可以是用BST方式,也可以是JTAG方式。再如数据库的操作,无论数据库是哪种类型,读写和查询都是基础和必要的操作。

· 基于GUI的MEMU类是一类比较特殊的服务,它提供的是良好的人机交互界面。

一般而言,在有新的仪表引入,应用第三方软件调用或者说新的图形化界面需求时,我们需要对层相应的函数进行增加和修改。

5.3高端测试序列层(HighLeverLibraryLayer)

该层的功能主要有两个:

1.提供订制或者通用的测试子案,供应用层调用;这些测试子案,都是基于下一层服务而编译成的。

2.提供测试流程管理,如测试起始控制,测试项目选择功能等,这里是一个测试逻辑控制的部分。

在需要增加一个新的测试案例的时候,我们可以在原有的子案的基础上进行修改,以加快开发流程。测试流程的管理功能在一定程度上也可以看作是TestPlatform的构建,如果觉得自己没有能力来构建,也可以选择第三方的TestPlatform管理软件,如NI的TestStand。

5.4顶端应用层(TopLeverApplicationLayer)

该层的主要功能是根据不同的测试需求,配置测试应用的环境参数,选择下层的测试服务子案来完成测试。这里的配置包括:数据库的配置和选择,平台仪表的配置和选择,测试项目的配置和选择,测试流程的配置和管理等。一般而言,该层主要是写配置文件,调相应资源,选相应软硬件平台。

六.结论

构建一个好的自动化测试软件架构,能够标准化测试程序开发,节省应用工程师大量的底层编码时间,使得开发流程加快,开发质量提高。分层的自动化测试软件架构,是我们在大量开发实践中总结的一种行之有效的软件开发和管理体系,我们将进一步积累和完善这一体系。

 参考书目

《Agilent测试自动化工程师认证培训资料》

《设计下一代自动化测试系统》徐赟,技术市场工程师,NI中国分公司

作者简介

王冰泉,上海贝尔阿尔卡特朗讯股份有限公司,光传输工业工程部自动测试平台开发主管

徐敏,上海贝尔阿尔卡特朗讯股份有限公司,光传输工业工程部经理

自动化测试系统的软件架构(转)相关推荐

  1. 基于python的界面自动化测试-基于Python语言的自动化测试系统的设计与实现

    黄建军+李宥谋+刘婧+周欢 摘 要: 通过分析现代工业生产对自动化测试系统的要求,提出一种基于面向对象的编程语言Python构建的自动化测试系统.利用Python语言的高效.灵活和简洁等特点,结合Py ...

  2. 读《实战 GUI 产品的自动化测试》之:第二步,构建利于维护的自动化测试系统...

    转载自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting2/ 基石--IBM 框架简介 Rational Functi ...

  3. 嵌入式系统编程软件架构主要包括哪些知识?

    嵌入式系统编程软件架构主要包括哪些知识? (1)模块划分 (2)多任务还是单任务选取 (3)单务程序典型架构 (4)中断服务程序 (5)硬件驱动模块设计

  4. 针对B2B平台的接口自动化测试系统

    文章来源:公众号-智能化IT系统. 针对大部分的B2B系统,通过后台接口,例如http等方式交互.传统的黑盒测试难以测试出系统的细节问题.在了解交互接口的情况下,可以针对交互进行自动化测试,把控系统的 ...

  5. lua软件测试自动化,一种基于Lua脚本的嵌入式软件自动化测试系统及方法专利_专利查询 - 天眼查...

    1.一种基于Lua脚本的嵌入式软件自动化测试系统,其特征在于,所述系统包括:目标 测试系统及测试主控系统,其中: 目标测试系统包括: 标准化的软件接口 :用于与被测对象进行数据交换: Lua解析器:用 ...

  6. COMO自动化测试系统:build过程记录

    前言 同济大学计算机开放实验室的como自动化测试系统来源于CAR构件技术和Elastos操作系统(一个完全面向构件技术的操作系统) 项目地址:https://gitee.com/tjopenlab/ ...

  7. 手把手教你打造一个可视化接口自动化测试系统

    现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现数据通信的都 ...

  8. 关于自动化测试系统的想法

    ** 自动化测试的个人见解 ** 前几天,在世界银行上线的自动化测试平台有些问题,不得不继续加班. 问题是对test case 的存贮导致.因为前期代码是三哥的杰作,本来想将就用他们写的几千行的存储过 ...

  9. 光模块自动测试系统软件,光模块自动化测试系统

    目前业界最先进的光模块测试平台 OPM光模块自动化测试系统 一支持32位或者64位操作系统,包括XP,WINDOWS7,WINDOWS10.二人工测试需要测试人员具有很高的专业技术要求,测试效率低,容 ...

最新文章

  1. 人脸对齐--Face Alignment In-the-Wild: A Survey
  2. 二极管7种应用电路详解之四
  3. 数据库和缓存的双写一致性问题
  4. HoneyBadgerBFT:一个网络环境无关的Byzantine容错的分布式共识协议
  5. 《Python编程:从入门到实践》速查表
  6. 解决ORA-00257: 归档程序错误。在释放之前仅限于内部连接
  7. PCL中分割方法的介绍(2)
  8. OS开发(Objective-C)常用库索引
  9. cookie里面用到的关键字_Java的理解角度-关键字篇
  10. linux视频补帧,SVP补帧软件最新版-SVP补帧软件免费版-QQ下载站
  11. 黑马程序员——银行业务调度系统
  12. MathType 7试用版写论文科研必备神器
  13. 【人工智能】“深度学习”这十年:52篇顶级论文带你走完人工智能之路
  14. 背景透明及引发的文字透明问题
  15. 二元函数泰勒公式例题_泰勒公式与函数展开的操作方法
  16. 心力哲学——艰难多变环境下快乐、自由与生存力的源泉(二)
  17. C++ 侯捷系列视频汇总
  18. 一个案例教会你:全面的数据分析应该怎么做?
  19. 可视化编程语言_可视化编程语言影响图
  20. Python3+scrapy 爬取喜马拉雅音乐 音乐和歌名 最简单的爬虫

热门文章

  1. CentOS 7 服务器配置NTP服务(chrony)
  2. JavaScript异步编程
  3. (C语言篇)static关键字
  4. 谈DevOps研发运维一体化解决方案PPT制作
  5. SN74LVC2T45 电平转换 4通道 3.3v 5v
  6. 腾讯企业邮箱怎么样?几大收费企业邮箱对比测评
  7. 淘米手套游戏CTO潘辉《如何提高手游开发的效率》
  8. base64图片解码生成图片,上传到指定服务器
  9. H3C Telnet服务配置
  10. 2022年618活动什么时候,客厅卧室数码家电当贝投影仪值得看