基于开源软件自动化测试框架等技术的信息系统仿真监控及智能运维系统的研发

2018-07-27 03:39肖招娣
微型电脑应用 2018年7期
关键词:测试程序知识库开源

肖招娣

(广东电网有限责任公司 佛山供电局, 佛山 528000)

0 引言

随着企业信息化程度的增加,信息系统越来越多,网络架构越来越复杂,系统运维人员压力越来越大。原有的集中监控系统基于静态环境的测评脚本是基于非生产环境的,与生产环境存在先天差异,无法真实反映生产环境下的用户体验,无法满足系统运维需求,亟需实现真实环境下对各系统及网络环境的监控。

对用户而言,无论是计算机软硬件环境问题、网络问题,还是信息系统自身的问题,只要发起的请求在超过可承受的等待时间后才响应,都会笼统地反映“系统很慢”。仅依靠用户的体验,系统管理员很难迅速定位真正的原因所在。

通过实施本项目,用真实环境下用户体验实现对各系统和网络环境的监控来取代静态评测。用户可以在自己的计算机上自主运行应用系统自适应仿真程序和网络环境测试程序,集中监控平台可以通过调用各监测点的仿真测试程序和网络状态评测程序,掌握各系统运行情况及网络状态。旨在及时发现问题、迅速定位问题,以便第一时间对症下药解决问题,减轻系统运维人员的压力,提高信息系统用户满意度。

同时,利用知识管理库存放各运维领域专家先验知识,包括常见问题的原因及处理办法,再利用专家系统,开发智能运维功能指导故障的定位与问题的处理,提高运维的效率和准确性。

1 系统技术架构及功能

系统架构,如图1所示。

1.1 Selenium及Watij

Selenium及Watij都是可以用于网页自动化测试的开源工具,均为直接在浏览器运行脚本。作为开源软件自动化测试框架,使用它们开发的软件自动化测试脚本,相对使用商用软件自动化测试工具录用的脚本,自适应性更强,更接近真实用户的操作。使用Win32的消息钩子录制的脚本在交互性和自适应性方面更是无法与基于Selenium和Watij编写的脚本比拟,且基于Win32消息钩子的开源软件测试框架基本上不支持Web程序的测试,例如White:基于消息钩子录制的脚本更适合用于C/S架构的软件的测试。

图1 系统架构图

由于本文研究的仿真监控及智能运维的信息系统均为B/S架构的,故选择了Selenium及Watij。

1.2 技术架构

为了模拟用户的真实操作,系统以软件自动化测试开源框架为基础。使用软件自动化测试框架编写仿真测试程序,相对于使用软件自动化测试工具录制测试脚本,对测试对象具有更好的适应性,与被测试系统的互动可以完全模拟人的操作,几乎接近使用者的真实操作。如此方式获取的是原始数据,更具备客观性、真实性和准确性。针对多种开源的软件自动化测试框架比对,选择了Selenium和Watij这两种开源框架。根据信息系统的特点,最终确定个别信息系统使用Selenium,其余信息系统使用Watij。相对于Selenium,Watij编写的代码更为清晰、灵活、易于理解、更快的执行速度,提供了截图功能,对上传、下载、弹窗窗口等功能的支持更好。但是,Watij目前只支持IE浏览器,而Selenium支持多种浏览器,这是Selenium相对于Watij的优势,也是个别应用需要选择Selenium进行开发的原因。

同时,引入的重要技术还包括知识库管理系统及专家系统,通过人工智能技术实现智能运维功能。

在软件的开发架构方面,以Java的MVC模型为依托,实现整个监控系统的高内聚、低耦合,增强系统的扩展性、伸缩性、易维护性。

在语言方面,融合了Java语言、JavaScripts、VB以及批处理。在计算机技术方面,整合了软件自动化测试技术、Java的企业级应用技术、xObject插件技术及Windows操作系统的底层技术。

1.3 功能组成

该系统的功能包括:网络状态评测模型的研究,自适应仿真测试程序和网络状态评测程序的研发,集中监控平台定时或不定时调用各地监测点的测试程序和评测程序,测试报告内容的采集、处理与告警信息的发布,运维知识的管理,专家诊断功能的研发。

通过运行仿真测试程序,捕获故障:通过网络状态评估模型,判定网络是否存在故障;在网络正常的情况下,运行被监测信息系统的自适应仿真测试程序,根据日常运维过程中积累的经验所设置的阈值进行判断,当某个操作超过阈值时,判定为故障,并将相关的信息传递给后续程序处理。

知识库主要用于存放各领域运维专家的先验知识,包括计算机网络专家的经验,相关信息系统的资深运维人员的经验。考虑到知识库所固化的规则直接影响到后续的智能运维的质量,该系统的知识库通过人工录入、导入产生,并提供修改、停用、删除的功能。专家系统基于知识库的规则,提供智能诊断功能,将可能产生故障故障的原因及建议的处置方式发送给相关运维人员。

1.4 各部分功能及其实现

技术架构,如图2所示。

图2 仿真测试程序技术架构图

1.4.1 仿真测试功能

1、实现仿真测试功能:模拟用户的操作。在该仿真测试监控系统的开发过程中,用到如下关键技术:

1) 用开源框架实现IE标准控件的控制,模拟用户对网页的真实操作和交互。使用合适的开源测试框架实现对不同的信息系统关键功能的监控,该系统主要用到了Selenium及Watij这两个开源软件测试框架;

2) 熟悉HTML基本语法,根据 Web 页面的源代码来确定对多种常见 Web对象的识别、操作和自动验证,必要时候还可以使用正则表达式;

3) 运用操作系统知识,将具体的监控业务处理逻辑文件做成批处理文件;

4) 集中监控平台定时调用各监控结点客户端仿真程序。

2、仿真测试程序的运行:在客户端浏览器触发仿真测试时,可以选择在仿真测试服务器或者在当前客户机本地运行自动化测试程序。前者通过运行ActiveX插件的形式,实现对服务器本地存放的批处理文件的调用;后者使用Java的Servlet技术,在本机运行测试程序。

同时,服务应用程序也会根据配置的频率运行仿真测试服务器本地存放的仿真测试批处理文件,该调用过程使用VB实现。

3、对测试结果的管理:包括存储成为不同的文件并上传到FTP和存储到数据库中,方便对结果的处理。存储到FTP中的主要用于最近一次运行结果的查看。

建立仿真测试结果报告数据库,用于记录历次运行仿真测试程序得到的反映系统运行状况的客观数据,实现测试结果的完整记录。将所有的测试结果均存放在MySQL数据库中,方便查询。也为后续信息系统运维工作领域的大数据分析和使用推荐系统进行智能诊断提供数据基础。

4、短信告警:对于影响力比较大的系统,除了实现定时监测外,还要对监测结果进行进一步处理。设定一个阈值,当测试的响应时间超过设定的阈值时,通过与公司短信平台的接口,实现短信的告警功能,以便在第一时间掌握系统的问题,将影响降至最低。

5、查看最近一次的测试报告:比较紧急的情况下,可能需要查看最近一次的测试报告,而不是运行一次测试程序,该功能通过Java的Servlet技术实现。

1.4.2 知识库功能

在本系统中,知识库是专家系统功能的基础,用于存放专家系统设计所应用的规则集合,包含规则所联系的事实及数据,它们的全体构成知识库。该系统使用开源的知识库管理系统Wiki。目前该知识库主要存放了服务器、数据库、存储、网络、防火墙、常见主营业务系统运维的先验知识。同时,该知识库提供了基本的规则录入、修改、删除和查询等功能,为知识的管理与更新提供功能。

1.4.3 智能运维功能

专家系统是一个智能计算机程序系统,其内部含有大量的某个领域专家的经验知识,能够利用人类专家的知识和解决问题的方法来处理该领域问题。它运用人工智能技术和计算机技术,根据知识库中管理的专家先验知识,进行推理和判断,模拟人类专家的决策过程。

该系统的智能运维功能,基于专家系统实现,其基础为知识库功能模块所固化的专家先验知识。当故障发生的时候,利用知识库和专家系统的功能模拟专家决策的过程,迅速定位问题并提供解决方案建议。在监测到故障发生时,在发出告警的同时,将当前可能造成故障的原因及推荐的解决方法告知故障处理人员,供其参考使用。同时,在处理的时候,可以不断的对现有的知识库规则进行滚动修编。

2 效益

我局先后在门户系统、营销系统及计量自动化系统等关键系统的关键操作进行了仿真监控程序的开发,运行在相关的服务器及相应的终端上;研究了网络状态评估模型,并开发了相应的监控程序,作为“探针”部署在精心选取的测试点。通过仿真监控程序的开发及运行,有效地提高了运维的效率,降低了运维成本,帮助运维人员第一时间获取客观的运维数据。

3 总结

本文通过利用Selenium及Watij等开源软件测试框架开发了仿真监控程序,模拟使用者的真实操作,第一时间获取到信息系统运行过程中的原始数据,相对传统的IT集中运行监控,获取的信息更为准确、客观和真实。通过知识库管理系统固化系统信息系统运维过程中各专业技术技能专家积累的大量的先验知识;引入专家系统等,用于指导新人的操作,使得故障的定位和处理更为高效、准确。该系统实现了信息系统的仿真测试及智能运维功能,对于运维人员紧缺、运行环境复杂、运维系统较多的情况,具有很强的实际意义。

同时,需要指出的是,该类方法目前仅对B/S架构的信息系统有效。对于C/S架构的信息系统的仿真监控,我们还需要探索有效的方法。没有任何技术是放之四海而皆准的,我们需要具体问题具体分析、对症下药。

猜你喜欢
测试程序知识库开源
五毛钱能买多少头牛
2019开源杰出贡献奖
基于TRIZ与知识库的创新模型构建及在注塑机设计中的应用
基于Castle型机械手的三温量产测试平台实现
手机APP交互界面人因适合性测试程序的设计与实现
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
高速公路信息系统维护知识库的建立和应用
基于Drupal发布学者知识库关联数据的研究
电气自动化控制设备可靠性测试探讨