自动测试仪

2024-09-26

自动测试仪(精选12篇)

自动测试仪 篇1

摘要:设计一款简易电阻筛选测试仪, 以TI公司生产的MSP430F449单片机为核心, 采用A/D功能进行电阻信号的采集、处理, 以矩阵键盘实现输入电阻元器件的筛选条件。并通过LCD12864完成阻值筛选测试直观显示, 实现语音自动阻值播报, 并提供了友好人机交互界面, 本设计实现了具有精度高、可自动转换量程功能的电阻筛选测试仪, 易于实现。

关键词:MSP430F449单片机,矩阵键盘,电阻筛选测试仪

1 引言

设计一款制动自动电阻筛选测试仪, 测量量程为100Ω、1kΩ、10 kΩ、10MΩ四档。测量准确度为±1%, 能自动显示小数点和单位, 测量速率大于5次/秒。100Ω、1kΩ、10 kΩ三档量程具有自动量程转换功能。即在进行电阻筛选测量时, 用户通过键盘输入要求的阻值和筛选的误差值;测量时, 具有自动筛选功能, 仪器能在显示被测电阻阻值的同时, 给出该电阻是否符合筛选要求的指示, 设计结果表明, 效果比较理想。

2 方案论证与比较

2.1 系统总体设计方案

以TI公司生产MSP430 F449单片机为核心, 外围电路可分为电源模块、数据采集模块、人机交互模块、打印模块、声光报警模块、语音模块、辅助模块等。数据采集模块负责采集电阻阻值;人机交互模块包括键盘输入、12864液晶显示;处理器MSP430F449负责协调整个系统的数据处理, 人机交互等。总体设计框图如图1。

2.2 芯片的选择

采用AT89C51系列单片机编程自由度大, 但其内部总线是8位的, 受其结构本身限制很大。

MSP430系列单片机是16位单片机。具有功耗低, 功能强大, 运行速度快, 接口丰富等特点, 具有简洁的指令结构, 在低功耗方面优越之处是其他系列不可比拟的, 因此MSP430更适合应用于仪器、仪表类产品中, 其基本架构是16位, 同时在其内部的数据总线经过转换还存在8位的总线。

基于上述分析, 考虑到设计时对A/D转换的精度要求, 故选择MPS430F449单片机作为控制主芯片, 既方便程序编写和烧录, 又方便控制功能快捷实现。

2.3 键盘模块

采用独立键盘接口设计时每个按键需要占用一根输入口线即占用一个I/O口, 独立式按键电路配置灵活, 在需要按键较少场合, 会获得较好实用效果。

采用矩阵键盘接口设计, 在需要按键较多场合很实用, 采用常用扫描法对键盘进行识别优点很显著, 缺点也是由于需要不断地扫描, 所以这种设计容易消耗较多的系统资源。由于考虑到本设计需要使用多个按键, MSP430又有丰富的接口, 故可以选择此键盘

2.4 显示模块

LCD12864液晶显示具有可视面积大, 画面效果好, 分辨率高, 抗干扰能力强, 显示内容多, 字码显示柔和, 串口通信, 利用的I/O口少等特点。只要用一块LCD12864显示屏就可以显示设计要求的全部内容。此外, 采用LCD12864液晶显示有着良好人机界面, 控制简单, 编制易懂中文分级菜单界面, 优势明显。

3 系统硬件设计

3.1 硬件系统工作原理

基于欧姆定律, 通以恒定的电压, 用A/D功能采集基准电阻上的分压信号, 转换成数字信号, 得出基准电阻的分压, 然后通过编程控制单片机计算出待测电阻的分压, 求出电流, 从而求得待测电阻阻值, 送入显示模块显示, 用继电器、三极管通过程序来控制档位的切换。

3.2 单元电路的功能设计与分析

3.2.1 电阻测量模块的设计

用四个继电器、四个三极管结合编程实现电阻的测量, 根据阻值控制档位的切换。采集到电阻的分压, 使用电压跟随器连接到单片机的A/D输入端。

3.2.2 按键模块的设计

采用矩阵键盘接口设计, 用键盘扫描法。当按键按下时, 该输入线电平会发生相应变化, 通过检测电平状态就可以判断哪个键被按下, 电路图如图2。

3.2.3 声光报警模块的设计

在筛选器件时, 若达到要求, 蜂鸣器会发出“滴滴”的报警声、指示灯闪烁进行提示。电路图如图3。

4 系统软件设计

4.1 程序总体流程图

在主程序模块中, 需要完成显示模块、按键模块、电阻采集模块、警报模块、各参量和接口的初始化以及中断、计算、循环等工作, 主流程图如图4所示。

4.2 筛选模块流程图

删选流程图如下图5所示:

5 测试结果与分析

5.1 基本部分测试与分析

运用公式:绝对误差=|测得阻值-电阻实际值|。

相对误差=|测得阻值-电阻实际值|/电阻实际值。

测试数序如表1所示, 经测验, 设计此款电阻测试仪误差很小。

5.2 设计展示及分析

通过上述设计, 完成了样机整体设计, 测试效果比较理想, 如图6所示。

参考文献

[1]沈建华, 杨艳琴.MSP430系列16位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社, 2008.

[2]杨媛如, 徐熙平.小电阻精密测量系统的设计[J].电子测量技术, 2010, 3 (304) :16-18.

[3]闫方举, 刘培顺, 杨卫平.基于MSP430单片机Slope功能的电阻测量[J].科技信息, 2011, 01 (08) :451-452.

[4]谭成豪, 许建明.试述51系列单片机矩阵键盘编程[J].科技传播, 2011, 3 (906) :197-198.

[5]李志广, 李晓泉, 淮俊霞.中文图形12864点阵液晶显示模块与51单片机的并行接口电路及C51程序设计[J].现代显示, 2008, 90 (07) :41-44.

自动测试仪 篇2

以前我时常反思,测试组的工作多吗?我的回答是多。测试小组的工作成果的好坏和工作任务的多少成正比吗?最终的回答却并非成正比。我们的测试工作成果往往并不理想,甚至是差。那么为什么事倍功半?这问题很难找到清晰的答案。

参与了外部培训之后,发现了自己在对测试的工作有了新层次的理解。对之前工作成果差的问题思考也有了新的方向。“测试的最高境界是找出所有BUG吗?不是,测试的最高境界是不需要进行测试。为什么不需要进行测试?是因为所有的问题都已经在软件各阶段中介入的测试工作中给预防解决了。由此引申,测试的定位并不是找出BUG,而是预防BUG。” 这是我培训报告中的一部分。如果测试的出发点只为是发现BUG,那么测试工作将会如何?辛苦的发现了一个BUG,之后开发针对性的修正了这个BUG,再回重新测试的过程,又会有多少人会重新被卷入,又会有多少BUG因此而产生,又需要花费多少时间,答案可想而知。这就是我们忙又不见成果的主要原因。所以改善这个问题的出发点就是改变对测试工作的认识——测试的目标并不是为了找出BUG,而是预防BUG的出现。

如何理解正确的测试目标是预防BUG的出现。首先可以从软件测试的阶段划分来看。软件测试的阶段划分为需求、设计、编码、测试、验收。但按此划分来定位测试是错误的。假如在编码阶段完成后测试出的BUG属于设计问题(这也是我们测试工作中经常遇到的情况),那么我们已经编码完成的产品就要面临着伤筋动骨的修改,这样的修改会带出多少个新的BUG出现?为这个修改我们又要重复的测试我们的新提交版本多少次?想必都有很深刻及惨痛的答案了。由此可以说明需求设计阶段的测试比编码阶段测试重要的多。在需求上出现的BUG就很有可能足以推翻整个产品。那么如果在需求设计阶段测试人员就能发现产品设计的BUG,那么就可以避免了因此而衍生的产品BUG,达到预防BUG这种测试理念的目标。

那么又如何能做好以预防BUG为目标的测试工作。“测试工作不只是一种技术,也不仅是一种活动。测试工作的成功也不能取决于测试成果,测试的BUG越多并不能证明测试工作做的好,所以由此引申,测试工作要站在团队的高度来开展,在团队中做好测试,而不是在测试小组中做好测试。”这是我培训报告中的另一部分。要做好以预防BUG为目标的测试工作,首先要尽早的参与到项目中,其次就是需要各部门及小组的大力支持,与业务、项目、代码人员共同形成团队,在团队中影响其他小组提高产品质量,更好的完成以预防产品出现BUG为目标的测试活动。

总结来看,我个人觉得拥有这样的测试理念可以解开我们的疑惑,带领我们走出目前的困境。

二、自动化测试迷失

随着工作、发展、提高等等多方面的需要,我接到了开展自动化测试的研究工作。概念上来说自动化测试是一种测试度量体系。现实点来说,自动化测试可以为我们自动、无误的运作完成大量且需要重复执行的测试用例。这是多么让人振奋的概念。甚至可以解开我上文所提到的有关测试工作的困惑。我很兴奋的去展开研究目前最流行的自动化测试工具之一QTP。甚至设计出了管理中心的三个重要功能的自动化测试脚本,并且运行无误在自动化测试讨论会上兴奋的向大家演示。之后还用工具按键精灵设计出了前端的A类测试用于实际的测试。但很让人沮丧的是最终这些脚本全被遗弃在电脑硬盘的角落,再也没派上用场。为什么?因为他们维护起来很困难,因为他们编写它们的时间与实现的价值并没有超过手工测试。这就是自动化测试吗?怎么不可行啊,我有点不太相信这种结局,所以我再一次困惑了。

外部培训的老师这样告诉我们:“我们并没有理性的看待自动化测试,自动化测试并不是我们看上去的那样美。首先自动化测试能直接的节约成本、让测试人员变轻松的想法是一个误区。因为原本用于手工测试的时间用来编写及维护测试脚本了,而完善的自动化测试脚本编写或维护的时间很可能会超过手工测试的时间。再者自动化测试脚本用例是测试人员所编写,自动化测试只能是沿着该测试人员的“足迹”前进。所以用自动代测试来发现更多软件产品问题的想法也是一个误区。其次并不是所有的测试都能自动化,测试的自动化也不一定是解决问题的最佳手段。”

听完这些,原本困惑的我又多了份惊讶,一方面惊叹产述的这些状况与我之前的自动化测试的试行失败是相近的。另一方面又猜疑这自动化测试该不会像共产主义社会那般吧!随着培训内容的展开,我终于解开了困惑,何为理性的看待自动化测试。

“如同不能指望原始社会拥有了汽车就能进入现代社会一样,自动化测试工具永远都不能主导测试实现自动化”(出自国信培训文档)。我们错误的把自动化测试看成了一种测试工具或测试手段。自动化测试是一种理念,它要发挥它真正的作用就需要这种理念转变为一种体系——自动化测试体系。

“引入自动化测试的前提是已经建立了合适的自动化测试体系,如果没有这些,而片面的追求自动化,无异于缘木求鱼。自动化测试体系是指能够适用某种环境的测试工具、过程、人员结构、方法的综合,运用于整个项目团队”。回到我之前的对QTP研究失败的原因,首先我开始就觉得因为研发的设计、编码实现并没有考虑到自动化,而导致自动化脚本的编写非常吃力。比如产品页面项目的命名不规范,导致自动化测试工具很难捕捉这些页面对像。其次就是测试脚本的方向迷失,我在研究QTP的时候就发现了这个问题。随着我一点点的在编写着脚本,我不断的发现自己在的测试脚本的编写方向上出现了迷失。这段脚本我编写的目标本来是功能测试,但随着我的补充却接近于开发级的单元测试。而另一段本属于功能性测试的脚本,因为功能的重点需要,我又补充了部分脚本导致整个测试脚本测试目标变成了完整关联性测试。而做为单元测试的脚本却并没有在开发的角度上来设计,根本做不到函数、类等代码级的测试,根本不能达到要求。做为完整性测试的脚本也无法模拟接口功能中几何倍数级的各种条件输入对应的输出测试。而功能测试脚本算是硕果仅存,但随着开发对产品的代码大规模调整(这些调整当然不会考虑对已经实现的脚本的影响)而直接“报废”。如果需要脚本继续工作,那么就要花时间来修改调整它。这些脚本的结局又再一次可想而知了。

所以首先我们要理性的看待自动化测试,不要片面的去追求它。对不同的项目要开展不同自动化策略。参考如下

(1)评审项目中特定的部分作为应用自动化的候选对像。

(2)从项目中高度冗余的任务或场景重点考虑自动化。

(3)将乏味且人工容易出错的工作重点考虑自动化。

(4)将回归测试经常需要“照顾”到的部分重点考虑自动化。

(5)自动化开始时要首先关注开发成熟、理解透彻、相对稳定的且不易变的部分优先考虑自动化

软件测试自动化框架 篇3

自动化测试在过去的20年中已经有了很大的发展。最初的测试工具只提供了简单的捕捉/回放功能:记录并播放键盘按键,然后捕捉和比较屏幕。这些测试方法虽然最容易应用,但是几乎不可能维护。录制回放工具最终被功能和灵活性更强的测试脚本工具代替。

但是,脚本工具也有自己的问题。他们实现起来需要很强的开发技术和经验,同时,不确定它们是一定可以维护的。更糟糕的是高度个性化的脚本工具技术.加上没有什么文档记录,最后的结果经常是重写包含成千上万行代码的脚本库,成本开销巨大。

后来,一种新的自动化测试产品——自动化测试框架出现了,它可以减少实现和维护的成本,使测试人员可以把精力集中在应用程序的测试用例设计上,而不是开发测试。

常用的自动化测试框架

所谓自动化测试框架,是由一些假设,概念和为自动化测试提供支持的实践组成的集合。接下来将描述一下几种比较常用的自动化测试框架:

1.录制/回放的神话

每一家自动化测试工具厂商都会宣传,他们的工具非常容易使用,没有技术背景的测试人员只要简单录制测试的操作过程,然后播放录制好的测试脚本,就可以轻松自动化所有的测试。这样的说法是非常不负责的。

现在我们来分析一下自动化测试不能单单只依靠录制/回放来完成的原因。

通过录制建立的脚本,基本上都是用脚本语言以硬编码的方式编写的,当应用程序变动时,这些硬编码也随之需要更改。因此,维护这些录制好的脚本,成本是非常高的,高到几乎不能接受。

所有的测试脚本都必须是在应用程序可以正确执行时才能录制,如果在录制过程中发现缺陷,测试人员必须向缺陷管理机制报告,等到该缺陷修正了,整个录制脚本的动作才能继续下去。在这样的情况下,如果仅仅依靠录制脚本来进行测试,效率是十分低下的。

同时,这些录制好的脚本不是非常可靠,甚至在应用程序完全没有变动的情况下直接播放,也可能因为一些意外状况而无法执行。如果录制脚本时测试人员使用了错误的脚本语言,则脚本就必须重新录制。

综上所述,通过录制的方式来建立自动化测试脚本的方式看似容易,但实际上会遇到下列问题:①测试人员大多不具备技术背景,难以完全掌握测试工具;②应用程序必须达到一定的稳定性,才能开始录制测试脚本;③录制的测试脚本与测试数据耦合得太紧密;④维护自动化测试脚本的成本非常高。

因此,仅仅依靠录制/回放来完成自动化测试是远远不够的,我们应找到一种能解决上述问题并能很好地执行自动化测试的方法。

2.数据驱动的自动化测试框架

数据驱动的自动化测试是针对上述开发与测试之间紧密耦合问题提出的测试方法。通过建立测试与开发定义的软件元数据的关联——元数据映射表.在测试与开发之间建立松耦合关系。不论测试人员修改测试脚本,还是开发人员修改软件,只需要修改元数据映射表,既可以满足测试与开发同步进行。这样,可以减少测试脚本调试的工作量,更好的实现自动化测试。

什么是数据驱动的自动化测试框架

数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、Excel文件、Csv文件、ADO对象文件等)中读取输入,输出的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。其中,这些变量被用作传递(输入/输出)用来验证应用程序的测试数据。在这个过程中,数据文件的读取、测试状态和所有测试信息都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里,测试脚本只是一个“驱动”,或者说是一个传送数据的机制。

数据驱动脚本

数据驱动脚本就是那些和应用程序相关联的脚本。这些脚本通过录制或手工编写写进自动化工具私有的语言.然后对其中的变量赋予合适的数值,作为测试数据的输入。这些变量作为一些关键应用程序输入的媒介.使脚本能通过外部的数据来驱动应用程序。

1)可变数据,硬编码组件标志

这些数据驱动的脚本经常包含硬编码的数据.有时是一些窗口组件中非常脆弱的识别字符串。出现这种情况时,脚本很容易由于程序的更改而失去作用。

2)高度技术化的、重复的测试设计

数据驱动脚本的另一个共同特点就是,所有在测试设计上所作的努力最终都体现在自动化工具的脚本语言中,或者复制到手工和自动化测试脚本中。这意味着每个和自动化测试开发或执行有关的人必须对测试环境和自动化工具的编程语言非常精通。

优点与缺点

1)优点:①在应用程序开发的同时就可以同步建立测试脚本,而且当应用功能变动时,只需要修改业务功能部分的脚本;②利用模型化的设计,避免重复的脚本,减少建立或维护脚本的成本;③测试输入数据,验证数据和预期的测试结果与脚本分开.存放在另外的数据文件里.利于测试人员修改和维护;④透过判断功能回传值是“True”或“Fslse”,可作错误处理,增加了测试脚本的健壮性;⑤自动化测试开发人员创建数据驱动的测试过程.测试员创建测试数据;⑥在测试的过程中收集测试结果,并在输入数据的语境中表示测试结果,这样可以简化手工结果分析。

2)缺点:①对自动化测试工具里的脚本语言必须非常精通;②每个脚本都会对应多个数据文件,这些数据文件需要根据脚本的功能类别存放在各自的目录中,增加了使用的复杂性;③测试人员除了需要根据具体测试数据维护相应的测试计划,还要将这些数据写入各个需求不同的数据文件中;④在编辑数据文件时,必须注意测试脚本所要求的传输格式,否则会在处理脚本时产生错误。如由专门的技术人员对其进行维护,依赖于数据驱动脚本的自动化测试框架实现起来更简单、快捷。但是,维护工作困难,而且还需要保持这种数据驱动的模式,这样,即便长时间的维持也会导致失败。

3.关键字驱动的自动化测试

关键字驱动的自动化测试(也称为表驱动测试自动化),是数据驱动自动化测试的变种,可支持由不同序列或多个不同路径组成的测试。它是一种独立于应用程序的自动化框架,在处理自动化测试的同时也要适合手工测试。关键字驱动的自动化测试框架建立在数据驱动手段之上,表中包含指令(关键词),而不只是数据。这些测试被开发成使用关键宇的数据表,它们独立于执行测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充。

关键字驱动的自动化测试的整个过程所包含的功能都是由关键字驱动的,关键字控制了整个测试过程。下面以“Post

a Payment”为例.说明这种自动化测试方法是如何运作的(表1)。

上表的COLUMN1里的每一个关键字都与一个应用脚本有关,而其他栏标识的是该脚本所要传入的参数。事实上,按照这个表格里所描述的测试用例.测试人员也可以手工实行这个测试用例。

图1以表1所描述的测试用例为例,说明了整个关键字驱动的自动化测试的运作机制:

1)测试人员会以ExceI表格建立如表1所示的测试数据文件,如KeyWord_Web.xls;

2)会有一个驱动测试脚本启动整个测试的进行,包含一些初始化的工作,如Driver脚本;

3)Controller脚本包含负责解析整个测试数据文件的关键字,以便决定运行哪一个应用脚本;

4)应用脚本实际执行每个测试动作,并使用表1中其他栏里的参数,执行完后将结果回传给Controller脚本,当Con-troller脚本执行到最后一行,整个测试用例结束执行。

需要注意的是,虽然这种自动化测试方法同时适合手工和自动执行,但并不意味着只要应用程序准备好可以执行,这些测试就能自动地执行。表1中的记录很容易被测试人员理解和执行,但是,除非我们提供给它,自动化框架不知道记录中对象的任何信息。

优劣分析

关键字驱动的自动化测试框架是一种截然不同的思想,它把传统测试脚本中变化的与不变的东西进行了分离,这种分离使得分工更明确,并且避免了它们相互之间的影响。 这种模型的开发和实现与传统的测试流程相比可能是困难的,最耗时的,因为,我们正在努力地将我们的测试和自动化工具以及应用程序本身的变化完全隔离开来。为了实现这个目标,最重要的是要增强自动化工具所提供的组件功能,例如,错误纠正、避免和数据同步。但是这样的投资是一次性的,一旦开发结束并投入使用,它给我们带来的效益是巨大的,是自动化测试框架中最容易维护和使用的,而且可以反复运用于各种应用中,长期发挥作用。

另外,现在已经有一些符合需求的商业化产品可供使用,减少了实现这种框架的困难。利用关键字驱动的自动化测试框架,测试人员不需要录制测试脚本,而是设计测试脚本。

4.混合的自动化测试框架

结合以上几种自动化测试框架的比较,目前最为成功的自动化测试框架应是综合使用数据驱动和关键字驱动的自动化测试框架:以数据驱动的脚本作为输入,通过关键字驱动框架的处理得到测试结果,完成自动化测试过程。这样可以使数据驱动的脚本利用关键字驱动框架通常所提供的库和工具。这些框架工具可以使数据驱动的脚本更为紧凑,而且也不容易失败。

关键字驱动的自动化测试框架模型

下面将介绍一种以关键字驱动自动化测试框架思想为指导的自动化测试实现方案——关键字驱动的自动化测试模型,它是由SAS Institute的Carl Nagle开发的。图2描述了该测试模型的结构。

这个模型主要由核心数据驱动引擎、组件函数、支持库和应用映射表组成。自动化测试首先由初始脚本开始执行,这个脚本把高层测试表传递给高层驱动器,高层驱动器在处理这些表的过程中.遇到中层测试表后就调用中层驱动器,中层驱动器处理中层表时也作类似的处理。当低层驱动器处理低层表时,它尝试着使应用与测试保持同步。当低层驱动器遇到对某一个组件的低层关键字组件时,它判断这个组件的类型并调用相应的组件函数模块来处理这个指令操作。所有这些元素都要依靠映射表中的信息,它是自动化测试模型和被测应用程序的桥梁。

应用映射表

应用映射表是自动化测试模型中最关键的组件之一。在进行测试设计之前,测试人员首先对应用中的每一个对象定义一套命名规范,并利用映射表把这些名字和自动化工具识别的对象名联系起来,使工具能准确地定位和操纵对象。我们的测试脚本只需进行单点维护。在上面的例子中,如果按钮的名字或显示文字发生了变化,那么脚本中所有涉及这些名字的地方都要进行修改。如果我们建立这样一个映射.用逻辑对象SavePushButton表示真实的确认保存的按钮对象,那么这个例子就可以写成“Click SavePushButton”。当按钮的名字或显示文字改变时,只需要快速修改一下映射表中对应的识别方法就可以了,而不用修改脚本(表2)

组件函数

组件函数是实现用户对界面对象操作指令的函数,一个组件对象的类型对应一个组件函数库。例如对于一个文本框对象.测试人员可能会对它执行多种操作:输入文本、验证文本框的值、验证文本框的某些属性等,实现这些操作行为的函数就被放在文本框的组件函数库中。一般的测试工具都提供了这样的函数,而我们可以在其中加入额外的代码来检测错误、纠正错误和帮助同步,这类代码是实现无人职守的自动化测试所必需的。

组件函数相当于在应用和自动化工具之间提供了一个隔离层.如果没有这个隔离层.自动化工具本身的改变或提高就会影响已有的脚本.但是有了组件函数,我们可以增加一对修补代码来适应这些变化,转移对测试的破坏。组件函数关键字和它们的参数构成自动化模型最低层的词库.了解了低层词库和映射表,就可以建立在它们基础之上的测试表。

测试表和核心数据驱动引擎

测试表分低层、中层和高层。低层测试表指定了测试的每一步指令的细节,这些指令都是直接作用在界面对象上的,是无法再细分的指令。中层测试表把低层测试表组装起来执行更多有用的任务。同一个低层表可以用于多个中层表,所以我们应该开发尽可能少的低层表,然后把它们按照不同的目的组装起来.实现最大的重用性。同样的,高层测试表把中层表组装起来,形成一个测试循环,每个循环都是完整的,可以定制不同类型和数量的测试。

例如打开网页、登录。关闭网页这3个动作可以用3个低层表来表示,每个表定义了实现相应动作的具体步骤,所以低层表又叫做步骤表。低层表中使用了映射表中定义的对象名.和由组件函数定义的低层关键字词库。表3是一个实现登录动作的低层表。而这个表示“登录”的低层表关键字很可能会出现在“验证错误登录”。“验证正确登录”、“验证空白登录”等中层表中,这些中层表合起来构成了“验证权限”高层表。

对应于以上这3个测试表.核心数据驱动引擎相应地分成了高层驱动器.中层驱动器和低层驱动器。高层驱动器读取高层表的每个记录,如果遇到中间表关键字。就把这个表传递给中层驱动器,依此类推,直至到达低层表,低层驱动器调用关键字词库中的低层指令所对应的组件函数来完成最后的执行。最后要说明的是这样一种层次结构并不是固定不变的.可以根据实际应用情况进行调整。

支持库

支持库是一些程序和工具,例如文件处理、字符串处理、缓;中处理、数据库访问、日志记录工具等,它们为自动化模型提供最基础的支持。

结语

导弹部件电池自动化测试仪的研制 篇4

目前在部队某型号导弹的部件电池测试过程中, 号手手动插拔短接电缆次数较多, 影响了测试效率, 同时也容易出现人为误操作, 造成测试设备甚至部件电池的损坏;另一方面, 测试过程中需要记录的数据较多, 都是操作号手人工记录, 并且测试数据不能复现, 在记录过程中难免出现误读、误判。为了防止人为原因造成设备损坏, 提高测试效率, 减小测试误差, 防止数据误读, 方便测试数据存取, 利用较为成熟的嵌入式PC/104计算机自动控制与测试技术, 将现有的导弹部件电池测试仪进行了自动化改进, 研制了某型导弹部件电池自动测试仪, 实现了导弹部件电池的自动化测试, 并实现了数据的自动判读, 减少操作号手的工作强度, 有效地提高了测试效率, 减小了测试误差, 方便测试数据的读取, 解决了目前部队部件电池测试过程中遇到的技术难题。

部件电池测试简介

某型号导弹部件电池测试仪面板如图1所示。

部件电池测试分为电阻测量和绝缘测量两部分, 通过拨动开关选择相应的测试内容, 根据测试流程操作号手通过用短接电缆连接相关的被测点, 在四位一体的LED数码管上显示所测量点的阻值, 通过与技术要求值比较, 判断所测量点的阻值是否符合要求, 从而得到所测的部件电池是否达标。在测试过程中号手插拔短接电缆次数较多, 影响了测试效率, 同时也容易出现人为误操作, 造成测试设备甚至部件电池的损坏, 需要记录的数据也较多, 都是操作号手人工记录与判读, 因测试数据不能复现, 在记录过程中难免出现误读、误判。为了防止人为原因造成设备损坏, 提高测试效率, 减小测试误差, 防止数据误读, 方便测试数据存取, 将现有的某导弹部件电池测试仪进行了自动化改进。

系统硬件设计与实现

根据导弹部件电池自动化测试仪的总体功能要求, 结合该导弹部件电池及其测试设备的工作原理和特点, 利用较为成熟嵌入式计算机系统、自动控制技术和智能检测技术, 确定了基于PC104的导弹部件电池自动化测试仪的硬件结构, 如图2所示。

导弹部件电池自动化测试仪以嵌入式PC/104计算机系统为平台, 在此基础上扩展了五种功能模块:动态接入控制模块、信号调理模块、信号采集模块、系统自检模块、内部电源智能控制模块。系统硬件采用模块化设计, 将大大减小系统的体积, 提高系统的集成度和可靠性, 整个硬件系统功能模块图如图3所示。

动态接入控制模块的作用是针对所需测量的信号数量多、部分信号对测点干扰要求严格等问题, 根据设备的运行状态和工作流程, 通过通道选择控制相关信号测点动态接入信号采集功能模块, 无关测点和测试仪没有电气连接, 而且不会出现多组回路 (多参考地) 的同时接入, 实现对设备状态信号的无负载动态接入, 杜绝干扰的影响。

信号调理部分根据被测信号的技术参数、系统安全性能和后续信号采集部分的技术要求, 对监测信号进行变换、隔离、滤波等处理, 以适应信号采样部分的不同技术要求。

数据采集部分根据信号的技术参数的不同, 采用不同的采集方法, 根据设备的运行状态和工作流程, 适时地对不同信号分别进行采集, 并转换为计算机系统所能识别的数字量, 为部件电池自动化测试仪的在线分析、数据判读提供事实数据。

系统自检模块是为部件电池自动化测试仪提供激励信号源。在系统进行自检时, 自检激励信号才通过通道选择接入自动测试系统, 同时外部输入通道被断开, 既保证了系统自检覆盖范围, 又不会影响被测设备。

内部电源智能控制模块主要是为系统提供工作电压和对内部电池监控管理。系统供电分为两种方式:220V交流供电和内部电池供电, 两种方式根据实际情况自动切换, 方便仪器的使用, 减少环境条件对测试的影响, 同时也有效防止突然断电对测试设备以及被测设备的损坏。根据内部电池电量的多少, 适时地对其进行充电, 当电量过低时发出报警信号。

系统软件设计与实现

在对导弹部件电池及其地面测试设备的工作原理和特点进行深入分析研究的基础上, 根据部件电池自动化测试仪的功能需求和实际测试的工作流程, 结合硬件系统设计, 将系统软件划分为以下几个功能模块, 如图4所示。

软件系统的数据采集模块主要包括信号动态接入控制、电阻测量采集和绝缘测量采集等子模块, 完成导弹部件电池X路信号的数据采集, 并把这些数据记录送入PC104嵌入式系统, 为测试系统提供实时数据。该软件模块是软件系统的底层软件, 与硬件系统配合为部件电池自动化测试系统提供数据源, 通过动态接入控制和中断机制, 可有效压缩冗余数据。

数据分析处理模块主要包括运行状态识别、异常信号检测和数据超限报警三个子模块, 主要任务是根据所采集到的数据判断出导弹部件电池测试仪当前的运行状态是电阻测量还是绝缘测量, 并启动异常信号检测模块, 若检测到数据超限即表示有异常信号产生, 则启动数据超限报警信号。

电源控制模块主要包括供电方式转换、电池电压监测报警和电池充电控制等子模块, 主要根据测试现场的实际情况完成供电方式的转换, 对内部电池电压进行实时监测并根据电池电压完成对电池的充电功能, 当电池电压过低时发出报警信号。

系统自检模块包括电阻测量自检和绝缘测量自检两个子模块, 通过自激励—自测试的方法实现对系统自身的功能检测, 确保系统自身硬件的可靠性, 保证系统在无故障状态下工作。

该系统的软件设计采用模块化设计思想进行设计, 主要由主程序、测试仪自检子程序、绝缘测量子程序、电阻测量子程序、声光报警子程序、电源智能管理子程序以及LCD触摸显示子程序等组成。为了有利于程序结构化, 主程序采用C语言编写。系统测试程序流程如图5所示。

结束语

本文研制的导弹部件电池自动测试系统工作在Windows平台上, 充分贯彻模块化、结构化的思想, 保证软件具有良好的可读性、可移植性;采用可视化编程技术实现以友好的图形界面与用户交互, 界面简洁明了, 人机交互功效高。研制完成后的系统面板示意图如图6所示。

导弹部件电池自动测试仪采用先进的自动测试与控制技术, 使得测试时间大大缩短, 提高了部队战斗力, 具有重大的军事意义;系统采用成熟的嵌入式计算机技术和方便可靠的触摸显示技术, 具有开发周期短、造价低廉、稳定性好、可靠性高等特点;采用成熟的PC/104控制技术结合先进的系统总线技术, 该系统还具有使用灵活、操作简便、界面友好、实用性强等特点;系统硬件和系统软件均采用模块化设计思想, 便于系统维护管理, 可扩展性和可移植性强。经过在本单位实验室的多次试验和某导弹旅测试单位多次试用, 证明导弹部件电池自动测试仪的研制, 实现了导弹部件电池的自动化测试, 并实现了数据的自动判读, 减少了操作号手的工作强度, 避免了人为原因造成设备损坏, 提高了测试效率, 减小了测试误差, 防止数据误读、误判, 并且能够实时地将测试数据进行保存, 方便测试数据的读取, 其性能稳定可靠, 操作使用方便, 可以有效延长导弹武器系统使用寿命、缩短导弹测试时间, 具有重大的军事意义和显著的经济效益。

参考文献

[1]柳颖.导弹电缆通断与绝缘电阻测试仪的研制[D].中国石油大学, 2010

[2]蔡宗平等.导弹绝缘电阻快速测试方法研究[J].上海航天, 2000, (3)

[3]赵茂泰.智能仪器原理及应用[M].电子工业出版社, 2002

[4]林占江.电子测量仪器原理与使用[M].电子工业出版社, 2006

化学振荡反应微机自动测试系统 篇5

本文介绍了化学振荡反应微机自动测试系统的设计及功能.该测试系统硬件包含四大模块:温度测试和显示模块、化学振荡反应的振荡周期测试和显示模块、电压测试模块、数据上传到计算机的通信模块,系统也可以脱离计算机独立使用.下位机软件采用汇编语言编写,上位机用Visual Basic 6.0语言编写.该测量系统可对化学振荡反应实验全过程的数据进行采集和测量,具有使用方便,设计新颖,实验数据稳定,现象直观等特点.

作 者:梁燕萍 张昌民 贾剑平唐山  作者单位:西安电子科技大学理学院,陕西,西安,710071 刊 名:计算机与应用化学  ISTIC PKU英文刊名:COMPUTERS AND APPLIED CHEMISTRY 年,卷(期): 21(5) 分类号:O64 关键词:化学振荡反应   测量系统   数据采集  

通用变压器自动测试系统设计 篇6

关键词:变压器;自动测试;数据采集;频率跟踪

中图分类号:TP29 文献标识码:A文章编号:1007-9599 (2011) 08-0000-01

The Design of the General Transformer Control Auto-Test System

Zhao Xuyang1,Mi Wengpeng2,Hong Chenghua1,Cao Juan1

(1.Teaching and Research Section 103,the PLA Second Artillery Academy,Qingzhou262500,China;2.Teaching and Research Section 202,the PLA Second Artillery Academy,Qingzhou262500,China)

Abstract:This article designed the general auto-testing system,on the base of the transformer’s testing method and standard,and adequately considering the advantage,practicability,reliability and economic benefit,and expounded achieve of the sampling frequency tracking,and finished the function debugging of the transformer’s auto-testing system.

Keywords:Transformer;Auto-testing;Data collection;Frequency tracking

一、系统硬件设计

通用变压器测试系统的硬件设计原则是使ATE(自动测试装备)本身资源配置最大化,能够覆盖各种变压器的测试需求。

测试系统的硬件主要包括:数据采集与处理、控制信号输出与控制装置驱动、计算机显示与打印三大部分。系统结构如图1所示。

测试系统主要采用National Instrument的数据采集卡和虚拟仪器软件搭建系统主体,数据采集卡本身带有驱动程序,软件本身可在计算机程序的控制下完成全部的变压器常规测试项目,包括实现合闸、调压、读数、数据处理、打印报告的一次完成,大大提高了测试的操作性、准确性和快速性。

测试系统所要采集的数据由3个:变压器试验中的室温、高低压侧的三相U/I值,采集到的数据经过A/D接口电路转化为数字信号以后传送给数据采集卡,将采集到的数据换算成75℃的标准值,由测试主机计算不平衡率和相关参数,作为出错判断的依据。在U/I到达设定值时,锁定调压器,并测量此时的U/I值用以计算测试数据。

图1.系统方框图

变压器基本测试项目包括空载测试和负载试验,测试过程需要根据测试指令依次执行调压器原、副边合闸,调压器升压降压,调压器分闸等操作,在测试过程中,需要根据测试种类和参数来调整执行次序和调压的速度,当变压器到达设定U/I值时,保持电压不变,功率分析仪开始采集数据,并将检测U/I与标准值进行实时对比,如果发现检测到的U/I值与标准值不一致,则需要立即切断电源,并弹出错误信息。

二、系统软件设计

本系统可以对不同的变压器测量,也就包含了多种测试对象和测试项目,但是各项测试都包含基本的测量和控制步骤,因此可以采用按产品组建系统,分级调用子程序的方法,将同一系列产品的测试集成在一个程序中,通过程序数据接口和全局变量在各个程序之间进行数据的传递。

因为被测变压器的电压和电流一般都很大,为确保在测试过程中的操作安全,在软件设计时应特别编写了防止错误操作的程序。可以将三相U/I不平衡判断预想装订在数据采集子程序中,将零序阻抗超差、阻抗电压超差和空载电流过大分别置于零序阻抗测试,负载测试和空载测试当中。操作面板上应设置有‘紧急停止’按钮,且应放置在醒目的位置,并在程序启动后置于工作状态,以便操作人员可以随时停止调压器的输出。

三、频率跟踪测量技术

本测试系统需要对变压器的电压、电流和频率等进行交流采样,频率的准确测量将影响到交流采样应用的成功与失败。因为在测试过程中,需要提取多个正常采样周期的平均电压值和电流值,而且由于不同型号变压器的输出频率不一,本身也需要测量频率。测频方法的主要指标有响应时间、测量精度以及硬件要求。

首先,对由于电压信号频率波动所引起的电压信号有效值误差的大小进行定量的分析。

设,,,则

又因

那么:

一般工频频率的波动通常可达到0.1Hz以上,即:δf>0.5%,那么对电压信号有效值的影响将要达到0.25%。所以应实现采样频率对工频频率的自动跟踪,才能保证测量数据的精度。因为测试系统的频率不是变化很快,可通过以下方法实现频率跟踪:

测得测试系统的频率前一周期对应的计数值Tc,根据每周波采样点数N,计算出每一采样间隔计数值Tsj()。以Tsj为周期进行采样,即可实现采样频率的实时跟踪,保证了交流等间隔采样。

四、结束语

采用自动测试系统对变压器的测试进行设计,不仅降低了硬件成本,而且达到了测试功能的高度集成,满足了操作简便、测试快速、准确等要求。

参考文献:

[1]李磊源.基于虚拟仪器技术的变压器综合检测系统[J].变压器,2002,8

[2]阙隽瑜.变压器通用试验系统[J].变压器,2001,8

[3]吕田有.宽带变压器参数测试信号的高速采集[J].武汉大学学报,2005,2

[4]韩行,关社军.基于MCU-CPLD变压器测试系统的设计与实现[J].测控技术,2006,15

自动测试仪 篇7

光收发模块是一种低功耗、小型化和高科技的有源器件。它的出现使光交换网的传输速率大幅提升,同时也提高了信号在光纤传输中带宽的利用率。光收发模块作为光纤接入网的核心器件,推动了光传输系统的发展,使得光传输网的配置更加完备合理。目前已比较广泛地应用在大型交换机和海底光缆的中继器中,不久的将来也会逐渐地进入家庭网络。随着光收发模块技术的发展,市场上的光收发模块种类越来越多,对其要求也越来越高,主要向小型化、低成本、低功耗、高速率、远距离和热插拔等几个方面发展。基于光收发模块大好的发展趋势,对其测试的研究也越来越多。本文作者基于自动测试平台(Automatic Test Station,ATS),利用虚拟仪器技术 (Laboratory Virtual Insturment Engineering,LABVIEW)软件控制测试平台实现了对光收发模块的性能测试。

1 ATS的设计

1.1 ATS 设备连接图

ATS设备连接图如图1所示。

图中,示波器的型号为Agilent SCOPE X1(86100A/B),误码分析仪1的型号为Anritsu BERT X1 (MP1632C),误码分析仪2的型号为Aglient BERT X1(86130A),电源的型号为Aglient Power Supply X1(E3646A),衰减器为JDS attenuator X1,电脑为PC X1,Light Source EV board为光源评估板,DUT EV board为测试设备评估板。

1.2 ATS连接图原理

误码分析仪2提供一路差分电信号并送到光源评估板的TX+和TX-电信号接口上,驱动光源的光发射组件(Transmitter Optical Sub Assembly,TOSA)发光。TOSA发出的光信号通过光纤传输进入衰减器的data in端,此为模拟光纤在长距离传输过程中的光信号损耗,衰减之后的光信号经由data out端输出后进入待测光模块的光接收组件(Receiver Optical Sub Assembly,ROSA),ROSA把光信号转换成电信号,再通过DUT EV board的RX+的电信号接口把衰减后的电信号重新传回误码分析仪2,在误码分析仪中存在着一条电回路,它起到时钟的作用,使输入Light Source EV board的差分电信号和从DUT EV board的RX+端反馈回来的电信号同步。用以测试光收发模块的ROSA端性能参数,包括灵敏度(Sensitivity)和信号丢失(LOS)。误码分析仪1会给DUT EV board 的TX端提供一路差分电信号,来驱动待测模块TOSA端发光。另一方面误码分析仪会提供一个触发信号(triggle)给示波器来产生光眼图,可以通过从光通道看其眼图的方法测试光收发模块TOSA端性能参数,主要包括平均功率(Average Power)、消光比(Extinction Ratio)、眼图(Eye mask margin)和抖动(Jitter)等。电源部分给DUT EV board和Light Source EV board 提供3.3 V的直流电压。电脑(PC)通过调用软件中的指令控制ATS中的各个设备,指令会通过PC上的PCI GPIB(电源输出控制卡)口传输控制信号,设备也是通过GPIB口与PC进行数据信息交换。两者之间是通过GPIB线缆来实现正常通信的。PC安裝所有的ATS 软件用于控制ATS中的所有设备来进行测试,从而存储ATS测试所需要的数据和眼图。

2 光收发模块的测试

2.1 ATS的校验

测试前首先要对整个测试平台系统进行校验,ATS校验的目的就是提高ATS的测试准确度。校验包括:Scope校验、ATS RX 端的校验和Golden module 测试。

2.2 测试软件

本文采用LABVIEW 7.0软件进行测试。图2所示为测试界面。

测试界面中包含了光收发模块的测试参数,主要参数如下:(1) 数字控制电位器(DCP):电流(Current)供电电压为3.3 V 时模块回路的电流;(2) 光信号丢失 (Lose Of Signal,LOS);(3) 灵敏度 (Sensitivity):光一直衰减到ROSA反映接收不到光的时候,衰减光强和未衰减的光强的比值;(4) 光功率 (Power);(5) 消光比 (ER):眼图张开的程度;(6) Eye Mask Margin:眼图的洁净程度,波型的线型清晰度,点的聚集程度;(7) 关断TX端 (TX Disable):关断时控制器检测到的光功率,检测TX是否能够完全关断。

2.3 光收发模块的测试

校验好测试平台后就可以对待测产品进行测试了,把待测的光收发模块插入DUT EV board测试板中,ROSA端接入携带有衰减后光信号的光纤。因为本次测试选用的是OC3-IR模块,要对其进行3个温度的测试,所以将TOSA端光信号接入Scope第一通道的光信号入口,测试使用的DUT EV board图如图3所示。

(1) 用热流控制器把待测模块吹到高温25℃进行测试,此时TX端的测试眼图如图4所示。

(2) 用热流控制器把待测模块吹到高温85℃进行测试,此时TX端的测试眼图如图5所示。

(3) 用热流控制器把待测模块吹到低温-5℃进行测试,此时TX端的测试眼图如图6所示。

3个温度下测试的参数值如表1所示。

上述结果表明,已组装焊接的光收发模块均成功通过测试。

3 结束语

本文基于ATS,利用LABVIEW软件控制测试平台实现了光收发模块的性能测试。首先介绍了测试平台系统的组成结构和各测试仪器的功能,然后对ATS设备连接图原理进行了说明,最后利用LABVIEW对OC3-IR模块进行了3种不同温度下的测试,结果表明:光收发模块成功通过测试,顺利完成了测试任务。

摘要:光收发模块是一种低功耗、小型化和高科技的有源器件,它的出现推动了光传输系统的发展,对其性能进行测试具有重要意义。文章作者基于自动测试平台(ATS),利用虚拟仪器技术(LABVIEW)软件控制测试平台实现了对光收发模块的性能测试。首先设计了ATS设备连接图,并对其原理进行了说明,然后利用LABVIEW软件对OC3-IR模块进行了3种不同温度下的测试,测试结果表明,光收发模块成功通过测试。

关键词:自动测试平台,光收发模块,虚拟仪器技术软件,测试

参考文献

[1]宫志刚.对于光电收发器的数字诊断监控功能[M].北京:国防工业出版社,1996.

[2]阮玉,杨宜.基于VCSEL的高速光收发模块研究[M].天津:天津大学出版社,2003.

[3]亢军健,宁书年,苏美开.光收发模块眼图、消光比及灵敏度关系的实验研究[J].北京:人民邮电出版社,2000.

[4]祝宁亮,谢亮.光通信用20 Gbit/s激光器模块及关键技术[J].中国有色金属报,2004,14(1):394-397.

自动化测试方法 篇8

目前自动化测试中,测试小组成员编写完用例以后,还需要脚本开发人员单独编写一条针对此用例的自动化测试脚本,然后使用自动化测试工具运行脚本进行测试。当测试用例变更后,还需要重新编写这条测试脚本,资源耗费比较大。测试用例和测试脚本之间的维护比较复杂。

1 实施过程

1.1 项目介绍

针对现有技术中的缺陷,本想法要解决的技术问题是:如何将测试用例自动地转化为自动化测试脚本,以减少自动化测试脚本的代码量、资源消耗及测试用例和测试脚本之间的维护。

为解决上述技术问题,我和小组人员不断的摸索以及通过实际工作中多次测试和联调,探索出一种只要被测产品中没有产生新的控件类型,就不需要修改自动化测试脚本的解决办法。通过在实际项目中多次试验,本控件类型在测试用例中可以任意制定被测产品的流程,不会局限某个系统、某个产品。

根据多次实验结果得出一种自动化测试方法,包括如下步骤:

步骤1:定义控件属性与预置测试脚本代码之间的对应关系。本环节是通过设置的相应的对应关系,在前期就降低控件的可变化性。

步骤2:读入测试用例的测试数据,其中,所述测试数据包括控件属性。

该数据从项目实际运营过程中获取,保证能够在测试过程中发现更多的问题,确保一旦正式发布后在实际运行过程中避免出现类似错误。

步骤3:针对读入的控制属性,查找到对应的预置测试脚本代码;大多数自动化测试并没有这一步骤,通过读入控件属性,可以降低代码的重复性,是本设计特有的环节。

步骤4:根据预置测试脚本代码形成自动化测试脚本代码;

步骤5:将预置测试脚本代码添加到编写的自动化测试代码框架中,形成自动化测试脚本代码,执行自动化测试脚本代码,其中,自动化测试脚本代码用于模拟手动执行测试用例中各个控件类型的动作。

以上二分部主要由软件自动完成,无需手动进行,这也就是自动化测试的魅力所在,可以在很大程度上降低人力手动操作的时间,腾出更多时间去完成其他事情,增加工作效率。

2 附图说明

2.1 测试流程

为了将思想的其它特征、目的和优点更明显展示出来:通过阅读参照图1附图将会更直观。

2.2 解决办法

下面结合具体实施例对本方案进行详细说明。以下实施案例将有助于本领域的技术人员进一步理解本人的思想,但不以任何形式限制本思想。应当指出的是,对本领域的普通技术人员来说,在不脱离本方案构思的前提下,还可以做出若干变形和改进。

每个项目都需要人员的配合。需要需求人员、产品开发人员和自动化测试脚本代码开发人员共同配合,产生控件ID与被测系统映射表、控件类型与代码映射表,例如表1和表2所示,其中,控件ID与被测系统映射表记录了控件名称、测试用例中控件ID、被测系统中的控件ID之间的映射关系,控件类型与代码映射表记录了控件类型、测试用例中控件类型、被测产品中控件类型、测试脚本中控件类型的映射关系。

本方案的方法和系统可以连接测试用例管理工具,读取测试用例,通过解析模块解析测试用例信息,生成脚本可读的信息,然后根据测试用例中的控件ID在控件ID与被测系统映射表中查找对应被测模块,最后确定被测模块;我的主要想法还是根据测试用例中的控件类型在控件类型与代码映射表中查找对应的测试脚本代码,执行自动化测试脚本来最终产生测试结果。具体步骤如图1所示,包括:

步骤1:我们要先读取用户编写的测试用例,例如可以连接测试用例管理工具,从存储有用户编写测试用例的测试用例管理工具中读取,测试用例中的控件类型和操作命令、自动化测试脚本中的控件类型和操作命令、被测试系统中控件类型和操作命令三者一致,测试用例中的控件ID与被测系统的控件ID一致。

步骤2:解析测试用例信息,生成脚本可读的信息。

步骤3:根据测试用例中的控件ID在控件ID与被测系统映射表中查找对应被测模块。具体地,根据测试用例中的控件ID,在控件ID与被测系统映射表中,首先查找到对应的被测系统中的控件ID,然后根据该被测系统中的控件ID再查找到对应的被测模块,其中,所述被测模块是被测系统的某个测试单元,例如,一个文本框、一个多选框、一个单选框等。

本组成员在项目中反复实践发现了一致性的关键点。目前很多自动化测试都是由于忽略了一致性才导致脚本可用性降低从而人为的增加了测试的工作量,说是实现了自动化测试,反而却是增加成本。

步骤4:根据测试用例中的控件类型在控件类型与代码映射表中查找对应的自动化测试脚本代码。具体为,根据测试用例中的控件类型,在控件类型与代码映射表中,首先查找到对应的测试脚本中控件类型,然后根据该测试脚本中控件类型再查找到对应的自动化测试脚本代码。

步骤5:执行步骤4的控件类型对应的自动化测试脚本代码,该自动化测试脚本代码用于模拟手动执行通过步骤3查找到的被测模块的控件类型的动作。

步骤6:输出自动化测试脚本代码产生的实际结果。

步骤7:比较自动化测试脚本代码产生的实际结果与测试用例中的预期结果是否一致,如果一致说明测试通过;如果不一致说明测试不通,并且指出不通过的原因

使用本方案的方法,即使当测试用例变更后,测试人员只需按照关键字规范,手工修改一次测试用例即可。

下面对本方案的一个优选具体实施方式进行描述,在本具体实施方式中,包括以下步骤:

Step1:需求人员、产品开发人员和自动化测试脚本代码开发人员共同定义好被测产品中控件类型与控件的ID,产生相应的映射表,标准控件的使用标准定义。

共同定义是非常重要的,针对不同项目,前期应把控件类型和id定义成标准,并在开发过程中使用统一标准。

Step2:产品开发人员和自动化测试脚本代码开发人员根据映射表为被测产品的每个控件设置控件类型、控件ID。

Step3:定义测试用例内容以及格式;测试用例内容包含:控件类型、控件ID等;测试用例的格式如:(系统模块名称,控件类型,控件ID,输入内容,操作命令,预期输出,时间输出,测试结果)。

Step4:执行自动化测试脚本代码,包括如下子步骤:

Step4.1:读取用户编写的测试用例,所述测试用例中的控件类型和操作命令、自动化测试脚本中控件类型和操作命令、被测试系统中控件类型和操作命令三者一致,测试用例中的控件ID与被测系统的控件ID一致。例如,可以首先连接存储有用户编写的测试用例的测试用例管理工具,然后从测试用例管理工具中读取测试用例。

Step4.2:解析测试用例信息,生成脚本可读的信息。

Step4.3:根据测试用例中的控件ID在控件ID与被测系统映射表中查找对应被测模块。

Step4.4:根据测试用例中的控件类型在控件类型与代码映射表中查找对应的测试脚本代码。

Step4.5:执行自动化测试脚本代码,这段自动化测试脚本代码是模拟手动执行测试用例中各种控件类型的动作。

Step4.6:输出自动化测试脚本代码产生的实际结果。

Step4.7:比较自动化测试脚本代码产生的实际结果与测试用例中的预期结果是否一致,如果一致说明测试通过;如果不一致说明测试不通,并且指出不通过的原因。

其中,Step4是自动化测试一个控件过程,在自动化测试脚本代码中,分别实现模拟手动执行每个控件类型的动作,并且使每一个控件类型的动作成为一个独立的模块,根据控件类型可以查找到对应的测试脚本代码。脚本代码可以重复利用,只要被测产品中没有产生新的控件类型,就不需要修改自动化测试脚本。测试用例中可以任意制定被测产品的流程,不会局限某个系统、某个产品。

其实优选具体实施方式和之前介绍的没什么区别,这里要说的是不管哪种方案要强调的是测试用例中的控件类型和操作命令、自动化测试脚本中的控件类型和操作命令、被测试系统中控件类型和操作命令三者一致,这个是本文的重点,也是提出本方法的关键。

3 结论

根据本方案提供的一种自动化测试系统,所述自动化测试系统用于执行上述的自动化测试方法。

自动测试仪 篇9

在电力系统以及其他电气控制系统中,常将各种类型的继电器应用于需要进行状态监控的场合,作为保护的闭锁动作元件或启动元件,它们的工作可靠是确保电力系统和其他电气控制系统可靠运行的重要保证[1]。因此,必须定期对继电器的特性参数进行测试,以确保其动作的准确性和正确性。在这种应用需求下,设计一种以嵌入式微控制器为核心,能够对以0~350V交流电压和0~48V直流电压为额定工作电压的各种继电器进行电气参数测试的自动测试仪器。

1 总体方案

继电器测试仪由中央处理器和各个功能模块构成,总体设计方案如图1所示。

1.1 中央处理器

中央处理器为整个测试装置的核心,采用嵌入式混合信号微处理器C8051F350。其主要功能是控制各个功能模块依次工作,实现对不同电气参数的检测;对检测到的数据进行处理分析,并将最终结果显示或通过通信模块传递给上位机,以便深入分析;通过键盘和显示器实现人机对话功能。

1.2 动作电压测试模块

动作电压测试模块主要功能是对继电器的吸合电压和释放电压进行测试。该模块由线圈驱动电路和触点检测电路两部分组成。线圈驱动电路根据来自计算机的线圈控制信号、被测继电器是直流还是交流来施加相应的驱动信号[2]。测试动作电压时,中央处理器根据被测继电器的具体种类和型号,选择可调交流或直流电压源与被测继电器的线圈接通,同时使继电器的常闭触点接地、常开触点接高电平。CPU控制可调电压源的输出从0开始逐渐升高,电压值每改变一次,CPU便查询一次继电器动触点公共端的电压大小。若电压为0,则使可调电源电压继续升高;若电压为高电平,则表明被测继电器已经动作,此时可调电源的电压输出值即为吸合电压。同理可测得继电器的释放电压。

1.3 动作时间测试模块

动作时间测试模块的主要功能是对继电器的吸合时间和释放时间进行测试[3]。测试吸合时间时,将被测继电器的常闭触点接地、常开触点接高电平,CPU控制可调电源输出被测继电器线圈的额定电压,同时启动计时器开始计时,并实时监测被测继电器动触点公共端的电平变化,当电平从低变为高时,立即停止计时,则计时器的计时就是相应的吸合时间。同理可测得继电器的返回时间。

1.4 触点接触电阻测试模块

该测试模块由恒流源电路和电压采集电路构成。在测试过程中,被测试触点有恒定的电流流过,CPU通过电压采集电路对触点两端的电压降进行采集,经计算即可得到触点的接触电阻值。

1.5 通信模块

通信模块的作用是将测试装置采集到的各种电气参数传送给性能更加完善的上位机,以便对继电器的可靠性和寿命等进行分析和评估。

1.6 人机对话模块

人机对话模块选用了一块128×64点阵的液晶显示器,在显示器提供的操作界面上,操作者可通过按键移动光标,对被测试继电器的种类、型号、额定参数等内容进行设置,并按照显示器上的提示信息完成具体的测试过程,最终测试结果通过显示器显示。

2 硬件电路设计

2.1 中央处理器

C8051F350是完全集成的混合信号系统级芯片(SOC),具有丰富的片上资源,在应用设备的开发中可以节省很多外围器件,性价比较高。C8051F350具有与MCS-51完全兼容的指令周期,能在执行指令期间预处理下一条指令,提高了指令执行效率。8051F350单片机具有8个通道(ADC0)、24位的模拟信号输入端口,所以电流、电压信号不需要经过A/D转换器,可以直接接入单片机。此外,C8051F350单片机还具有两路8位电流输出DAC,无需D/A转换器即可实现模拟信号的输出。图2为C8051F350单片机的封装引脚图。

2.2 可调交流电压源

可调交流电压源的主电路如图3所示,核心部件为一个具有9个副边绕组的工频变压器,原边输入220V的交流电,副边9个绕组的输出电压分别为1、2、4、8、16、32、64、128、100V,且每个副边绕组都接有一个开关器件,分别为S1~S9。CPU通过控制开关S1~S9的开关状态,可以使不同副边绕组串联在一起,实现0~350 V的可调交流电压输出,从而满足交流电压继电器的测试需求。在原边绕组电路中,串联有可控双向晶闸管VS1,其作用是控制可调交流电压源的通断,以及通断相位。

2.3 可调直流电压源

可调直流电压源由可调电压输出部分和固定电压输出部分构成(见图4)。由单片机C8051F350输出0~1mA电流,再经过功率放大电路,最终变成0~24V直流输出电压。单片机C8051F350的P1.7引脚为双功能引脚,可以配置成8位电流输出DAC;功率放大器型号为UTC2030A,最大输出功率为35W。固定电压输出部分为1个24V的稳压电源,在对直流电压继电器进行测试时,根据测试需要,可将0~24V的可调电压与24V稳压电源串联在一起,以实现0~48V的可调直流电压输出。

2.4 触点接触电阻测试电路

接触电阻测试电路的输入端包含恒流源模块和运算放大器(见图5)。恒流源模块型号为DHM902,恒流值1A,误差0.1%。测试过程中,电流流过被测继电器触点,触点两端的电压降由运算放大器OP07放大后,送至单片机AIN0.0端口。C8051F350的AIN0.0端口是一个24位ADC,电压转换后所得的数据经过单片机的运算处理,即可算出触点的接触电阻。

2.5 通信模块

通信功能模块由一块MAX232芯片构成(见图6)。该芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电,完成从TTL电平到RS-232电平的转换。C8051F350的P1.0和P1.1引脚分别被配置为模拟串行通信的发送端和接收端与MAX232的对应引脚相连,以实现测试装置与上位机之间快速、可靠的数据传递。

3 系统软件设计

测试装置的软件程序由C语言编写而成,经过编译软件编译后生成可执行文件下载至微控制器C8051F350中运行。软件采用模块化结构,测试装置上电后,自动执行初始化程序,进行系统自检并作测试准备。随后操作员根据测试的内容和需求对装置的各项参数,如继电器的种类、额定参数、测试项目等进行设置,从而实现对测试内容的灵活组合。确定测试开始后,CPU控制各个功能模块的测试电路顺序动作,自动完成对继电器各项参数的检测。之后,CPU对检测到的数据进行计算和处理,得出测试结果并在LCD屏上显示出来,同时将测试结果通过通信模块传递给上位机以进行进一步的分析和处理。最后,根据操作人员的选择,确定结束本次测试或者进入一个新的测试。测试装置主程序流程如图7所示。

4 试验结果及分析

继电器电参数自动测试仪以完全集成的混合信号片上系统型微控制器C8051F350为核心,通过外部硬件电路的扩展和软件的片上集成,实现对以0~350V交流电压和0~48V直流电压为额定工作电压的各种继电器的电气参数的自动检测。通过大量试验,对测试装置的性能进行了验证,交流电压继电器型号为MTI CAAJ-Y0AAA(AC 220V)、直流电压继电器型号为MTI CAAJ-Y06AE(DC 48V)、通电延时型继电器型号为MTI CACTA-ET Y0AAA(DC 48V,3s)、断电延时型继电器型号为MTI CACT80-MT Y0AAA(DC48V,3s),试验结果如表1所示。试验检测到的数据与厂家技术资料中给出的额定数据基本吻合,验证了该测试仪具有较高的测试精度和较好的实用价值。

5 结语

系统人机交互友好,操作简便,能在上位机中完成对被测继电器的综合分析和评估,极大提高了技术人员对继电器校验工作的质量和效率。装置的硬、软件模块经过少许改变,便可对电压继电器之外的接触器、断路器等其他低压电器进行相同的电参数检测。

参考文献

[1]孙丽华,李华丰,安曙明,等.一种新型继电器参数测试仪[J].电力自动化设备,2003,23(12):63-64

[2]陆俭国.继电器试验与检测技术的新发展[J].机电元件,2005,(1):34-37

[3]杜太行,王京保,孙曙光,等.交流继电器动作时间检测技术的研究[J].继电器,2004,(20):25-27,45

[4]王爱国,阮于东.低压电器产品的检测新技术[J].低压电器,2008,(15):45-49

C程序自动测试方法 篇10

关键词:自动测试,静态测试,算法

1 问题的提出

随着装备自动化程度的不断提高, 计算机的应用越来越普遍, 为了提高软件开发的效率、可靠性, 必须用一种系统的方法对开发的软件进行评估, 度量其可靠性, 并自动对软件进行测试, 找出软件中存在的缺陷或错误。C语言作为一种高级开发语言, 具有通用性好, 编程效率高, 编程灵活, 移植性好, 因此C语言被选为各种装备软件开发的重要语言之一。装备的可靠性、可用性对软件的可靠性要求越来越高, 如何度量软件的可靠性、对软件进行自动测试的任务迫在眉睫。正是为了提高软件的可靠性, 对C语言编制的软件进行自动测试, 以期找出软件中潜在的错误和缺陷, 并协助程序员修改错误, 提高软件的质量和开发效率。

对C语言编制程序进行控制流分析, 并在源程序的适当地方插入一函数调用, 使其在运行时刻收集程序的运行信息。帮助程序员设计测试用例, 显示程序的运行过程, 判断程序的执行情况, 协助其改正错误。测试程序可作为软件测试的一种工具, 将提高测试效率, 保证软件的质量, 把程序员从低级的、重复的劳动中解放出来, 将主要精力放在软件的开发和设计上, 成倍地提高生产率[3,6]。

2 自动测试目标和算法

2.1 自动测试及其目标

基于被测试程序是否执行, 可以把软件测试分为静态测试和动态测试。静态测试只分析被测试程序, 如包含哪些语句, 哪些函数或模块, 函数之间的调用关系, 标识符的引用关系等。而动态测试则收集程序运行时刻信息:如哪些路径被执行, 每个路径执行的时间, 每个变量在某一时刻的值, 每个分支被执行时的条件等[4,5]。

动态测试的一般方法是, 在被测试的程序里适当的地方插入信息收集函数 (或称探针) , 再对源程序进行编译、运行, 当程序运行到收集函数时, 由收集函数往数据库中更新内容, 然后由一个事后处理函数对数据库进行分析、统计、显示[2,9]。

需要完成以下目标:以Win XP/NT作为软件运行的平台, 采用GUI (Graphics User Interface) , 针对VC6.0+的程序进行测试, 分析出控制流图, 并在屏幕上画出控制流图, 实时跟踪控制流图中哪些弧被经历过, 经历的次数是多少, 每次经历的时间是多少;显示每个节点对应的源代码;当前运行的代码加亮显示;源代码中的关键字、注释醒目地显示等[1]。

2.2 动态测试的算法

编程语言采用Delphi, 数据库选单机版的Paradox。

算法思路

自动对VC6.0+的.DSW (Develop Studio Workshop) 文件进行分析, 从.DSW文件中分析出它所包含的工程文件.DSP (Develop Studio Project) , 一个.DSW文件中可能包含多个.DSP文件。然后逐个对.DSP文件进行分析, 找出每个工程文件中包含的.C、.CPP文件, 再对.C、.CPP文件逐一进行分析。在对.C、CPP文件进行分析时, 首先找出每个文件中所包含的函数, 然后对每个函数进行分析。在分析过程中, 边分析, 边记录, 同时在函数的适当地方插入探针[7,8]。

(1) dsw、.dsp文件分析

.dsw、.dsp文件为文本格式, 用任何编辑器打开均可阅读其内容, 稍加浏览即可明白其格式, 不在此赘述。

1) .dsw文件分析

a.从.dsw文件中分析出.dsp文件名

b.分析.dsp文件

c.重复1) 直到所有的.dsp文件分析完毕

2) .dsp文件分析

a.从.dsp文件中分析出.C或.CPP文件名

b.分析该文件

c.重复1) 直到所有的.C或.CPP文件分析完毕

(2) C或.CPP文件分析

1) 将源文件切分为一系列的Token串, 存入一表中

2) 从Token表中过滤掉注释部分, 如/*…*/、//…

3) 从Token表中过滤掉”…”部分, 并考虑串中可能存在转义字符“””。

4) 从Token表中搜索并计算下列关键字所处的行、列, 并存入另一表List中:break、case、continue、default、do、else、for、goto、if、return、switch、while、{、}

5) 从List表中搜索并处理goto关键字, 并把goto的目的地址 (行、列等信息) 仍存入List表中, 相关信息存入goto预处理表中

6) 将List表按行、列的升序排序

7) 对List分析得到控制流信息, 在分析时, 在源程序的适当地方插入探针。

(3) 源文件Token化

利用了从Internet上收集到的一个控件TToken List, 设置好该控件的属性:1) 与源程序对应的流式文件TFile Stream的一个实例;2) 分隔符属性, 其设置方式是将布尔数组下标0~255对应的单元初始化, 每个单元和一个ASCII码对应, 若某个ASCII码为分隔符, 则以该ASCII码的序号为下标, 该下标对应的单元设置为true, 否则为false。控件的属性设置好后, 调用该控件的Tokenize方法即可把每个Token放入Token[]属性表中, 其中包括回车、换行符。其它属性, 如每个Token在源文件中的偏移, 每个Token的长度等都在控件中包含了, 因此, 后续的处理十分方便。

C、C++中的分隔符有:!、”、#、%、’、 (、) 、*、+、, 、-、.、/、:、;、<、?、&、[、、]、^、{、|、}、~等符号。

(4) 滤掉注释

注释内容有可能干扰对控制流的分析, 因此, 必须把它过滤掉。

1) 指针指向Token表头

2) 判断是否为/符号, 若是转3) , 否则指针+1, 重复2) 直到Token尾部结束。

3) 判断是否为*, 否转5)

4) 对/*…*/进行处理, 处理完后转2)

5) 判断是否为/, 若是转6) , 否则转2)

6) 处理//…直到换行符, 处理完后转2)

(5) 滤掉”…”部分

为了不影响对关键字的判断处理, 还必须过滤掉”…”部分

1) 指针指向Token表头

2) 是”符号吗?是转3) , 否则指针+1, 重复2) 直到Token尾部结束。

3) 若是字符, 判断下一字符是否为”, 若是则虑掉这两个字符, 否则下一字符为”时结束过滤, 转2) 继续

(6) 搜索关键字

因关键字有多个, 若把每个Token和所有的关键字进行比较, 将十分费时, 因此, 笔者考虑了一种较为有效的方法。一般编程语言中均提供了在某字符串中搜索字串的函数, 若能成功匹配, 返回其位置, 否则返回-1或其它的值。但存在一种情况:Token中的串是关键字的子串, 该如何处理这种情况?笔者的解决办法是:把每个关键字按升序排序, 把所有的关键字串结成一个串, 每个关键字之间插入分隔符, 分隔符是关键字中所包含的字符以外的其它任意字符。为了简化处理, 在串的头部和尾部也加上分隔符。因此, 若某个Token为该串的子串, 根据返回值, 判断子串的头部和尾部是否同时为分隔符, 若是则是一个关键字, 否则仅为一般标识符。这种方法避免了采用关键字树等复杂的数据结构和算法, 编程较为简单。笔者查看了Delphi中Pos函数的源代码, 它采用了汇编代码, 所以其运行效率十分高[3]。

(7) 处理goto关键字

goto虽然不提倡, 但在许多语言中仍然存在, 因此, 作为控制流处理软件, 仍有必要对其考虑。

1) 获取goto后的下一Token, 跳过空格、tab符、回车、换行等符号

2) 在源文件中向后搜索该Token, 若存在, 则将其行列加入List表中, 转4) ;否则转3)

3) 在源文件中向前搜索该Token, 若存在, 则将其行列加入List表中

4) 对goto及其目标作记录

(8) 关键字排序

由于存在goto, 而goto的目标既可能向前, 又可能向后。因此, 它的存在打乱了正常的控制流, 必须按自然顺序 (先按行后按列的升序) 排序。排序可采取各种方法。由于关键字表是TList对象的实例, 它提供了一Sort方法, 采用快速排序方法, 需要编程人员提供一个比较对象的值的大小的方法, 可根据需要灵活定义。

(9) 关键字表分析

关键字表分析是本课题的重点和难点, 也是较为复杂的部分。

1) 把指针指向表头

2) 对{进行处理。它必然为第一个关键字, 否则出错, 并且它是函数定义的起始语句。由此, 可在源程序中搜索出该函数的声明。处理整个函数, 直到}处理完毕, 指针将移动到下一个函数的{开始语句出或表尾, 若移至{, 进行新的一轮处理, 否则结束。

(10) 函数分析

1) 对do、for、goto、if、return、switch、while语句分析

2) 若为}时结束。若未插入探针, 则插入探针。函数号+1。 (11) 复合语句分析

复合语句为{…}括起的部分, 其处理与函数处理类似。

1) 对do、for、goto、if、return、switch、while语句分析, 考虑break、countinue

2) 若为}时结束

(12) 单语句分析

处理do、for、goto、if、return、switch、while语句之一, 考虑break、continue。

(13) do语句分析

do语句的流图一般为:

在此不得不论述探针的插法问题, 特别是在循环语句中是一个棘手的问题。对如下的do语句:

显然在do语句{后应插入一探针, 那么while语句的探针应插在何处呢?若插在}之前, 并不能真实地反映本来面目, 实际运行时也存在问题, 其真实的控制流为:

从上图可以看出, do语句中while探针必须插在while语句上才能真实地反映实际执行情况。假若do语句的探针的插法还能强差人意, 那么for, while语句的探针如何插呢?若针对如下正常

若for循环n次, 那么, 由 (1) ~ (2) 为n次, 由 (2) ~ (1) 实际为n-1次, 但从控制流上看 (2) ~ (1) 也为n, 与实际不符, 探针的插法存在问题, 其真实控制流为:

对while语句可把探针插在while语句上, 但要把探针直接插在for语句上较为困难, 至少得对源程序进行修改, 因此, 难于真实地刻画for语句实际执行情况。

do语句分析

1) 把do节点的信息记入数据库

2) do后有{吗?, 有转4)

3) 插入{及探针, 单语句处理, 插入while探针及}, 记录while语句位置, 转5)

4) 插入探针, 复合语句处理, 插入while探针, 记录while语句位置

5) 连接关系处理, 考虑break、continue, 把这些关系记入数据库。

(14) for语句分析

1) 把for节点的信息记入数据库

2) for后有{吗?, 有转4)

3) 插入{及探针, 单语句处理, 插入探针及}, 转5)

4) 插入探针, 复合语句处理, 插入探针

5) 连接关系处理, 考虑break、continue, 把这些关系记入数据库。

(15) goto语句分析

由于goto的目标既可能向前, 又可能向后, 因此, 必须作特殊处理:把goto的节点和相关信息记入一表中, 并把goto目标的节点信息记入另一表中, 等所有的节点处理完毕时, 再对该表进行处理。

(16) if语句处理

1) 把if节点的信息记入数据库

2) if后有{吗?, 有转4)

3) 插入{及探针, 单语句处理, 插入}, 转5)

4) 复合语句分析, 若未插入探针则插入

5) 有else吗?, 无转9)

6) 后有{吗?有转8)

7) 插入{及探针, 单语句处理, 插入}, 转9)

8) 复合语句分析, 若未插入探针则插入

9) 连接关系处理

(17) return语句分析

在return之前插入探针

(18) switch语句分析

switch语句分析中, 必须考虑case语句中有无break的情形, 以及有无default语句时的情形。

1) 记录switch语句信息, 并插入探针

2) 对case、default语句进行处理, 并记录break的情况

3) 根据2) 的分析, 判断各节点之间的连接关系, 并记录这些关系

(19) case语句分析

1) 处理其中的每条语句, 直到下一case、default或}

2) 记录break的情况

2.3 程序界面和功能

界面为标准的Windows界面, 提供菜单、按钮、状态行等。屏幕分为三个区:

一区:显示被测试程序中所包含的源程序模块, 以及每个模块中所包含的函数;

二区:某个函数对应的控制流图;

三区:显示源程序。

一区利用Tree View控件分层显示各种信息。

(1) 第一级显示被分析测试的.dsw (Develop Studio Workshop) 文件名;

(2) 第二级显示.C或.CPP文件名。

通过分析.dsw文件得到.dsp (Develop Studio Project) 文件名, 分析.dsp文件得到.C或.CPP文件名;

(3) 第三级显示每个.C或.CPP文件中包含的函数名及参数。当选中一个.C或.CPP文件时, 在三区中显示对应的源代码;但选中任意一个函数时, 二区显示相应的控制流图, 三区中的源程序翻页使该函数的声明可见。在一区中可控制对某些函数或对所有函数是否进行实时跟踪。要对某函数的跟踪进行控制, 首先, 选中该函数, 单击右键, 将弹出一菜单, 根据菜单内容即可控制是否跟踪。对某个模块中的所有函数或整个系统的函数进行控制, 方法类似, 首先选择某个.C、.CPP或dsw文件, 后面的操作一样。

二区显示某个函数对应的控制流图。图中的小圆圈表示节点, 圆圈中的数字表示节点号, 直线或折线表示由一个节点到另一个节点可能的控制流。对程序进行实时跟踪时, 经过的节点、线段用红色表示, 线段的粗细与经过该线段的总时间存在比例关系。整个图形匀称、重心稳定、美观。当鼠标在节点上停留一段时间后, 将显示该节点对应的源代码, 如完整的if语句等。在节点上单击鼠标左键, 该节点对应的源代码将在三区中显示出来。

三区显示源程序。C语言的所有关键字if、for、while等以蓝色显示, 注释用绿色显示, 其它文本用黑色显示, 当前的程序行以红底白字显示。

3 结论

对C语言的控制流作了全面的分析, 如if语句;while、do、for循环语句, 并考虑了循环体中包含或不包含break、continue语句的情况;switch case语句, 考虑了switch中包含或不包含default语句的情况, case语句中包含或不包含break的情况;goto语句的处理等。能够显示并实时跟踪程序的执行过程, 如哪些分支被执行、执行的总时间是多少, 并能提供每个节点的相应信息, 如是那种类型的节点、节点代表源程序的具体语句是什么, 以及被经历的次数等。对了解程序程序的执行情况作了有益的尝试, 并给程序测试指明了方向:如程序的哪些部分没运行到, 哪些关键的部分需要重点测试, 程序的哪些代码需要优化等。因软件测试是一项复杂的工程, 工作量大, 大部分算法是描述性的算法, 能用计算机实现的算法不很多;同时由于时间、人力等关系, 的结果离真正的动态测试系统的要求还有一段距离。如:测试用例的自动生成及模块的验证问题, 覆盖的判定问题, 以及动态测试的其它方面, 变量的更新等。同时, 动态测试离不开静态分析, 静态分析的内容需要进一步加强。因此, 朝这两个方向努力, 加强其功能, 就会建立一个更加实用的系统。

参考文献

[1][美]Jeffrey Richter.Windows95Windows NT3.5高级编程技术[M].郑全战, 阿夏, 译.清华大学出版社, 1998, 2.

[2]郑人杰, 殷人昆, 陶永雷.实用软件工程[M].2版.清华大学出版社, 1997, 4.

[3][美]Allen G.Taylor.SQL使用指南[M].吴言, 李东, 等, 译.电子工业出版社, 1999, 3.

[4][美]James R.Groff&Paul N.Weinberg.关系数据库SQL使用指南[M].付增少, 彭振云, 等, 译.学苑出版社, 1999, 10.

[5]William Perry.Effective Methods for Software Testing.1998by John Wiley&Sons, Inc.

[6]Boris Beizer.Software Testing Techniques[M].Second Edition.1999by International Thomson Computer Press.

[7]Brian Marick.The Craft of Software Testing—Subsystem Testing Including Object-based and Object-oriented Testing.PTR Prentice Hall, Englewood Cliffs, New Jersey07632.

[8]Richard E.Fairley.Tutorial:Static Analysis and Dynamic Testing of Computer Software.1978IEEE, Computer.

浅谈空调控制器自动化测试 篇11

摘要:空调系统在车辆当中是非常主要的部分,它能够衡量车辆的具体舒适程度。消费者在车辆舒适度方面具有很高的要求,这对于车辆功能的研发带来重点挑战。因此,人们开始对空调系统的操作性能、逻辑操作及高效性进行研究。文章简述了空调系统的实际工作原理以及自动化测试的原理,然后自动化测试的实现进行深入探究。

关键词:空调控制器;自动化测试;探讨

在研发空调控制器时,可以应用自动化方式测试产品,那么将会节省验证软件运行所花费的时间。把节省下来的时间都用在标定空调冷暖问题上,进而使车辆更加舒适。与此同时,还能够为自动化测试出更多时间,以提高测试质量,减少成本的投入。对此,笔者探讨了空调控制器中的自动化测试。

一、简述空调系统的实际工作原理

空调系统在车辆当中能够起到制冷和除湿的作用。空调控制器在自动模式下,能够根据车内与车外的温差,自动控制风门的电机位置以及风量大小,让车内的湿度与温度可以让人感觉到舒适。例如:单区空调系统。系统零件有内循环风门电机、吹脚风门电机、制冷器、蒸发器、冷凝器、压力传感器、电机位置传感器、吹窗风门电机、鼓风机、温度传感器和蒸发器等。

二、简述自动化测试的原理

从理论上讲,任何测试都是能够实现自动化的,可实际上,只有一部分测试需要对自动化测试进行应用。一般可以根据下述情况,对自动化测试进行选择:次次执行顺序相同,可数据应该不同,并容易出现的测试错误;需要输入大量变量的测试;对需要应用特殊设备来输入的设备进行测试,在激活系统的同时,分析和研究输出。选择恰当的自动化测试要点如下:研究成功的测试能够在无人看管情况下进行测试,进而使可用时间增多。而那些枯燥乏味的测试活动完全能够应用测试自动化完成,如果由人来进行测试,那么很容易出现众多种错误,所以合理的应用自动化,便可以有效提升测试质量。构建健全的回归测试集,能够让测试人员把时间都应用在新功能测试与改动方面。自动化测试能够保证一个测试一直进行,并且准确执行。同时还能够测试出预期输出和实际输出间存在的差异。

三、有效实现自动化测试

1、搭建测试系统

在进行自动化测试时,一定要搭建完善的硬件模型。设计系统模型中的硬件过程中,合理的应用以下组件便能够顺利完成测试车载控制器这项工作:采集板卡、输入信号、信号调节板卡、输出信号、通信板卡、模拟输出信号的板卡和模拟输入信号的板卡等PXI 系统;电源控制;电子负载;具有调理性能的BOB 盒;空调控制器;工控机;程控电源[2]。

实际工作原理就是由labview 软件控制、判断和检测输入系统及输出系统。PXI 系统可以通过labview 控制,使硬件可以在环系统当中进行采集、输入与输出。电源控制在系统当中属于供电系统,而利用程控电源就能在测试时对控制器中的电压进行控制。应用BOB 可以调理与检测输入信号和输出信号,并使输入及输出保持真实。

2、提升测试案例的流程化水平

在对测试案列进行程序化处理前,应该在labview 这个软件系统当中研发负责控制的界面,并在TestStand 当中构建可以自动进行测试的流程。在将测试案例作为基础的同时,应该分析和整理测试的具体要求。通过细致的分析测试案例的具体技术参数,编制出labview 系统。由labview 系统当中的编辑器对测试脚本进行编写,然后由测试系统调试案列脚本,进而促使测试文档自动完成。

3、自动测试的报告生成与实施

实现自动测试:把存在于测试案列当中的一些功能需求改成相应的软件设备,进而使功能控制得以实现,之后再测试系统当中进行调试与运行。通过被测试对象细致处理,判断、分析及采集从被测对象当中输出结果,进而自动测试空调控制器所具有的功能。实际执行情况如下:由labview 软件来调用测试案例当中的技术参数,然后应用测试系统当中的硬件和软件模型,使PXI 系统模拟输入的数字数量和驱动输入的数字。Labview 输出的所有模拟信号进入到空调控制器时,空调控制器便会应用自身所具有的功能对仿真信号进行逻辑辨别,之后将控制鼓风机和风门电机等负载电机进行输出处理。由空调控制器所输出的的数字通过DAQ 板卡时会被集中处理和收集,然后把处理过的信号再反馈给labview,最后在labview 的界面上将空调的实际输入与输出情况显示出来,这样测试人员就很够很方便的读取到系统输入与输出数据,并掌握输入与输出情况[4]。由于在测试案例当中没有对输入与输出间的关系进行设定,这就需要严格比较设定输出和实际输出,判断测试结构与预期设定是否符合,假如设定与实际相符合,那么我们就可以认为测试是成功的,假如实际输出同设定输出不相符合,那么我们就判定测试没有成功,应该重新进行测试。

四、结语

总之,测试产品属于把产品推进市场的主要环节,通过构建测试模型以及编写测试执行程序,自动的对空调功能进行测试,不仅节省了投入成本与开发时间,还确保了产品的一致性及准确性,进而在提升车辆的舒适性同时,提高产品的市场竞争力。

参考文献:

[1]朱文发,吴浩,郑树彬,等.一种地铁车辆空调温度控制器故障检测平台的设计[J].城市轨道交通研究,2014,17(6):134-137.

[2]陈玲,钱雪峰,钱勇,等.基于单片机的空调控制器抗干扰措施研究[J].自动化技术与应用,2013,32(7):99-101.

[3]荆振洋,邓李娇,叶强蔚,等.基于自动化生产的空调控制器模块支架的结构设计[J].家电科技,2015(4):79-81.

自动测试仪 篇12

在卫星测控地面站日常操作中,需要经常对一些关键技术指标进行测试,对这些技术指标实现自动化测试,则可以提高工作效率,测试指标精度,降低微波测试特有的对测试环境的苛刻要求,减少测控站技术人员的微波测量强度。依此而开发的微波综合测试系统不仅要求实时准确地采集数据信息,对测试信息进行计算处理,得到测试结果。还要求测试结果按照预定的格式输出,产生测试报告。而测试报告的自动生成,既避免由了人员录入数据产生的误差,又提高了测试数据分析的实时性,为进一步进行处理检验提供了便利。

由于Word对文字表格的强大处理能力使之成为现今主流的编辑工具之一,在数据处理程序中有机地与Word文档建立联系,从而借助Word产生数据报表不失为一种很好的方法。本文C++Builder作为开发工具,实现了Word数据测试报告的自动生成。

2. 测试报告模板的设计

Word测试报告自动生成程序是针对特定的Word测试报告模板编制的,在该综合测试系统中测试结果的输出为固定格式的规范化报表。按照系统需求设计排版格式,在模板中预先定义文档中文本、表格、图形等格式,这样在编写程序代码时对文档格式调整的工作量可以大大降低[1]。需要预先定义和自动生成的内容如下表:

需要注意的是,应对测试结果的数据长度进行合理估计,在文档中留下合适大小的位置,以免在程序执行数据的插入时造成格式的混乱,如下图所示:

3. 测试报告自动生成的实现

(1)调用word方法

在C++Builder中,调用Word软件/文件的方法,归纳起来有以下四种[2]:

1)通过C++Builder的组件Tole Container将Word嵌入。

2)通过真正的COM技术将Office软件目录中文件MSWord.OLB中的类库全部导入C++Builder中,利用COM技术编程。

3)使用Create OLEObject来启动Word,然后以OLE方式对Word进行控制。

(4)使用C++Builder提供的Office组件调用Word。

在这四种方法中,本文选择的是最后一种。因为对MSWord.OLB进行了封装,使用起来更为简便灵活。

(2)Word组件

在C++Builder的组件面板中找到Office2K组件页,在这个组件页上我们可以看到和Word处理相关的如下组件[1]:

1)Word Global组件:对不需要以Application属性为前导的最高级属性和方法进行调用。

2)Word Application组件:Word应用程序组件,完成对Word应用程序的调用。是实现Word调用的核心组件,对其属性和方法的修改将影响Word的有关设置。其它所有的Word对象都是它的子对象。

3)Word Document组件:Word文档处理组件,用于处理文档的具体内容。Document对象代表的是一篇完整的Word文档,它包括作为模板打开了文档中所有的对象,如节、段、句、字、表格、格式等。

4)Word Font组件:用于设置Word中的字体、字号等文字设置信息。

5)Word Paragraph Format组件:用于对Word中的段落格式进行处理。

6)Word Letter Content组件:对由信函向导创建的信函的元素进行调用的组件。

(3)启动与退出

在应用程序窗体中添加Word Application和Word Document控件后,便会在窗体类中自动创建Tword Application和Tword Document类型的对象,在相应事件中添加如下代码就可以新建或者打开Word文档。

Ansi String File Path=Get Current Dir();//获取应用程序当前路径

Ole Variant File Name=File Path+"电平-测试.doc";//获取当前测试模版的名称

WordApplication1->GetDefaultInterface()->Visible=True;//使Word应用程序可视

WordApplication1->set_Caption(StringToOleStr("电平测试"));//设置文档标题:测试项目

WordApplication1->Documents->Open(FileName);//打开测试报告

Word Application1->Options->CheckSpellingAsYouType=false;//关闭拼写检查

Word Application1->Options->CheckGrammarAsYouType=false;//关闭语法检查

当Word测试报告自动生成之后,就可以用如下代码保存测试报告,退出Word应用程序。

Ansi String File Path=Get Current Dir();//保存路径名

OleVariant FileName=FilePath+"Power Level Test.doc";//保存文档名,含路径

Ole Variant File Format=wd Format Document;//要保存的格式

Word Document1->Save As(File Name,File Format);//保存生成的测试报告

Word Document1->Print Out();//打印测试报告

Word Application1->Quit();//退出Word应用程序

Word Application1->Disconnect();//断开与Word连接。

(4)文字处理

Word测试报告实现通常需要完成的任务是对模板文档中指定的一些区域进行相关的操作,例如插入文字、数据、日期、时间等。

WordApplication1->ActiveWindow->ActivePane->View->SeekView=wdSeekCurrentPageHeader;//定位于页眉位置

WordApplication1->Selection->MoveRight(Unit,Count);

WordApplication1->Selection->MoveDown(Unit,Count);//通过上下左右移动光标位置,定位输入点

WordApplication1->Selection->Font->Color=wdColorRed;//设置字体颜色

Word Application1->Selection->Font->Size=12;//设置字体大小

WordApplication1->Selection->TypeText(WideString(DateToStr(Date())));//在当前位置自动测试日期

WordApplication1->ActiveWindow->ActivePane->View->Seek View=wdSeekMainDocument;////切换输入位置,定位于主文档开始处

然后再通过Move Down等方法移动光标到指定输入点,填入合适内容。

WordApplication1->Selection->TypeText(WideString(Antenna));//在当前位置所测试的天线名称

也可以使用goto的方法快速定位光标于输入点:

Ole Variant What;//要寻找的类型,可以使表格,段落,批注等等

Ole Variant Which;//要寻找哪一个,

What=wdGoToTable;

Which=wdGoToNext;

Word Application1->Selection->Go To(What,Which);//使用goto方法,定位于输入点

(5)表格操作和图片插入

在这里通过调用Word Document对象中的Tables来实现表格的绘制和填写。Add函数是添加一个表格。

Variant ItemIndex=1;

Word Document1->ConnectTo(WordApplication1->Documents->Item(ItemIndex));//将WordDocument对象与Word Application对象进行连接

WordDocument1->Tables->Add(WordDocument1->Range(EmptyParam,EmptyParam),4,8);//在Word中添加一个表格

在表格中,我们需要对单元格进行操作,例如在第m个表格的第n行、第l列的这个单元格我们需要插入所做测试的名称,则可以这样操作:

Variant ItemIndex=m;

Variant Row=n;

Variant Column=l;

wchar_t*MeasureName=WideString("Power Level Test");

WordDocument1->Tables->Item(ItemIndex)->Cell(Row,Column)->Range->set_Text(MeasureName);

其中,Item内的值为指定需要进行操作的表格,Cell内值为指定表格中的单元格位置。在表格中如果需要合并两个单元格,可以对单元格进行如下操作:

WordDocument1->Tables->Item(ItemIndex)->Cell(Row1,Column1)->Marge(WordDoc->Tables->Item(ItemIndex)->Cell(Row2,Column2));//将表格中(Row1,Column1)与(Row2,Column2)单元格合并。

在微波综合测试系统中,将测试生成的图片数据插入测试报告是不可或缺的。在Word中添加图片的基本方法是运用剪贴板来实现。首先把图片复制到剪贴板,然后在Word中对应位置粘贴就可以实现。例如把数据库中存储的图片粘贴到Word中其代码如下:

DBImage->CopyToClipboard();

WordDocument1->Sentences->Last->Paste();//粘贴

4. 总结

利用本文介绍的方法实现了微波综合测试系统中测试报告的自动生成。按照测试项目的要求制作出测试模版文件,把测试得到的数据和处理结果通过文字或者图表的形式自动插入到相应的位置,自动生成合乎需求的测试报告,为进一步进行处理检验提供了便利,在微波综合测试系统中极大地提高了工作效率。

参考文献

[1]司宏源,葛太坤.自动化测试中WORD数据报表的实现[J].自动化与仪器仪表,2006,127(5):79-82.

[2]朱正海,周俐,王建军.用C++Builder实现Word的自动化[J].计算机与现代化,2005,121(9):95-98.

上一篇:思想政治工作医患关系下一篇:八项规定