基于Selenium的电力营销系统用户权限自动配置
2018-05-03黄潜
黄 潜
(广西电网有限责任公司南宁供电局 广西 南宁 530000)
0 引 言
随着南方电网公司信息化建设的不断加快,电力营销系统已成为企业运转密不可分的重要部分,具有复杂度高、功能模块多、系统间协同关系复杂等特点。南宁供电局作为特大型供电企业,目前共有3 935个系统用户,人均配置35个角色,每年人员岗位变动涉及近200人。完整的权限变更需要经过申请、审批和配置三个步骤。用户在填写申请时,普遍存在对系统角色理解不足,对所需功能难以准确描述的情况。这不仅增加系统管理员与用户之间的沟通成本,而且还需要系统管理员对用户申请信息进行二次加工,使得权限配置工作效率大幅下降。此外,系统权限调整工作往往具有紧迫性的特点,传统依靠人工手动的方式,不仅效率低,而且容易出现错误、遗漏,时效性也得不到保证。
为了解决Web应用系统中大量繁琐、可重复的人工手动操作,一些相关研究相继开展并取得了一定的成果。文献[2-3]在Selenium WebDriver的基础上设计了一个新的自动化测试框架,并提出页面对象库的概念,以降低页面变动对自动化测试所带来的影响。文献[4-5]利用数据驱动方法将被测数据独立于测试脚本,实现了Web应用的自动化测试。汪明等[6]巧妙应用自动化测试的思路,提出了基于Selenium的应用自动化巡检的方法,有效提升了工作效率,节约了成本。袁钢等[7]同样基于自动化测试思路,模拟工作流程业务人机交互的过程,实现大批量工作的自动化执行。
本文在Selenium的基础上,融入状态同步和双确认机制,通过模拟人在浏览器进行权限操作的过程,实现电力营销系统用户权限的自动化配置。
1 Selenium简介
Selenium是一款用于Web应用程序测试的工具,最大优势是可直接在浏览器中运行,就像真正的用户在操作一样[8]。包括浏览页面、点击链接、输入文字、提交表单等,并且能够对结果页面进行验证。
Selenium主要包含Selenium IDE、Selenium Remote Control(Selenium RC)两大组件。其中,Selenium IDE作为Firefox插件,可以录制用户的基本操作,生成测试脚本。Selenium RC则更加灵活,能支持多种平台(Windows、Linux、Solaris)和多种浏览器(IE、Chrome、Firefox、Opera、Safari),可用多种语言(Java、Ruby、Python、Perl、PHP、C#)编写测试用例。
2 设 计
2.1 总体架构
根据电力营销系统用户权限配置的操作过程,以及UI和业务逻辑分离的原则,将工具由下到上分为基础层、数据层、业务层和展示层。同时为了降低独立功能之间的耦合,又进行了横向模块划分,以满足下层内部修改不会影响上层调用的需要。整体架构如图1所示。
图1 整体架构
展示层分为控制区、运行区、日志区三部分。其中,控制区负责接收用户输入及响应,包括用户登录、驱动加载、文件浏览、日志导出等;运行区负责显示任务运行情况,包括任务名、授权账号、角色数量、操作时长、状态及成功率等信息;日志区负责运行过程日志的显示,包括日志类别、日志内容、时间等信息。
业务层包括权限授予脚本、权限回收脚本两部分。脚本通过Client lib向Selenium server发送http请求,Selenium server解析并通过Http proxy发送js命令通知Selenium core,进而控制浏览器执行相应动作。
数据层分为预处理、分离构造两部分。用户通过文本框、文件加载两种方式进行数据输入。预处理负责对用户的输入进行合法性校验和内容去重操作;分离构造则是对用户加载的文件进行分析,识别出业务类别,并封装成程序可以处理的对象。
基础层分为异常处理、文件处理、日志处理三部分。其中,异常处理贯穿程序运行的始终,负责每一个环节异常的捕抓和处理;文件处理主要面向xlsx、txt两种类型文件的读写操作;日志处理则负责为上层提供日志读写的接口。
2.2 状态同步
为了解决展示层中数据处理和状态显示同步的问题,本文采用了软件设计模式中的观察者模式。即运行区、日志区作为观察者,数据当作被观察者,当数据自身状态发生改变时主动发出通知,运行区、日志区收到通知后立即更新自身状态。具体的UML类图如图2所示。
图2 状态同步UML类图
2.3 可靠性提升
用户权限配置行为的模拟主要涉及Web系统元素定位、元素操作及操作验证三部分。其中,元素定位、元素操作的可靠性直接影响最终结果。然而,页面加载用时的不确定性又大大增加了元素定位及操作的难度。为此,本文在Selenium显示等待的基础上加入了双确认的机制,进一步提升元素定位和操作的可靠性。其流程如图3所示。
图3 可靠性提升的双确认机制流程图
3 应用结果与分析
根据上述设计,本文采用windowbuilder实现了可视化交互界面。并利用Java语言在Selenium框架上编写业务处理脚本及后台逻辑,实现了基于Selenium的电力营销系统用户权限自动配置工具。工具运行效果如图4所示。
图4 自动化工具运行效果图
为了检验基于Selenium的电力营销系统用户权限自动配置在实际业务流程中的准确率和工作效率,设计了实验,具体环境、步骤和结果如下:
实验环境:
操作系统:Windows 7
CPU:Intel(R) Core(TM) i7-4790K CPU @ 4.00 GHz
内存:16 GB
浏览器:Coogle Chrome 56.0.2924.87
其他:JRE-1.8.0_111-b14、chromedriver.exe
实验步骤:
1) 选取213张电力营销系统用户权限授予的申请单,每张35个角色,分成A、B、C、D、E五组。其中A组1张,B组4张,C组16张,D组64张、E组128张。将按照权限授予的流程进行操作,具体流程如图5所示。
图5 电力营销系统权限授予流程
2) 系统管理员独自完成A、B、C、D、E五组任务,并记录每组操作用时和出错次数。
3) 使用基于Selenium的电力营销系统用户权限自动配置工具完成A、B、C、D、E五组任务,并记录每组操作用时和出错次数。
实验结果:
根据上述步骤完成实验,得到系统管理员、权限自动配置工具在每组权限授予过程中的操作用时情况,如表1所示。
表1 两种权限授予方法的操作用时对比
根据表1可以看出,在配置用时方面,单任务情况下,系统管理员和权限自动配置工具基本一致。但随着任务数增多,系统管理员的配置用时明显大于权限自动配置工具。
系统管理员、权限自动配置工具在每组权限授予过程中的出错情况如图6所示。
图6 不同方法的出错变化曲线
从图6可知,系统管理员在任务数多的情况下,容易出现错误,而权限自动配置工具则没有出现错误。由此可见,权限自动配置工具相对于人工手动配置的方法,在配置效率、成功率上具有明显优势。
4 结 语
本文提出了一种基于Selenium的系统权限自动配置的方法。充分利用自动化测试工具能够直接在浏览器运行,能够模拟真实用户操作的特点,将繁琐、可重复的手动操作转变为可复用的脚本程序,以较低的成本解决人工手动配置方式中的效率低、易出错、时效性差的问题,达到了企业精益化管理的要求。实验结果表明,该方法具有并发处理能力,在处理批量申请单时,工作效率显著。
自动化工具成功率很大程度取决于页面元素定位的准确性,而服务器响应、浏览器渲染以及网络环境等因素都会对元素定位产生影响。为了更好地提高页面元素定位的效率和准确率,进而提升自动化工具的成功率,下一步研究的方向为页面智能等待的问题。
[1] Selenium Document[OL].http://www.seleniumhq.org.
[2] Gojare S,Joshi R,Gaigaware D.Analysis and Design of Selenium WebDriver Automation Testing Framework[J].Procedia Computer Science,2015,50:341-346.
[3] 邢伟超,高晓桐.网页自动化测试框架的设计与实现[J].计算机应用与软件,2012,29(9):167-170.
[4] 冯振华,高菊,曾红卫.Web应用自动化测试的研究[J].计算机工程与设计,2010,31(1):175-178.
[5] 边耐政,张琳.一种基于Selenium的Web自动化测试低耦合框架[J].计算机应用与软件,2014,31(8):13-16.
[6] 汪明,马思硕,赵宇亮,等.基于Selenium的应用巡检自动化云服务[J].电子技术应用,2015(S1):64-66.
[7] 袁钢,孙瑞志,向勇.基于Selenium的工作流业务系统仿真测试[J].计算机工程,2012,38(20):30-33.
[8] Wang X,Xu P.Build an Auto Testing Framework Based on Selenium and FitNesse[C]//International Conference on Information Technology and Computer Science.IEEE,2009:436-439.