自动功能测试

2024-10-10

自动功能测试(精选11篇)

自动功能测试 篇1

如今的软件开发系统越来越庞大,代码量也越来越大,为了保证一个如此庞大的系统能够正常的工作,就需要在软件开发的过程中投入大量的人力,精力进行软件的评价和测试。在对软件进行评价时,经常会发现一些再现率比较低的bug,对于评价者来说,就必须按照固定的操作步骤反复操作。这种操作枯燥而冗长,并且评价者在这种反复德操作过程中也很容易出错,工作效率很低。

基于以上背景,设计本套装置。软件测试者在要对设备进行测试时,只需将需要发送的遥控器代码按照固定的序列输入一次,然后本套装置会将这一串代码记忆,从下一次开始自动连续的发送该串代码,并将历史数据记录。

在播放机软件开发时,为了即时的监控各个系统间的通信状况,会在播放机和计算机之间建立通信,然后通过数据监控软件实现播放机软件和计算机间的双工通信,一方面播放机中各系统间的通信数据可以在计算机中显示,另一方面,可以通过计算机键盘输入指令,对播放机进行控制。通过这些数据,可以准确的查找出软件异常数据或者错误通信的原因。

本套装置通过红外发射装置连续的向播放机发送固定的代码序列,并将通信数据记录下来。对于再现率很低的软件bug,只要通过分析历史通信数据,查找错误数据,就可以很容易的分析出软件问题点所在,从而加快修正软件bug的进度。

下面结合附图和实施例对本套系统进一步说明。

1 系统构成

附图1是本套系统组成框图的红外接收装置,附图2是本套系统组成框图的遥控器代码序列发射装置及数据跟踪装置。

(1) 测试之前,先要将播放机和计算机连接起来,本套系统在播放机侧使用串行通信接口,计算机侧使用RS232接口 (有些计算机没有RS232接口,可使用USB-RS232转换接口) ,然后打开通信数据实时监控软件(本套装置使用Logtool工具软件),确认播放机和计算机间双工通信正常。这里需要强调的是,Logtool工具软件可以即时的记录播放机各系统之间的数据通信,并且会将数据log自动保存在计算机中,技术人员可以根据log中的函数值,错误提示等快速的分析出软件bug的原因所在,此外,通过logtool工具软件还可以实现在特殊模式下通过键盘输入指令控制播放机进行相关动作。通信正常后,可以进行下一步测试操作。

(2) 当软件测试人员了一个软件bug,并且再现率很低,需要进行反复测试时,如图1所示,打开指令输入序列控制系统和代码序列记忆系统,通过遥控器按照bug再现的步骤发送遥控器代码序列,计算机通过红外接收装置接收遥控器代码序列,并将这些代码序列转换为一串16进制数,存储于计算机中。并将其记忆。

在计算机中,通过测试条件控制软件设定各指令间的时间间隔,测试次数等相关参数。然后通过遥控器代码输出序列控制软件将设定好的遥控器代码序列传送至红外发射装置。红外发射装置此时便取代了遥控器的作用,按照既定的参数重复的发送遥控指令。播放机接收到红外发射装置发射的代码后,就会进行相关的动作,系统框图请参考图2。

此外,为了确保测试过程中为了保证播放机能够完全的重复既定的操作步骤,红外发射装置和播放机的遥控器接收窗口之间应保持良好的通信距离(15—25cm即可),并且不能有阻碍信号发射的物体。

(3) 在计算机侧,测试开始后,会通过实时监控软件 (Logtool) 将所有历史通信数据记录,以便实时跟踪各通信系统之间的数据传输,以便分析软件bug的原因。

2 遥控代码序列输出控制界面

图3的操作控制界面模拟遥控器上的相关操作按键,在此界面中,进行遥控器代码输出序列的生成 (包括按键值,按键间隔时间等) 。

3 控制代码生成

在图3中将遥控器代码输出序列设置完毕后, 会自动生成控制代码, 用以控制红外发射装置, 使其再现之前输入的遥控器代码序列, 使播放机进行相关动作。

本文列举出部分控制代码,以供参考:

Const SEQ_START As String="start"

Const SEQ_END As String="end"

Const LOOP_FOR As String="FOR"

Const LOOP_HDDLOOP As String="H D D L O O P"

Const LOOP_END As String="END"

C o n s t C O M M E N T_R E M O C O N_C O D EAs String="#Remocon_Code"

Const COMMENT_SEQUENCE_STARTAs String="#Sequence_Start"

Const SHEET_REMOCON_CODE_HYOUAs String="key code list"

Const SHEET_DATA As String="D A T A"

.

.

.

Sub string_output ()

Const ForAppending=8

Dim myFileSystem As New Scripting.File System Object

Dim mytextFile As Scripting.TextStream

Set mytextFile=myFileSystem.OpenTextFile (textFile, ForAppending, Tristate False)

mytextFile.Write tempString

mytextFile.Close

change_line

End Sub

.

.

在进行按照特定步骤进行软件测试或者对测试次数有特定要求 (比如, 要求对某系统进行连续十万次操作, 并记下错误数据) 时, 本系统的优越性得到了充分的体现, 可以将测试工作人员从单一乏味的工作中解脱出来, 避免了由于测试人员工作失误而造成的错误, 大大提高了工作效率以及数据的准确性, 而且, 由于可以即时的跟踪到通信数据, 为软件设计人员更快, 更准确的查找软件问题点提供了良好的数据信息。

[特别感谢]

本项目开发期间, 得到宋恩明和常宏两位同事的大力协助, 在此表示感谢。

摘要:本文介绍的是一种播放机软件自动测试装置, 尤其是一种可降低测试者劳动强度、避免重复测试中的操作错误、提高测试效率及准确率的播放机软件自动测试装置。本装置系统由红外接收装置, RS232-串行通信转换装置, 通信数据实时监控装置, 遥控器代码输出控制装置以及红外发射装置组成。

关键词:通信,测试

参考文献

[1]樊昌信等.通信原理及系统实验.北京:电子工业出版社, 2007.

[2]陈树新.现代通信系统建模与仿真.西安:西安电子科技大学出版社, 2007.

[3]康华光.电子技术基础[M].高等教育出版社, 1988.

[4]李冬梅等.通用学习式红外遥控器中数据压缩与识别算法[M].清华大学学报 (自然科学版) , 2000.

不让系统自动功能误事 篇2

清除磁贴缓存功能

在Windows 8系统中,最新访问的网页内容,或者最近发送的聊天内容,可能会以动态磁贴的形式,被自动缓存记忆下来。其他人登录进入Windows 8系统的Metro界面后,就可以通过点击磁贴图标的形式,访问到这些缓存内容。很明显,这种功能容易暴露用户的访问隐私。为了保护个人隐私,我们不妨进行如下设置操作,强制Windows 8系统每次在关机时,将磁贴缓存中的隐私内容自动清理掉:

首先使用“Win+X”快捷键,调出系统访问快捷菜单,选择“运行”命令,在弹出的系统运行对话框中,执行“gpedit.msc”命令,进入系统组策略控制台窗口。在该窗口的左侧显示区域中,依次跳转到“本地计算机策略”|“用户配置”|“管理模板”|“‘开始’菜单和任务栏”节点上。

其次找到该节点下的“退出系统时清除瓦片通知和历史记录”选项,并用鼠标双击该选项,打开如图1所示的选项设置对话框,看看这里的“已启用”选项有没有被选中,要是看到其还没有被选中时,应该及时将其重新选中,再点击“确定”按钮退出设置对话框。这样,Windows系统每次执行注销或关机操作时,自动缓存下来的磁贴内容会被强制删除掉,当其他人重新登录Windows 8系统后,磁贴信息只会按缺省设置来显示,那么个人访问隐私就不会被他人发现了。

关闭登录显示功能

从Vista系统开始,用户每次成功登录进入系统桌面后,都能看到上次系统登录状态信息,包括登录系统的时间,以及登录系统时使用的账号名称等,这项自动功能虽然有助于提升系统安全防范能力,但是也容易暴露个人的登录隐私。如果不希望自己的登录痕迹被人发现时,不妨尝试进行如下操作,关闭Windows系统缺省启用的登录显示功能:

首先使用“Win+R”快捷键,调出系统运行对话框,在其中执行“gpedit.msc”命令,切换到系统组策略控制台窗口。在该控制台窗口的左侧列表中,依次跳转到“本地计算机策略”|“计算机配置”|“管理模板”|“Windows组件”|“Windows登录选项”节点上。

其次从目标节点下找到“在用户登录期间显示有关以前登录的信息”选项,并用鼠标双击该选项,弹出如图2所示的组策略属性对话框,检查“已禁用”选项是否被选中,如果发现其还没有被选中时,应该及时将其选中,再点击“确定”按钮退出设置对话框,这样就能成功将Windows系统的登录显示功能给关闭了。

禁止保存运行记录

为了帮助用户快速调用以前执行过的命令,Win8系统默认会支持命令运行保存功能,该功能会将用户最近运行过的所有命令自动保留下来,用户日后只要从系统运行对话框中就能实现快速调用目的。然而,在多用户账号环境下,其他用户很容易从系统运行对话框中,看到个人最近的运行隐私。为了防止他人偷窥自己的程序运行隐私,我们有必要及时采取措施,将系统缺省启用的运行记录自动保存功能关闭掉,让系统运行对话框不再自动保存用户最近执行过的命令或程序名称。

首先点击Windows 8系统Metro界面中的“桌面”磁贴,进入Win8系统桌面,在系统任务栏空白区域单击鼠标,从弹出的右键菜单中选择“属性”命令,切换到系统任务栏属性设置框。点击“跳转列表”选项卡,弹出如图3所示的选项设置页面。检查这里的“在跳转列表中存储并显示最近打开的项目”、“存储最近打开的程序”等选项,有没有处于选中状态,一旦看到它们已经被选中时,应该将它们的选中状态立即取消掉,点击“确定”按钮退出设置对话框即可。

如果希望Windows系统不自动保存最近打开的文档时,也可以打开系统运行对话框,在其中执行“gpedit.msc”命令,弹出系统组策略控制台窗口。在该控制台窗口左侧列表中,依次跳转到“本地计算机策略”|“用户配置”|“管理模板”|“开始菜单和任务栏”节点上,从该节点下双击“不保留最近打开的文档记录”选项,在其后弹出的选项设置框中,将“已启用”选项选中,再单击“确定”按钮退出设置对话框,这样Windows系统也会关闭文档保留和运行记录保存功能。

关闭搜索记忆功能

自从Windows 7系统正式面世之后,它的各项功能都受到了用户的好评,其中该系统的搜索功能更是一个亮点,成为很多用户最常用的一个功能。不过,该功能在每次完成文件搜索任务后,都会将以前的搜索关键字记忆下来,并自动显示在搜索文本框中,别人可以很轻松地在这里发现自己的查询隐私。为了保护个人搜索隐私,建议大家尽量关闭系统的自动搜索记忆功能,以免留下安全麻烦。

首先在系统“开始”菜单中,点击“运行”命令,切换到系统运行对话框,输入“gpedit.msc”命令,单击“确定”按钮,弹出系统组策略控制台窗口。在该控制台窗口左侧列表中,依次跳转到“本地计算机策略”|“用户配置”|“管理模板”|“Windows组件”|“Windows资源管理器”节点上,找到该节点下的“在Windows资源管理器搜索框中关闭最近搜索条目的显示”选项。

其次用鼠标双击“在Windows资源管理器搜索框中关闭最近搜索条目的显示”选项,展开如图4所示的选项设置对话框,检查“已启用”选项有没有被选中,一旦看到其没有被选中时,应该将其重新选中,最后单击“确定”按钮退出设置对话框,这样就能关闭搜索自动记忆功能,那么日后自己的搜索痕迹就不会被轻易察觉了。

关闭感染报告功能

在流氓软件疯狂肆虐的今天,遭遇流氓软件攻击几乎是不可避免的事情。为了减少安全威胁,很多人往往会利用Microsoft公司设计的Windows Malicious Software Removal Tool工具,来对付“埋伏”在本地计算机各个角落出的流氓软件。然而,该工具在探测流氓软件是否存在时,除了会将探测到流氓软件自动清除外,还会将感染报告信息自动发给微软官方网站,该报告内容中时常会包含本地计算机中的一些重要隐私内容。如果不希望本地隐私信息被感染报告信息出卖时,不妨将感染信息报告功能关闭掉。

nlc202309011230

首先使用“Win+R”快捷键调出系统运行对话框,在其中执行“regedit”命令,切换到系统注册表控制台窗口。在该控制台窗口左侧显示窗格中,依次跳转到“HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft”注册表节点上,如图5所示。

其次检查目标节点下是否存在“MRT”子项,如果发现该子项不存在时,可以用鼠标右键单击“Microsoft”节点选项,从弹出的快捷菜单中依次点击“新建”|“项”命令,手工创建好“MRT”子项,之后在“MRT”子项下面手工创建一个名为“DontReportInfectionInformation”的双字节键值,同时将其数值设置为“1”,最后单击“确定”按钮退出设置对话框,这样再次重启动系统后,感染报告自动发送功能就被成功关闭了。

关闭共享脱机同步

现在,Windows系统都支持共享脱机同步功能,通过该功能用户在脱机连接状态下,也能继续访问网络中的共享资源。不过,成功开启共享文件夹的脱机同步功能后,用户的共享访问痕迹,会以副本形式被自动保存在本地硬盘中,日后其他人通过查看副本内容,就能察觉到用户的共享访问隐私。

如果不希望自己的共享访问隐私泄露出去,我们必须将共享脱机同步功能立即关闭掉。比方说,在Windows 7系统环境下,要将共享脱机同步功能关闭时,不妨依次点击“开始”|“控制面板”命令,逐一双击系统控制面板窗口中的“同步中心”、“管理脱机文件”图标,切换到如图6所示的设置界面,点击“禁用脱机文件”按钮,就能将脱机同步功能关闭掉了。

当然,在Windows XP操作系统中,我们也能对脱机共享文件执行加密操作,来拒绝共享访问隐私的外泄。在进行该操作时,可以依次点击“开始”|“程序”|“附件”|“Windows资源管理器”命令,打开系统资源管理器窗口,依次选择“工具”|“文件夹选项”命令,弹出文件夹选项设置界面,点击“脱机文件”标签,在对应标签页面中,将“为保护数据安全而对脱机文件进行加密”选项选中,最后单击“确定”按钮保存设置操作,这样脱机共享内容日后就能被加密保护起来了。

关闭自动更新提示

很多网络病毒都是通过系统漏洞实施非法攻击的,为了减少漏洞攻击,很多人会开启自动下载并安装更新功能,来及时为系统打上各种漏洞补丁。然而,这种功能在更新安装完补丁程序后,往往会自动弹出提示,要求用户及时重启系统,而且该提示默认会隔十分钟出现一次。很显然,在特定场合下,该自动提示功能反而会打断正常工作,影响用户工作效率。为了不让日常工作受到干扰,我们有必要关闭系统更新的自动重启提示功能,下面就是详细的关闭步骤:

首先使用“Win+R”快捷键调出系统运行对话框,在其中执行“gpedit.msc”命令,展开系统组策略控制台窗口。在该控制台窗口左侧列表中,依次跳转到“本地计算机策略”|“计算机配置”|“管理模板”|“Windows组件”|“Windows Update”节点上,从该节点下选中“对计划的安装再次提示重新启动”组策略。

其次用鼠标双击该组策略,弹出如图7所示的组策略选项设置框,将“已启用”选项选中,在“等待时间”设置项处,将缺省的10分钟时间修改为更长的时间,比方说在这里可以输入240分钟,再点击“确定”按钮退出设置对话框,这样系统自动弹出重启提示的间隔时间就会变成4小时。

如果不希望系统自动弹出重启提示时,也可以直接将该功能关闭掉。在系统组策略控制台窗口左侧列表中,依次跳转到“本地计算机策略”|“计算机配置”|“管理模板”|“Windows组件”|“Windows Update”节点上,双击该节点下的“计划的自动更新安装后不自动重启动”选项,在弹出的选项设置框中,将“已启用”选项选中即可。

关闭磁盘隐藏共享

为了便于进行远程管理,Windows系统默认会为所有磁盘分区生成一个隐藏共享。然而,这种隐藏共享很容易被恶意用户利用,从而给磁盘中的数据安全带来麻烦。在对数据安全较高的场合下,我们应该及时关闭磁盘分区的隐藏共享功能,下面就是具体的操作步骤:

首先使用记事本之类的文本编辑程序,创建一个名为“111.bat”批处理文件,在该文件中输入下面的命令代码:

@echo off

net share C$ /del

net share D$ /del

……

双击该文件后,所有磁盘分区的隐藏共享都会被自动删除。不过,每次重启计算机后,各个磁盘分区隐藏共享又会自动生成,所以我们不妨强制系统每次启动结束后,自动执行“111.bat”批处理文件,来自动关闭每个磁盘分区的隐藏共享。要做到这一点,可以依次选择“开始”|“运行”选项,在弹出的系统运行对话框中,执行“gpedit.msc”命令,进入系统组策略控制台窗口。从该窗口左侧列表中,依次跳转到“本地计算机策略”|“计算机配置”|“Windows设置”|“脚本(启动/关机)”节点上,找到该节点下的“启动”选项。

用鼠标双击“启动”选项,展开如图8所示的选项设置对话框,点击“添加”按钮,切换到脚本文件选择对话框,按下“浏览”按钮,从文件浏览框中选中并导入“111.bat”批处理文件,确认后退出设置对话框,这样系统每次就能自动关闭磁盘分区的隐藏共享了。

关闭系统网络发现

大家知道,Vista以上版本系统都具有网络发现功能,该功能借助链路层拓扑发现响应程序,可以对网络设备的上网状态进行自动监控,用户能通过它有效定位网络故障产生位置以及寻找故障原因。然而,在一些特定场合下,网络发现功能也容易将用户的上网行踪轻易暴露,从而可能会带来安全麻烦。为了保证用户上网安全,我们不妨按照下面的操作,关闭系统网络发现功能。

首先用鼠标右键单击系统托盘区域处的网络连接图标,执行右键菜单中的“打开网络和共享中心”命令,进入网络和共享中心管理界面,点击其中的“更改适配器设备”选项,展开网络连接列表界面。

其次选中“本地连接”图标,并用鼠标右键单击之,选择快捷菜单的“属性”命令,展开本地连接属性对话框框,取消选中链路层拓扑发现响应程序以及链路层拓扑发现映射器I/O驱动程序选项,如图9所示,确认后本地计算机的网络发现功能就被成功关闭了。

关闭自动维护功能

在安装了Windows 8系统的计算机中,用户或许会发现系统在待机状态下,硬盘指示灯有时仍然在不停闪烁,这种现象是Windows 8系统的自动维护功能引起的。该功能可以在系统“休息”的时候,在系统后台自动整理磁盘碎片,以实现对系统的优化目的。然而,该功能对SSD硬盘来说作用不大,相反还会影响硬盘工作寿命。为了延长硬盘使用寿命,我们可以按照如下操作,关闭自动维护功能:

首先使用“Win+X”快捷键,调用系统访问快捷菜单,选择“控制面板”命令,依次双击系统控制面板窗口中的“管理工具”|“任务计划程序”图标,进入任务计划程序窗口。在该窗口左侧区域中,将鼠标定位到 Microsoft\Windows\TaskScheduler节点上,如图10所示。

找到目标节点下面的Idle Maintenance、Regular Maintenance选项,并用鼠标右键单击之,选择右键菜单中的“禁用”命令,将这些选项全部禁止运行,就能立即关闭Windows 8系统的自动维护功能了。

自动功能测试 篇3

1 电压时间型馈线自动化系统的构成

电压时间型馈线自动化是配电网馈线自动化 (distribu-tion feeder automation, 简称FA) 的一种实现方式, 主要由以下设备构成:

1) 柱上真空负荷开关 (PVS) :具有失压瞬时脱扣功能, 并能够与控制器 (FDR) 配合, 实现自动合闸。

2) 一体型摇控控制单元 (FDR) :柱上负荷开关的控制器。

作为分段开关逻辑功能:

a.失电后分闸;

b.单侧得电延时合闸;

c.闭锁合闸功能;

d.开关非遮断电流保护功能;

e.残压闭锁功能。

作为联络开关逻辑功能:

a.两侧有压闭锁合闸;b.单侧失压延时合闸;c.残压闭锁功能。

整定时间参数:

X时限:真空负荷开关的自动合闸时间, 指从开关电源侧有压至柱上开关合闸的延时时间。

X时间整定范围:

Y时限:故障检测时间, 指柱上开关合闸后, 若开关合闸之后在Y时间之内没有失压, 开关实现合闸, 若在开关合闸之后在Y时间之内失压 (失压时间超过3.5S±0.3S) , 则该柱上开关分闸并被闭锁在分闸状态, 待下一次电源侧有压时不再自动重合;若超过Y时限, 即判断为线路正常, 柱上负荷开关可以进行再次重合。Y时间整定范围:5S或10S, 一般整定为5S。

3) 开关电源变压器 (SPS) :小型干式变压器, 给控制单元 (FDR) 和柱上负荷开关 (PVS) 提供操作电源与参数, 进行逻辑判断。

4) 故障区间指示器 (FSI) :辅助查找故障范围, 即带通迅功能反牌式故障指示器。用于未安装柱上负荷开关的支线, 只作快速判断故障的作用, 无控制功能。

2 电压时间型馈线自动化系统的工作原理

重合器与电压时间型分段负荷开关配合的馈线自动化系统是一种典型的就地型馈线自动化模式, 适用于辐射网、“手拉手”环网和多分段多联络的简单网格状配电网。

重合器采用具有两次重合功能的断路器, 第一次重合闸延时长 (典型为15s) , 第二次重合时间短 (典型为5s) 。重合闸时间各区域设置略有不同。分段负荷开关具备两套功能:当作为线路分段开关时, 设置为第一套功能, 一侧带电后延时X时限自动合闸, 合到故障点引起重合器和分段负荷开关第二轮跳闸, 故障区间两侧的分段开关由于Y时限和故障残压闭锁, 重合器再次延时重合后恢复故障点电源侧的健全区域供电。联络开关设置为第二套功能, 当一侧失电后延时XL时限后自动合闸, 恢复故障点负荷侧的健全区域供电。另外分段开关在X时限或联络开关在XL时限内检测到开关两侧带电, 禁止合闸避免合环运行。

电压时间型馈线自动化系统的优点在于其技术简单可靠, 在无需通信通道的条件下实现了配网的故障定位, 故障隔离及非故障区恢复供电的自动化, 从而缩少了停电区域和停电时间, 使配网的操作, 运行效率及供电可靠性得以大幅提高。但是也可以看出其缺点[1]是:故障处理及供电恢复速度较慢, 对系统及用户冲击大, 需改变变电站重合闸次数。

3 电压时间型馈线自动化系统FA功能的测试

试验按照区间故障的时间间隔通过传动开关跳闸来模拟不同区间故障的方法, 测试各柱上负荷开关的功能是否正常。为避免开关多次分合闸, 影响客户的设备, 试验前, 将线路上的负荷进行了转移或停电操作, 线路空载运行。

在变电站由继保人员按照区间故障的时间间隔通过传动开关跳闸, 模拟保护动作, 重合闸按整定时间整定, 保护跳闸压板、重合闸压板均应投入。在各柱上负荷开关, 派专人用秒表记录各柱上负荷开关分合闸时间。

以一个区间发生永久故障为例, 具体试验步骤如下:模拟 (3) 段内发生永久性故障测试完成时各开关状态, 见图1:

1) 通过二次回路使东禺1跳闸。

2) 5S后, 东禺1自动重合, 同时站内工作人员开始计时。

3) 现场指挥在计时42~47S时, 命令继保人员使东禺1再次跳闸, 站内计时人员在断路器跳闸即停止计时, 并记录当前测得时间。

4) 5S后, 东禺1再次自动重合。

5) A、B、C、D、G、H处线路人员观察开关状态及所测时间。

6) 恢复正常运行方式:命令H处线路人员手动断开H, 命令C处线路人员解除C闭锁 (C闭锁解除自动合闸, D闭锁自动解除、延时后自动合闸) 。

7) 线路人员向现场指挥报告各开关状态。试验结果见下表1。

试验表明, 东禺线、城北线馈线自动化系统能确定和自动隔离故障点, 恢复非故障区间供电。

4 系统存在的问题与解决方案

系统投运后, 如线路上发生永久性故障, 非故障段最长将在120S内自动恢复供电, 供电可靠性将大大提高。但系统在运行中存在以下问题, 如图2所示。

以岗头变电站为例:当岗头变电站发生变压器故障或其他原因引起10k V母线失压 (或全站失压) 时, 城北1开关在合闸位置, 由于城北线失压, 城北5T1开关失压自跳, 城北18T1开关自动装置计时105S后自动合闸, 城北5T1开关得电计时28S后自动合闸, 此时相当东禺线反送电到岗头变电站, 如造成东禺线过负荷, 东禺1保护动作, 将使停电范围扩大。同样, 羚山站发生失压时也可能造成城北线跳闸。

为防止以上情况的发生, 可采取以下措施:

1) 羚山变电站东禺1开关、岗头变电站城北1开关保护加装失压脱扣装置。

2) 将馈线出口处的柱上负荷开关连接方式改为单相PT投入的方式, 如下图:

如上图所示, 当变电站正常供电时, 当电送到S端时FDR检测到S端来电并经7秒延时后FDR发出指令开关合闸, 电送到L端;反之当变电站停电时, 联络开关合闸后, 电由另一方送到L端, 由于FDR感受不到L端来因此开关不合闸, 防止反送到站内, 使反送电只到第一个开关处, 但这样会使自动供电区域缩小。

5 结语

通过分析测试FA功能, 可以看出电压时间型馈线自动化虽然能够实现一定程度上的馈线自动化, 但在没有后台主站系统的支持下, 只能用于网架结构简单的放射型线路和“手接手”线路, 在结构复杂、联络较多的, 网格状配网线路上实施时, 必须由主站进行集中控制。因此建立一个现代化的配网自动化系统, 逐步实现电力系统配网自动化。

摘要:本文分析了配电自动化系统的初级价段——电压时间型馈线自动化系统与变电站DCH-1型重合闸装置配合, 通过合理整定系统各装置的时间, 实现发生故障时, 明确故障区间、自动隔离恢复供电的功能 (即FA功能) 。

关键词:配网自动化系统,时间整定,重合闸,柱上负荷开关,功能测试

参考文献

[1]吴敏, 等.无信道馈线故障处理技术[J].电力系统自动化, 2000, 24 (12) :39-41.

[2]周小梅.配网自动化DA实现策略[C].第四届输配技术国际会议第四届输配电技术国际会议论文集, 2003.

word中自动更正功能 篇4

在“自动更正”选项卡中有很多复选框,每个复选据代表—种自动更正功能。以下列出它们各自代表的含义:

●显示“自动更正选项”按钮 自动更正后显示“自动更正选项”

●更正前两个字母连续大写 将单词中前两个字母连续大写的第二个大写字母改为小写

●句首字母大写 指每句的第一个英文字母改为大写

●表格单元格的首字母大写 将输入到表格单元中的第一个字母大写

●英文日期第一个字母大写 将英文日期中的第一个英文字母改为大写

●更正意外使用大写锁定键 将因误按“Caps Lock”键而输入的大写字母改为小写,并产生的大小写错误 且关掉“Caps Lock”键

自动功能测试 篇5

1. 自动待机等节能功能失效

有人遇到升级Windows 10之后,系统无法实现自动休眠、自动待机和自动关屏等节能功能。根据微软给出的解释,这主要是由于系统中的某些设备驱动不兼容,同时又与Windows系统的“快速启动”有所冲突所致。关闭Windows 10系统的“快速启动”功能,即可避开冲突。

用Win+X组合键开启系统控制菜单并选择“电源选项”,在左侧栏内点击“选择电源按钮的功能”项(图1)。但这时看到“启用快速启动”选项处于灰色不可选失效状态,因而也无法取消这项功能。点击该窗口上部的“更改当前不可用的设置”蓝色文字链接(图2)。接下来会看到,窗口下方的“启用快速启动”选项已经变得可选了。将该项选择取消,点击“保存修改”按钮(图3)。

2. 网络状态自动报告监视失效

Windows 10系统本身会自动监测网络的状态。如果网络物理连接正常但网络链接不可用,会在系统右下角的托盘上显示黄色惊叹号图标(图4)。但是,有时我们使用了特殊代理服务器上网或设置了连接过滤,这时,即便是网络处于正常情况,也会出现惊叹号图标,且这个图标无法靠点击关闭。这时只能借助于修改注册表来消除此图标。

用Win+R打开运行窗口,运行REGEDIT命令开启注册表编辑器。依次定位到“HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Network Connections”,在右侧窗格中新建名为NC_DoNotShowLocalOnlyIcon的DWORD项,双击该项将其值修改为1即可(图5)。关闭注册表编辑器,在任务管理器中重启资源管理器,看任务栏网络图标是否已经消失,若修改后图标依然没有消失,请重启系统尝试。

3. 自动更新强行中断后失效

Windows 10 TH2是继Windows 10 10240正式版之后的一次底层大更新。该版本的系统有很多种安装方式,但由于不少用户此前已经在使用10240正式版了,因此多数采用在正式版基础上升级的方式进行安装。升级过程中,由于断电或死机等特殊情况,可能会造成加电重启之后无法接续进行升级进程,系统只能停留在原10240版本上。遇到这种情况,可采用清理更新缓存后重新开启升级更新来解决。

首先定位到系统“Windows\SoftwareDistribution\Download”文件夹,删除其中的所有文件。然后用Win+R组合键开启“运行”窗口,执行“WUAUCLT /updatenow”命令(注意输入斜杠前的半角空格)(图6)。重新开启Windows更新程序进行升级即可。

4. 通知自动提示时间太短

Windows 10的通知栏自动通知浮出信息不再采用Windows 7的气球模式,且通知浮出的时间非常短,有时看不完显示内容就消失了。实际上,Windows 10采用了新的通知栏区域面板,含有比早期系统的操作中心更加丰富的通知信息,只需点击右下角的通知栏图标,即可进入查看先前没看清的通知内容了(图7)。但若喜欢老式气泡通知样式,也有办法找回,且可以让停留时间更长一些。

启动注册表编辑器,依次定位到“HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Explorer”,新建一个DWORD(32位)类型的项,将新建的项命名为EnableLegacyBalloonNotifications,并将其值设为1。退出注册表编辑器,重启资源管理器(或重启电脑)(图8)。这样,以后Windows 10的通知栏浮出信息模式将变为气泡式,且显示的时间也变长了。

汽车自动保护功能分析 篇6

汽车上的起动系统主要由蓄电池、点火开关、起动机和继电器组成, 而继电器又有起动继电器和组合继电器两种。正是由于起动系统所使用的继电器不同, 才决定了装用组合继电器的起动系统具有自动保护功能, 而装用一个起动继电器的起动系统则不具备自动保护功能。装用组合继电器的起动系统电路原理图如下, 本文根据该图分析自动保护功能的原理及相应故障的判断、排除方法。

1 电路图说明

图中的起动机上有三个接线柱, 分别是:D、4、5。其中, D接柱就是起动机吸力包上的50接柱, 内部对应的是吸拉线圈和保持线圈;4接柱是起动机的主接柱, 经常用30来表示;5接柱就是起动机的附加电阻短路接柱, 直接连的是点火线圈上的附加电阻。

2 起动过程

发动机起动时, 司机将点火开关拧至起动档, 此时点火开关上的1、2、4三个接柱有电, 从蓄电池正极出发的电流分两个支路。一个是:蓄电池正极→熔断器F14→电流表→点火开关 (1→2) →充电指示灯→L接柱→组合继电器的常闭触点→E接柱→蓄电池负极。此时, 蓄电池放电, 充电指示灯亮。另一个电路是:蓄电池正极→熔断器F14→电流表→点火开关 (1→4) →组合继电器 (SW→线圈1→常闭触点) →E接柱→蓄电池负极。此时, 线圈1通电形成回路, 控制常开触点吸合, 将组合继电器的B接柱和S接柱接通, 从而接通起动机的电磁开关电路, 其电流走向为:蓄电池正极→组合继电器 (B→S) →D接柱→保持线圈→搭铁, 同时, 蓄电池正极→组合继电器 (B→S) →D接柱→吸拉线圈→起动机的励磁绕组、电枢绕组→搭铁。两个线圈通电, 产生电磁吸力, 将起动机电磁开关内的主触点与主接触盘接通, 产生电磁转矩, 带动曲轴旋转。

3 起动后

发动机起动后, 点火开关回位, 回到正常行车档, 即1档。此时, 点火开关的1、2、3三个接柱有电。同时, 发电机的转子轴在曲轴的带动下开始旋转, 发电机正常发电。发电机的电压超出蓄电池的额定电压时, 除了向全车的用电设备供电, 还要给蓄电池充电。由于发电机中性点电压是发电机所输出的直流电压值的一半, 所以电路为:发电机中性点N→组合继电器 (N接柱→线圈2) →搭铁, 此时, 线圈2通电形成回路, 控制常闭触点断开。根据起动过程的分析可知, 充电指示灯电路和组合继电器的线圈1的电路都不能接通, 所以, 充电指示灯灭, 起动机不工作。在汽车正常行驶过程中, 如果司机有误操作现象, 又把点火开关打到了起动档, 虽然4接柱又通电, 但由于发电机中性点电压的作用, 起动机也不会再工作。这就是自动保护功能。由于单纯的起动继电器没有中性点接柱, 所以不能控制常闭触点的断开, 也就不具备自动保护功能。

4 汽车失去自动保护功能故障分析

4.1 现象

对于装用组合继电器的起动系统的汽车而言, 在正常行驶过程中, 如果司机又把点火开关错误地打到了起动档时, 听到了齿轮撞击的声音, 这是起动机上的驱动小齿轮和飞轮齿圈啮合的声音。如果自动保护功能正常, 是不应该出现齿轮撞击声音的, 所以根据该现象, 就可以断定是失去了自动保护功能。

4.2 原因

根据对起动过程的分析, 可以很容易地分析出引起失去自动保护功能的原因主要有: (1) 充电系统有故障, 发电机中性点无电压; (2) 发电机中性点N到组合继电器的N接柱之间的导线断路或连接不良; (3) 线圈2断路、短路或搭铁; (4) 常闭触点烧结不能断开。

4.3 诊断方法及处理措施

起动发动机并保持中速运转。首先, 用万用表的电压档检测发电机中性点N与搭铁之间的电压应为发电机所输出的直流电压值的一半。如果电压为零或很小, 则说明发电机不能正常发电, 应该检修发电机或充电系统;如果电压正常, 则说明充电系统正常。然后, 应进一步检查发电机中性点N到组合继电器的N接柱之间的导线, 如果有断路情况应排除;如果导线连接正常, 则应检查组合继电器的线圈2和常闭触点。拆开组合继电器, 用万用表的欧姆档检测组合继电器的N接柱与搭铁之间的电阻值。如果为零, 说明线圈2有搭铁故障;如果为无穷大, 说明线圈2有断路故障;出现这两种情况均应重新绕制线圈。如果有一定的阻值, 说明线圈2正常。最后, 检查常闭触点的开闭情况及接触情况。动、静触点应该保证接合面平整, 接触面积在80%以上, 无烧蚀、烧结的现象, 并且应该能顺利地闭合、断开, 否则就应该对触点进行打磨或更换。烧蚀较轻的可以用0-0#砂纸打磨, 烧蚀严重的则应更换。

5 总结

自动化测试方法 篇7

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

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 结论

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

自动功能测试 篇8

一直以来, 电力供应都是确保经济体系本身能否持续增长的关键所在, 电力本身是以一种商品的身份来进入到市场之中, 那么如果说在这一极其重要的资源商品停止供应以后, 就必须要追求电力经营人员的责任。从另一方面来说, 对配电网供电的可靠性进行强化, 同样也是电力经营人员本身所必须要进行深入研究的问题。尤其是在当前市场不断发展的情况下, 电力市场的需求在持续不断的扩大, 这直接促使配电网的自动化发展成为了当前城乡改造过程中的一个主要趋势。下文主要针对配电网自动化系统故障自动隔离功能进行了全面详细的探讨。

1 馈线自动化系统的主要功能

配电网自动化技术, 实质上就是直接为城乡配电网改造建设提供良好服务的关键所在, 配电网自动化技术之中, 主要包含了馈线自动化、配电管理这两个主要的子系统, 而通讯技术是否良好则是确保配电自动化能否实现的一个关键所在。就目前来说, 我国在配电自动化技术的应用方面, 已经进行了大量的试点工作, 并且在试验的过程中主要应用的是配电主站、子站以及馈线终端这三个部分所形成的结构体系已经得到了大范围的应用, 并且展示出来了极为良好的自动化效果。馈线自动化功能在实际实现的过程中, 主要是通过光纤通信来作为了通信方式, 利用这一形式, 来切实有效的实现了馈线自动化功能执行过程中的时效性, 从当前电力行业发展的需求来说, 配电网的自动化转变, 已经成为了当前市场建设过程中一个趋势。从功能上来说, 馈线的自动化的本身目的就是为了能够对配网运行过程中的负荷以及运行方式进行监控。但是由于我国现目前在这一方面还没有一个系统性的建设模式, 因此, 在不同条件下和环境下所产生的配网方案也有着极大的差异性, 下文主要针对某个手拉手项目的供电网建设工作来作为研究的主要对象, 以此来针对其中所涉及到的自动化故障自动隔离功能解决措施进行了分析。

在馈线自动化系统之中, 所存在的主要功能有以下几个方面:遥信、遥测、遥控;故障处理, 针对配电网运行过程中所呈现出来的故障区域进行自动的判断, 从而通过远程遥控的方式, 来直接将故障区域完全隔离, 当故障在经过人工处理并且消除之后, 接收到恢复正常的讯号, 再进行供电恢复;负荷管理, 依据当前电网实时承受的负荷变化, 来针对配电网的具体运行方式进行自动化的调控;重合闸控制, 当配电网在运行的过程中出现了过电流后, 会直接自动的将断路器断开, 当断路器正常通电区域的电压完全恢复之后, 再开始通电恢复及时, 以此来确保能够从电源的末端的断路器能够依次进行自动化的闭合, 如果说在进行闭合的过程中完全失败, 那么就不会进行二次闭合, 而是等待电路再次发出恢复正常的讯号;对时功能, 能够自动对系统之中的时间进行核对;过电流记录, 针对配电网运行过程中各个不同区域所出现的过电流短路现象进行记录, 以方面后期的维护检修员工作。

2 故障区段定位技术

2.1 馈线故障区段的定位

对于辐射状网、树状网和处于开环运行的环状网, 在判断故障区域时, 只须根据馈线沿线各断路器是否流过故障电流就可以判断故障区段。假设馈线上出现单一故障, 显然故障区段位于从电源侧到线路末端方向最后一个经历了故障电流的断路器和第一个未经历故障电流的断路器之间。

2.2 事故跳闸断路器的定位

为了确定各断路器是否经历了故障电流, 需对安装于其上的各台FTU进行整定, 由于从原理上不是通过对各台断路器整定值的差别, 来隔离故障区段的, 因此多台断路器可以采用同一定值。这样即使增加馈线上的分段数目也不会带来任何影响。而故障区段隔离后, 越级跳闸的断路器要复位, 对于事故后跳闸断路器的准确定位是非故障区段自动恢复供电的关键。

2.3 断路器状态描述矩阵

我们可以用1维矩阵运算来判别断路器是否越级跳闸。矩阵编写原则为:若第i台断路器在合闸位置, 矩阵第i元素置为1, 反之为0。正常运行各断路器的状态可用矩阵A来描述, 正常运行时A:|11110111|。对于上例, 假设e点故障时断路器2跳开, 断路器3未跳开, 我们可用矩阵B来描述故障后的断路器状态, 如B:|10110111|。

2.4 事故跳闸断路器定位矩阵

用事故前断路器状态信息矩阵A减去事故后断路器状态信息矩阵B, 即可准确地识别事故跳闸断路器。对于上例可用事故跳闸断路器定位矩阵C来确定C=A-B=|01000000|。由于C矩阵中第2个元素值为1, 则说明故障时是由断路器2跳闸切断故障电流的。根据前边计算可知, 故障区段位于断路器3和4之间。故应自动恢复断路器2到合闸位置。对于利用计算机系统实现的馈线自动化功能, 从故障段查找、隔离、非故障段自动恢复, 一般仅需要十几秒钟。

3 供电线路分段及支线断路器的要求

线路"过流保护"保护范围内的故障, 应由线路分段断路器跳闸切断故障电流, 变电所出线断路器不动作;线路"速断保护"保护范围内的故障, 应由变电所出线断路器跳闸切断故障电流, 在进行一次重合闸, 线路分段断路器不应动作;支线故障情况下, 首先跳开支线断路器, 不让故障越级到主干线路;支线断路器定值在满足运行条件下应尽可能的小, 跳闸延时时间尽可能的短。

4 结束语

综上所述, 配电网的自动化发展是我国城乡电网改造过程中的一个必然趋势, 一直以来, 城乡配电网的改造都没有得到良好的重视, 这直接导致了城乡配电网自身的结构性极为薄弱, 并且供电能力无法完全满足日常使用和生产的需求。尤其是在我国开始针对城乡配电网进行大力改造之后, 配电网的建设目标得到了明确, 这对于我国的整体经济体系发展来说有着极其重要的作用。

摘要:配电网自动化技术是现代城乡建设过程中所涉及到的一项重要电网改造, 配电自动化技术之中, 不仅仅包含了配电管理系统, 还囊括了自动化馈线技术, 这两个方面的技术是确保配电是否能够自动化的关键所在。配电网自身的自动化发展趋势, 是社会经济体系以及科技技术影响之下的一个必然。本篇文章主要针对配电网自动化系统线路故障自动隔离功能进行了全面详细的探讨, 以期为我国的配电网自动化技术发展作出贡献。

关键词:馈线自动化,故障区段定位,自动隔离

参考文献

[1]孙德胜, 郭志忠, 王刚军.配电自动化系统综述[J].继电器, 1999, 2 (73) .

[2]林功平.配电网馈线自动化解决方案的技术策略[J].电力系统自动化, 2001, 2 (54) .

C程序自动测试方法 篇9

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

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.

基于XML的软件自动化测试 篇10

关键词: 软件测试; 自动化; 自动化测试; 测试工具; 可扩展标记语言技术

中图分类号: TP 31文献标识码: Adoi: 10.3969/j.issn.10055630.2013.02.004

引言随着计算机应用日益普及和深化,用户对软件的需求越来越多,对软件要求也总是在不断变化[1]。AutoCAD产品在软件国际化的过程中,每次修改都需要对大量的测试用例进行反复测试,还要在不同语言版本的操作系统平台上测试,这就使得该项目的测试工作极为繁琐。软件自动化测试作为保证软件质量和可靠性的关键技术手段,正日益受到广泛的重视。但如何进行测试,如何提高测试的质量和效率,仍然是许多人深感困扰的问题[2]。根据对AutoCAD软件测试项目研究与实践的体会,介绍软件自动化测试技术的概述、基本过程和实现。结合实用的Silk Test工具以及可扩展标记语言技术(extensible markup language,XML),给出整个自动化测试框架。1自动化测试概述整个自动化测试平台包含两部分:测试平台和服务器平台。测试平台包含不同语言版本或者不同操作系统的平台;服务器平台主要含有源代码版本管理库和测试结果的关系数据库[3]。一个规范化的软件自动化测试过程通常包括以下几个基本的测试活动:(1)自动化测试用例选择对于Silk Test工具而言,它对Java的支持很好,所以如果是多模块、多软件测试,首先要尽量选择和Java相关的部分来设计用例[4]。(2)自动化测试环境准备开启windows远程控制,设置文件的扩展名可见,安装待测试AutoCAD系列产品,安装测试过程所需的自动化测试软件(Silk Test软件)等等一系列配置。光学仪器第35卷

第2期商林霞,等:基于XML的软件自动化测试

(3)自动化测试脚本开发Silk Test自动化测试工具支持简单的捕获同放功能,但是这并不是自动化测试。测试工具直接录制产生的脚本是不能直接使用的,所以对于利用Silk Test工具编写的脚本来说,通常是通过捕获对话框图形,抓到测试对象。然后利用Silk Test所提供的4Test语言来添加函数、控制结构等[5]。 (4)自动化测试报告生成分析脚本运行的结果是否符合要求,决定每个用例自动化测试是否通过。对测试结果进行分类整理,生成测试报告。对于不能通过的测试结果要进行分析、记录和通报,方便相关的测试人员和开发人员了解测试结果。2自动化测试系统过程为了取得自动化测试效率和效益的最大化,现选取当前最适合自动化的测试用例。例如自动化测试脚本编写异常复杂的用例、运行自动化测试脚本很难发现软件缺陷的用例等等,都可以不运用自图1自动化测试系统实现框图

Fig.1Automation testing system

realization block diagram动化测试,而运用手动测试代替。同时在两个测试版本的间歇进行新的脚本的开发,当有了一定数量的脚本之后,就让脚本运行起来,发挥作用[6]。现只要保证自动化运行的环境足够充足,那么每个测试版本所需的时间就会足够短,节省了大量的人力。软件自动化测试是一个极为复杂的过程。在不同的测试环境下,测试的流程也会有所不同。一般都要根据实际情况,制定相应的测试流程。从软件测试对象出发,软件自动化测试系统实现框图,如图1所示。对于不同语言版本的本地化测试,测试过程大体是相似的。首先根据AutoCAD软件的功能特征选择和设计测试用例,然后就是由测试用例编写测试脚本,接着就是将这些测试脚本作为输入运行程序,将通过测试得到的结果与先得到的英语版本的结果进行比较,最后就是将两者的比较结果写成测试报告,软件开发者根据测试报告再决定对软件如何处理[7]。3系统实现

3.1脚本生成根据测试设计中的每个测试用例,利用 Silk Test软件进行编程,完成自动化测试脚本。脚本编写完成,进行不断地调试,直至完成的脚本符合测试用例验证的要求。编程语言是4Test语言,整个脚本的思路是基于AutoCAD软件对话框对象来实现的。函数中执行图像录像功能的语句,把整个自动化测试的windows平台界面上的执行过程录制下来,方便判断软件是否存在缺陷。针对每个自动化测试的测试用例,编写测试脚本。每个测试用例都有数个测试确认点,测试脚本要保证每个测试确认点都能被执行自动化测试,生成测试结果。测试脚本程序示例如下:

3.2结果信息读取软件本地化测试的对象是本地化的软件,需要在本地语言的操作系统上进行。以Windows中文语言操作平台为例,用Silk Test工具运行该对话框对应的测试脚本,生成XML的结果信息文件,该XML记录了该对话框上的所有信息:文字信息、控件位置信息、控件属性信息。图2中所示的AutoCAD软件对话框的XML部分信息示例如下:

在获取对话框信息之后,接着就要进行XML结果的分析。读取XML文件信息的程序片段为:

其中,利用XPath的路径表达式来选取XML文档中的节点或者节点集[8]。如要读取出对话框的标题信息“选择样板”,则正确的XPath语句是“/DIALOG/CONTROL[1]/Texts_LIST/@Texts_00000”。类似地,对话框上各控件的位置、大小、属性等信息都可获取到。如图2中的截断错误,都用红色线框标示出来,提升了后期错误分析的效率。

3.3结果对比国际化软件自动化测试包括软件国际化测试和软件本地化测试。软件的国际化测试一般是英语版本的测试,必须在本地化测试之前进行。首先进行国际化软件测试有助于判断软件国际化的设计程度,确定软件支持的国家区域,以及本地化是否容易[9]。本地化测试过程中,以源程序软件结果(标准英语版本)作为本地化软件的主要参考。运行英语版本和本地化版本的结果比较程序,本地化版本对话框都将与标准英语版本对话框的各项信息进行对比。经对比本地化软件存在缺陷时有三大类情况:(1)本地化软件对话框的某项XML信息(控件的位置、大小、属性等)是空值;(2)本地化软件对话框的某项信息值的长度和标准英语版本的不一致;(3)本地化软件对话框的某项信息内容(控件的位置、大小、属性等)和标准英语版本的不一致。结果比较程序的部分示例:

3.4结果分析在实际的项目测试过程中,每一步都有很具体的内容。例如在报告测试结果的同时,实际上还包含了对测试结果的统计和分析,测试工程师通过对结果进行分析来判断是否存在缺陷,将缺陷上传至Test Desk网站进行管理。表1对话框界面的典型错误类型

Tab.1Typical error type of dialog user interface

错误类型说明对话框的外观显示不正确控件相互重叠对话框的内容显示不正确控件、文本字段截断对话框的命令响应不正确控件的热键相重复对话框的外观布局不正确控件的位置、大小对话框的文本内容不正确本地版本的文本未翻译

软件测试的目的是尽可能早和尽可能多地找出缺陷,然后软件开发人员根据测试报告确定缺陷[10]。在获取所有的软件对话框对比信息之后,总结出的典型错误类型如表1所示。实践证明,采用自动化测试大幅度地减少了测试难度,并且能够确保测试结果满足如下标准[11]:(1)所有的测试脚本都已经执行;(2)所有的变化都已经及时地作了重新测试;(3)通过重新运行测试脚本,所有发现的错误和缺陷都已经被纪录而且得到解决。 4结论软件测试结果决定着软件产品质量的好坏。要在最短时间内完成软件测试工作,需要认真分析需求和研究设计说明书,做好自动化测试的每一步工作(测试计划、测试用例设计、测试开发、测试执行和测试

自动功能测试 篇11

在Windows操作系统上有着成千上万的功能, 其中一个很常见且很重要的功能就是控制面板中显示设置。在这里可以修改主机屏幕与外接显示器的分辨率、刷新率、显示方向等功能。PC OEM厂商一部分工程师就专门负责测试显卡、外接显示功能卡。为了保证产品的质量, 测试工程师每次拿到产品后会接上1个或多个外屏, 然后打开控制面板显示设置, 做四大功能测试:①切换分辨率与刷新率;②切换显示方向:默认 (与我们普通人习惯相同) , 屏幕左转90°, 右转90°, 选择180°;③切换显示模式:外屏、主屏显示同样内容;主屏显示主要内容, 外屏显示扩展内容;主屏关闭, 内容显示到外屏上;外屏关闭, 主屏显示内容;④不同显示器轮流做主屏。

这中间还会夹杂让主机进入休眠 (s3状态) 、睡眠 (s4状态) 等操作。如图1所示。

测试用例组合如表1、表2所示。

我们做个假设, 看看一共要做多少种测试:只接1个外屏, 显示方向只测试2个方向。主屏20种分辨率 (其中10种是必须测试的) , 外屏25种分辨率 (其中15种是必须测试) , 那么测试工程师可能需要做10种分辨率刷新率×2方向+15种分辨率刷新率×2方向+10种分辨率刷新率×2方向×15种分辨率刷新率×2方向+β×2≥650种可能。其中10×2表示单独显示主屏, 外屏关闭;15×2表示主屏关闭, 只显示外屏;10×2×15×2表示当主屏与外屏同时开启, 外屏与主屏分别做主要显示器;β×2是表示当主屏与外屏显示同样内容时, β≤主屏显示分辨率数量与外屏分辨率数量之中较小的那个数值, 在这里β≤10。即使只做一个方向测试, 也有最少185种测试组合。

在平时, 一个工程师光测试一个外接显示器就要花费5~8h, 必须坐在那里不断点鼠标切换, 观察切换效果。因为很可能出现外屏不显示、外屏的显示没有切换、外屏花屏等各种状况。

可以想象, 如果接上更多外屏, 那组合量会是爆炸式的。在正式的工作中, 工程师是不可能完完全全坐在位置上无人干扰的, 很多时候会有会议、外出等各种干扰, 而中午午餐时间与晚上下班时间是无法利用上的。

2 提出方案

基于以上背景, 作者提出一个方法, 在测试机器上安装自动化工具, 模拟人工完成各种显示模式切换, 包括自动休眠自动唤醒, 同时外接一个USB摄像头, 囊括所有测试屏幕, 把每次切换前后的画面抓取下来, 如图2所示。测试工程师的工作就缩小到只对比截取的图片, 以验证显示效果。测试工程师只需要在每次测试前布置好测试机, 执行测试工具就可以做其他事情, 等自动化完成只查看摄像头截图就可以了, 这样不论是会议时间、外出、下班时间都能利用上, 大大提高了测试效率。

3 基于Ranorex的自动化测试开发

Ranorex是一款商业自动化软件, 由奥地利一家公司开发, 地址是http://www.ranorex.com/。它目前已经达到4.x版本, 安装后提供30天试用期。这款工具是基于Microsoft UIA框架开发的商业软件, 所以在Windows桌面平台上得到非常好的支持, 再加上大量的插件, 对于绝大多数的软件都可以开发出自动化脚本。

4 开发关键点与陷阱

(1) 摄像头的调用。可以使用Win32API的sendmessage函数启动与关闭摄像头。

IntPtr mCapHwnd=capCreateCaptureWindowA ("截屏窗口名称任取", WS_CHILD|WS_VISIBLE, 0, 0, 截屏宽度, 截屏高度, this.Handle.ToInt32 () , 0) ;//this指WebCamCapture类。

(2) 自动休眠与自动唤醒。休眠S3调用:

WinForms.Application.SetSuspendState (WinForms.PowerState.Suspend, false, false) ;

睡眠S4调用:

WinForms.Application.SetSuspendState (WinForms.PowerState.Hibernate, false, false) ;

唤醒后必须执行:

SetThreadExecutionState (EXECUTION_STATE.ES_DISPLAY_REQUIRED|EXECUTION_STATE.ES_CONTINUOUS|EXECUTION_STATE.ES_SYSTEM_REQUIRED) 。

网络上有很多文章只提到了如何唤醒, 但是由于它们都不需要开启显示器, 也不需要唤醒后继续执行某个功能, 所以没有提到需要调用这个函数。

EXECUTION_STATE.ES_DISPLAY_REQUIRED与EXECUTION_STATE.ES_CONTINUOUS。按照微软的文档, 即使唤醒了测试机, 如果缺少EXECUTION_STATE.ES_DISPLAY_REQUIRED, 测试机的显示屏还将保持关闭状态, 缺少EXECUTION_STATE.ES_CON-TINUOUS, 则系统与显示器不在工作状态。

(3) 处理非托管代码, 防止内存泄露。网络上90%的中文案例在截图后都没有处理非托管代码, 即IntPtr unmanagedStr=Marshal.StringToHGlobalAnsi (“图片存放位置”) ;之后必须有Marshal.FreeHGlobal (unmanagedStr) ;否则可能出现截图多次后程序无法运行。

(4) 关闭Win8的用户登录界面。Win8有个很特别的功能, 就是休眠唤醒后, 默认会有一个登录界面, 必须有人操作键盘或鼠标才会进入系统, 这样会无法继续执行自动化。这时, 必须执行netplwiz, 取消勾选“Users must enter a user name and password to use the computer”, 确认后就不会再出现登录界面了。如图3所示。

5 工具设计

根据用户需要, 我们需要几个功能, 如图4。

(1) WinForm主类:开启用户控制界面, 这里可以调试摄像头。为了在截图中囊括所有显示屏, 工程师根据显示调整摄像头的朝向。完成摄像头调节后启动自动化测试功能。

(2) uiAuto自动化测试子线程:完成所有显示设置切换, 并通知主线程截图。

(3) WakeUPTimer类:创建休眠唤醒的时钟, 提交给系统。

(4) WebCamCapture类:打开摄像头, 截图, 关闭摄像头。

6 结语

目前软件的测试工作量越来越大, 利用了自动化测试往往能带来非常大的经济效益。关键是我们需要结合不同的方法, 在软件、硬件、算法诸方面来创造一个好的方案把人从重复的工作中解放出来。

摘要:PC OEM厂商一部分工程师专门负责测试显卡。为了保证产品质量, 测试工程师需要花费大量时间做人工操作并等待, 而由于各种原因工程师们无法保证手工测试时间。对此问题, 引入Ranorex与外置摄像头完成自动化测试, 大大提高了测试效率, 该方法已在实际中应用。

关键词:Ranorex,自动化测试,多屏显示测试,显示功能测试

参考文献

[1]MICROSOFT.Set thread execution state function, MSDN microsoft, viewed 2013/May/10[EB/OL].http://msdn.microsoft.com/enus/library/windows/desktop/aa373208%28v=vs.85%29.aspx, 2012/Oct/26.

[2]PHILIP PIERCE.C#webcam capture, exhedra solutions, Inc., viewed 2013/May/10[EB/OL].http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1339&lngWId=10, 2003/Jul/6.

[3]DANIELE DI SARLI.Wake the PC from standby or hibernation, CodeProject, viewed 2013/May/10[EB/OL].http://www.codeproject.com/Articles/49798/Wake-the-PC-from-standby-orhibernation, 4Oct 2010

上一篇:五味子木脂素下一篇:“三三”党建工作法