基于关键字驱动的山脚树煤矿输电线路监测平台质量保证

2023-09-12 00:50吴江燕田祥贵刘发勇
科学技术创新 2023年21期
关键词:关键字用例脚本

胡 刚,吴江燕,田祥贵,刘发勇

(1.盘江股份公司山脚树煤矿,贵州 六盘水;2.贵州盘江煤电集团技术研究院有限公司,贵州 贵阳)

引言

山脚树煤矿位于贵州省六盘水市盘江断江镇中部,矿区历史输电线路巡检工作主要包含接地电阻监测、杆塔倾斜监测、导线接头测温、树木生长监测、杆塔周边环境监测等,目前巡检运维工作主要依靠人工现场巡检,因此需要耗费大量人力物力,而且无法获取杆塔和线路的实时数据。为了解决目前输电线路巡检需要依靠人工巡检的问题,矿区新建输电线路安装在线监测装置30 套、输电线路智能在线监测系统1套。

输电线路运行状态的实时反馈、系统的高质量运行,对输电线路智能在线监测系统有较高质量的要求[1]。软件系统自身的特点决定了其从产品的设计到开发都具有诸多的不确定性,而且也成为了制约软件质量的一个重要威胁,因此,在软件测试期间对其中存在的不确定性进行预判,合理分析其中可能存在的风险,并制定相应的风险管控措施,就成为了一项极为关键性的工作关系到软件后期的稳定运行[2]。文本阐述了一种基于关键字驱动的自动化测试方法,用于保证输电线路智能在线监测系统的质量。

关键字驱动的自动化测试框架是对数据驱动测试框架的扩展,主要思想是:界面元素名与测试内部对象名的分离;测试描述与具体实现细节的分离;脚本与数据的分离[3]。三个分离之间相互独立,极大减少相互之间的影响,这种测试框架与传统自动化测试框架相比,实现了测试数据与测试逻辑的分离,极大的提高了测试脚本的复用性和维护性,使得软件系统质量得到保证的同时降低质量保证所需要的人力物力,将测试人员从重复的测试劳动中解放出来,去关注更高效、精准的测试。

1 智能输电线路监测平台

1.1 系统建设背景

山脚树煤矿现有输电线路也存在煤矿传统架设输电线路的难点,为了解决这些难点,新建输电线路安装了传统输电线路不具备的监测装置。矿区新建大营输电线路起始于大营110KV 变电所,止于山脚树35KV 变电所,采用铁塔单回架设,杆塔85 基。线路全线位于贵州省盘州市盘关镇、柏果镇、鸡场坪镇境内。为搭建在线监测系统整条线路安装了在线监测装置30 套,其中包含设备有:输电线路铁塔智能在线监测装置、接地电阻监测装置、杆塔倾斜装置等。通过现场杆塔监测装置收集到输电线路实际运行情况,通过无线传输将收集到的数据反馈到后台在线监测平台,通过平台处理转换后显示到可视化界面,为输电线路运行提供实时的监测数据。

1.2 系统架构设计

输电线路在线监测系统由两部分组成,分别是数据采集前端(太阳能供电系统、数据采集系统、通讯系统等)和后端分析处理系统组成[4]。采集前端是高性能的数据采集主机,其主供电源为太阳能板。通过预先设定的程序定时对周围的各种数据,前台系统对所收集数据进行处理后,通过无线传输方式可以及时传输至后台控制中心[5]。后端分析处理系统可以对所收集的相关数据进行分析,根据分析结果有针对性地对相关杆塔采取防范措施,后端数据分析处理系统主要是通过软件开发工具,将前端所接收数据,通过分析处理,在可视化页面展示出来。后台系统实现架构如图1所示。

图1 后台实现架构

1.3 系统实现

输电线路监测平台采用OpenLayers+GeoServer 的架构,前端使用html、js 、css、Vue,后端使用Java 语言,SpringMVC+Mybatis SpringBoot,数据库使用Mysql,报表统计相关功能使用Echarts 插件,最终实现输电线路在线监测平台。

1.4 系统质量保证措施

软件质量是软件特性的综合,指软件满足规定或潜在用户需求的能力[6]。软件测试是提升软件产品质量的重要手段,通过相应测试技术、方法的运用来发现软件产品设计、开发过程中的潜在性问题,从而起到为软件产品后期的市场化推广、应用排除安全隐患的作用。

质量控制的重要前提就是保证操作的整个流程的真实性与完整性,只有按照正确的操作方法进行软件测试,软件质量保证的正确性才能够得到保障[7]。软件质量保证的前提是测试对象、测试环境、测试方法已经明确,制定测试计划及测试执行流程后严格按照制定文件和相关标准执行测试。

当前测试执行以手工执行和自动化执行为主流,在冒烟测试阶段及回归测试阶段一般以自动化测试为主。本文介绍了一种以关键字为驱动的自动化测试方法,通过该方法的实施,可以替代一部分人工测试,降低测试的时间成本和人力成本,同时,通过每日自动执行自动化测试,可以极大保证系统每日正常运行,并且在系统发生故障时能够及时通知项目干系人,在最短时间内做出应对。

2 关键字驱动自动化测试质量保证

2.1 传统自动化测试框架

在传统的自动化测试框架中,大多数采用直接定位到页面元素,对页面元素进行操作,从而实现自动化测试的目标,在测试开始之后需要先等待测试对象的出现,在测试对象出现后获取到测试对象,然后对测试对象进行操作,最后完成测试操作。

传统自动化测试框架中测试逻辑、测试元素、测试数据不能做分离处理,这种测试框架的短板是:当页面元素、测试数据或测试逻辑发生变化时,需要重新维护脚本[8]。在实际项目过程中,因为需求变更或产品升级导致的系统元素变化或测试逻辑发生变化是频繁的,而每一次的变更都需要重新对测试脚本进行维护,导致自动化测试日常脚本维护工作量急剧增加,同时也加大了测试脚本维护困难程度。

2.2 关键字驱动测试框架

关键字驱动测试框架为了解决传统测试框架存在问题提出了三个思想:一是测试元素命名与自动化测试定义对象名分离,二是将测试逻辑中的测试动作与系统功能实现细节分离,三是测试脚本与测试数据分离[9]。采用三分离的机制,可以在自动化测试过程中能够极大提升测试脚本可维护性,降低因为系统元素和逻辑变化对测试执行的影响。

框架分为四层:工具层、服务层、逻辑层和场景层,其中工具层主要封装了测试中需要调用的工具类方法、配置文件、日志文件和失败用例截图;服务层主要封装了测试系统的页面元素和操作步骤;逻辑层主要封装了系统各个业务对象,组成测试逻辑进行校验;场景层则是针对各种测试场景,实现不同场景下的用例组合,如图2 所示。

图2 关键字驱动测试架构

2.3 关键字驱动测试设计

2.3.1 工具层设计

(1)配置变量读取ini_reader,封装对ini 配置文件的读取操作;

(2)全局变量设置global_var,定义测试过程中所需要用到的全局变量;

(3)配置邮件发送email_util,封装测试执行完成后测试报告自动发送到干系人;

(4)配置测试日志log_util,封装日志输出、级别设定功能。

2.3.2 服务层设计

(1)设计Driver_action,封装了测试过程中需要打开、关闭浏览器的操作;

(2)设计take_action,封装测试执行失败用例自动截图并保存到指定文件夹;

(3)设计Page_action,封装页面元素操作,如:点击、输入、切换frame 等。

2.3.3 逻辑层设计

初始化测试_init_,完成测试执行初始化操作;

设置cases,读取测试用例文件,拼接测试对象、测试动作完成测试执行并记录执行结果;

设置data,放置测试用例数据文件,获取测试数据;

设置main 函数,指定具体模块测试,校验测试数据与测试模块是否相符,执行用例集后记录测试结果。

2.3.4 场景层

设置main 函数,作为整个测试框架的运行主入口;

设置场景smoke_test,根据冒烟测试场景将用例组合;

设置场景suite_test,执行全量测试。

2.3.5 测试流程设计

整个测试流程以main.py 作为运行主入口,判断当前测试场景后调用场景所关联的测试用例,读取测试用例对应测试数据后进入测试执行流程,执行过程中根据日志级别记录执行日志,测试执行通过则生成测试报告并发送邮件,测试执行失败则再次执行测试,若一直执行失败循环10 次后自动退出执行,记录失败用例截图并写入测试报告,发送邮件到干系人邮箱,完成整个测试流程。

2.4 关键字驱动测试实现

2.4.1 用例设计

根据输电线路监测系统需求说明书及实际系统实现情况,使用等价类分析、边界值分析、场景法等用例设计方法,得到测试用例共计362 条,用例模块分布如表1 所示。

表1 用例分布

2.4.2 代码实现

本文测试脚本代码编写基于python 语言,使用selenium+webdriver 为驱动,通过脚本编写、函数定义、代码封装实现测试用例,由于代码量过多,在此不在赘述,仅以其中测试报告发送模块为例展示编码过程,部分代码实现如下所示:

2.4.3 执行结果

设置定时任务为每天凌晨一点开始执行,所有案例执行完成后自动发送测试报告到干系人邮箱,可以直接下载html 版本测试报告及执行失败的测试用例截图。

2.4.4 测试框架实施效果评估

自动化测试框架的目的是减轻测试人员繁杂的测试工作,提升测试效率,从而达到提升软件质量的目的。一个完成的测试过程包含了测试准备、测试执行,在手工测试、传统自动化测试和以关键字为驱动的测试方法中,这两个阶段耗费时间各不相同,输电线路平台从提测到发布中经历了七个版本的测试,每次版本的变动都需要大量的测试工作,表2 记录了三种测试方法测试人员的工作量。

表2 测试工作量

从表2 可以看出系统完整执行一次测试时,手工测试耗时184.2 小时,传统自动化耗时743.97 小时,以关键字为驱动自动化测试耗时655.58 小时,设系统需要测试次数为n,那总测试耗时T 为:

T=nt 测试执行时长+t 准备时长

根据公式得到测试耗时趋势图如图3 所示,从图3 可以看出,以关键字驱动的自动化测试耗时比传统自动化测试所需耗时少;到第七次测试时,以关键字驱动的自动化测试框架所需耗时就比手工测试耗时少,前期耗时多的原因是以关键字驱动的自动化测试框架测试准备耗时较长,需要耗费大量时间对测试脚本进行编写和调试,但是当测试准备完成后,执行测试所耗费的时间远远低于手工测试所耗费的时间,因此随着测试次数增多,手工测试耗时直线上升,一关键字为驱动的自动化测试耗时增加十分缓慢。

图3 测试耗时趋势

3 结论

为了解决当前输电线路依靠人工巡检的难题,建立了输电线路的在线监测系统,软件系统的正常运行与软件质量不可分割,软件测试作为保证软件系统质量的重要手段,需要耗费大量人力物力。本文通过自动化测试框架的建立,测试代码的实现,能够将测试人员从繁杂的重复的测试工作中脱离出来,为软件系统提高更高效、更精准的测试,更大提升软件产品质量。通过关键字驱动的测试框架在一定程度上减轻了测试人员维护测试脚本的工作,但也存在脚本编写较传统自动化测试脚本更难上手,需要更多学习成本的问题,在未来的研究中,会继续对自动化测试进行深一步的研究,以提升测试框架的适用性。

猜你喜欢
关键字用例脚本
酒驾
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
安奇奇与小cool 龙(第二回)
成功避开“关键字”
联锁软件详细设计的测试需求分析和用例编写
從出土文獻用例看王氏父子校讀古書的得失
数据库系统shell脚本应用
快乐假期