APP下载

自动化测试工具QTP在进场管理系统中的应用分析

2021-06-29黎其宇何晓恩

科学与信息化 2021年16期
关键词:进港时间轴脚本

黎其宇 何晓恩

民航中南空管局通信网络中心 广东 广州 510000

引言

AMAN(Arrival Manager),即进场管理系统,其主要功能为安排进港飞机更高效地使用空域与跑道,提升管制员的工作效率的同时减少其工作量。该系统采用迭代的开发模式,每一个迭代版本完成后都会投入到用户的试运行中。运行中发现,系统在长时间持续使用后,客户端有一定概率出现错误。在以往的内部测试中,这种问题不容易检测和重现,因为以往可靠性测试主要应用在服务端,通过性能测试工具持续为服务端施加压力。但本次系统的错误出现在客户端而不是服务端,通过测试员模拟用户跨天不间断的操作几乎是不可能的。

本文通过使用桌面自动化测试工具QTP,模拟用户在软件界面上多次重复的操作,在一定程度上可以重现这些问题和避免以后再出现,从而实现一种在客户端下测试系统可靠性的尝试。

1 进场管理系统(AMAN)概述

进港管理系统(AMAN)是一种进港排序辅助决策系统,提供一个高效和安全的机场降落顺畅航班流,旨在减轻繁忙终端区管制负荷,提高效率,提高安全。系统通过所有进港航班在航路飞行阶段的提前计算,来构建一个优化的进港队列。使用用户包括:塔台、进近、区域实时指挥人员。AMAN用来管理进港航班,为管制员提供进港航班排序队列及决策建议。系统根据空域参数和航空器性能进行系统参数配置,引接空中交通自动化系统信息、飞行计划、多雷达航迹、GPS时钟以及气象状况等多项信息,对所有进港航班在区域阶段进行提前计算,提供航班最优排序序列,跑道选择和时间与延误建议,构建一个优化的进港队列。系统通过全局规划,建立区域、进近、塔台席位间统一的场景认知、规避管制矛盾,减少管制的工作负担,从而实现高效、流畅、平稳的交通流量[1]。

2 QTP工作原理

应用软件架构一般在逻辑上分为4层:①用户界面层 UI:为终端用户提供交互的人机界面 ②业务逻辑层 BLL:将数据库抽象出来的对象进行拼接成具体的业务逻辑对象,并对之进行流程组织 ③数据访问层 DAL:对DB层做的ORM,让上层应用程序以对象的方式操控数据库 ④数据持久层 DB:存储数据,对数据进行持久化,不同的客户端进行数据共享。

本文中介绍的自动化测试工具QTP工作在UI层,它可以识别windows标准控件。通常一个控件可以被称为一个对象。QTP识别对象的方法,是通过窗口句柄、id等方式,查找出待测软件界面上唯一符合条件的控件,而这些句柄、id称之为这个对象(控件)的属性。再通过模拟键盘鼠标的操作,比如单击、双击、输入文字,去操作对象,检查输出结果也是通过识别对象的属性,比如文字、颜色等,判断输出结果(界面)是否符合预期结果。

在可靠性测试中,我们可通过自动化测试,模拟用户操作,不间断长时间的执行,在客户端测试软件系统的可靠性。一般来说,我们模拟用户操作的方法是通过执行一系列的测试用例。步骤是:①筛选用户最常做的一系列操作;②把这些操作编写成多个测试用例;③将测试用例用QTP脚本编写出来;④根据需要执行这些测试脚本;⑤检查测试脚本的输出结果是否符合预期。

3 QTP自动化测试在AMAN中的应用

AMAN主要用于显示航班排队队列信息、调整排队队列以及对显示的方式、样式进行修改,它的客户端界面功能主要分为三个部分,时间轴界面、顶部菜单栏和右键菜单栏。时间轴界面用于显示航班队列信息,顶部和右键菜单则是对航班队列进行调整。

QTP从理论上来说可以对windows标准控件进行识别和操作,AMAN也是用windows控件制作的,但它的时间轴界面是通过图形绘制来实现。通过对象识别后发现,时间轴界面并没有文字相关的属性,因此QTP不能识别时间轴界面的文字,也就是说不能识别航班队列。航班队列是AMAN最核心的部分,几乎任何操作都不能独立于此,这就为它的自动化操作带来困难。通过一系列实验,我们最后敲定了使用像素识别的方法来辨别该界面上的航班队列,具体方法是使用QTP自带函数库里的getvisible()函数,该函数可以在界面上一个矩形的范围内,通过像素识别,找出和像素图像最相似的英文和数字。通过这种方法识别出来的航班队列依然是不能直接使用的,有各种辨别不出来乱码文字和多余的空格,所以需要将输出文字做进一步的清洗方可使用。具体方法是getvisible()函数通过识别图像后获取时间轴界面的文字,输出字符串;将其中的大写字母和数字挑选出来,组合成新的字符串,再通过判断机号格式(3个英文字符+大于2个数字的组合),判断获取的字符串是否属于航班号,是则返回航班号,不是则抛弃。由于函数识别可能有误差,因此还需要与当前正在生效的航班列表做对比(航班列表由其他系统导出),若航班号在航班列表里能找到,就进入航班队列。

得到航班队列以后,就可以通过调整航班队列来模拟用户的实际操作,通过咨询用户代表,我们归纳出用户最常用的操作,并总结成三个测试用例。分别是:

表1 用户实际操作

续表

将这三个用例固化成QTP测试脚本,即可用QTP工具自动的、重复的执行这些用例。下面用第二个测试用例“改变航班排序”为例子,介绍脚本实现的原理和方法。

表2 QTP脚本逻辑

获得这三个测试用例的的脚本以后,我们可通过长时间不间断的执行这些脚本,模拟真实用户在客户端持续操作的情况,从而检查系统在长期运行中是否会产生异常或者用例执行失败的情况,如果有,就记录用例执行失败并输出截图。这三个用例执行的时间段和频率参考实际用户的操作习惯,初步设置如下:

表3 脚本执行频率

测试脚本调用的时间点和频率,通过执行vbs脚本定时调用UFT接口实现。总体测试结果以excel表格方式列出,可直观地看到一段时间内每一次脚本的执行通过情况。细化到每一次脚本的执行结果,则以UFT默认结果文件方式保存。

4 优缺点分析与扩展

自动化测试的方法可以应用到多个BS或CS架构的信息系统,如果使用标准的div控件和windows控件,对象识别更容易,自动化脚本编写和维护的效率更高。对于AMAN来说,因为不能直接识别界面中的文字,而要通过像素识别,识别出来的效果会略有偏差,比如在consolas字体下,字母“o”和数字“0”形状比较接近,就有可能识别混淆,需要再做进一步的优化。

在未来的应用中,自动化测试可以结合监控工具zabbix进行性能监控,监控客户端、服务端和数据库的性能曲线,来检测系统是否存在内存泄漏、CPU过高等性能问题。还可以与持续集成工具jekins和git结合起来,根据一些条件触发测试,比如新代码的发布、预定的计划表等,从而更自动、更频繁的执行测试。

5 结束语

本文探索了自动化测试在客户端可靠性测试中的应用,以AMAN为样本,探索了它应用在自动化可靠性测试中的场景和方法,分析了在其他系统应用的可能性,下一步可以在持续集成测试中应用这项技术。

猜你喜欢

进港时间轴脚本
酒驾
大型满载油轮使用鱼山作业区南部进港航道航行方法探讨
安奇奇与小cool 龙(第二回)
成都进港流量排序管理系统运维风险分析与优化
时间轴里的“共和国记忆”
船舶进靠浙能台二电煤炭码头风险的研究
自动推送与网站匹配的脚本
国家能源集团珠海煤码头进出港作业能力分析
基于时间轴的媒体数据编辑专利技术综述
时间轴说明16种英语时态(下)