陈琦
(国电南瑞研究院 江苏省南京市 210000)
在软件开发过程中,利用合理的软件测试平台,能够在极大程度上提升软件整体的测试效率。因此,当前相关领域的研究人员正逐步通过各类现代化的技术手段,构建自动化的软件测试平台,对于未来软件企业的建设和发展而言具有十分重要的价值意义[1]。当前,现有软件测试平台已经能实现对多种不同类型软件协同测试的功能,并做到对软件测试整个过程中的跟踪和管理。传统软件测试平台在开发阶段,大多采用虚拟机技术实现对平台自动化测试环境以及监控环境的构建[2]。但这种方法在实际应用过程中,会产生更加高昂的开发成本,并且耗时较长,平台在日常运行过程中很难得到维护等问题。工业自动化领域中,大多数用户需要基于分布式计算环境,进行软件测试,用户数量庞大,功能全面而复杂,这进一步导致现有的软件测试平台不能满足用户需求。基于此,本文开展分布式协同软件测试平台研究。
为实现对分布式协同软件测试平台的搭建,首先根据平台的运行特点,选择为其提供运行环境的vSphere 服务器。同时,为方便对平台进行管理,还需要通过虚拟服务器对vSphere 服务器搭建的虚拟环境进行管理。在平台虚拟环境中,通过引入不同的管理程序,能够根据需要创建的平台客户端,对每个虚拟机进行系统化的安装和分布式协同管理[3]。为满足本文设计平台的分布式需要,选择将多台虚拟机相连的方式,构建一个分布式拓扑结构网络,针对该网络当中的多台虚拟机协同和监控,主要是通过部署在虚拟机上的各个软件完成,以此实现对软件的自动化测试。在实际测试过程中,平台用户可以通过选择不同的待测试软件的属性和类型,对软件进行测试,并同时配合多台虚拟机实现协同[4]。由于当前,传统自动化工具和技术已经无法满足本文平台的运行需要,因此,本文通过对多种不同的搭建技术的选择,实现对平台的构建。为实现本文分布式协同软件测试平台的设计与开发,综合其各项优势,得出如下搭建技术应用流程:
利用Python 跨平台计算机程序实现对本文平台中各个虚拟机的控制、查询以及相互之间的通信协同功能;利用vSphere 脚本控制,结合自动化工具对vSphere 图像当中的元素进行抓取。再利用获取到的控件对象,对虚拟机的自动化脚本操作进行编写;利用Jenkins 开源软件集成工具对平台在运行过程中的外部调用执行工作进行监控,将平台虚拟机上的操作根据Jenkins 能够识别的格式进行编写,并在软件测试过程中,通过调取相应的指令执行自动化脚本;利用Power CLI 命令行工具通过技术开发官方提供的接口,对vSphere 服务器在运行过程中的各项自动化行为进行管理。
根据软件测试需要,本文构建的分布式协同软件测试平台整体框架结构如图1所示。
图1:分布式协同软件测试平台整体框架结构
由图1可知,本文分布式协同软件测试平台当中包含了一个用于进行网络互连的Server 服务器和若干个sSphere 用户、一个vSphere 服务器,一个或多个资源服务器。其中vSphere 服务器是本文设计的测试平台的控制中心,主要用于对集群当中各个虚拟机传输的相应管理指令进行发送[5]。需要在本文测试平台中进行测试的软件,需要在脚本执行要求的自动化测试环境当中,按照不同的部署结合Power CLI 命令行工具,将其传输到对应的虚拟机当中。同时,测试过程中,用于协同多个虚拟机的程序也同样需要部署在相应的虚拟机当中。并且,Resource 资源服务器还需要为软件处理环境提供所需的软件安装包、工具安装包以及自动化脚本等相关内容的代码。
由于本文分布式协同软件测试平台的主要应用场所是常见的各类网络环境,因此在测试过程中为了保证软件的安全性,防止其内部敏感信息泄露,本文还需要对测试用户的敏感信息进行安全防护,以此保证软件公司的利益。在控制各个虚拟机进行对软件的测试时,设置两个需要进行身份验证的模块。第一个模块设置在与vSphere服务器连接的位置,用户在本文测试平台上,无论是通过图形界面登录,还是通过控制命令的形式登录,都需要进行vSphere用户认证。第二个模块设置在Master 程序在执行相应测试指令过程中,需要由用户提供当前测试设备以及目标设备的操作用户认证。同时,由于登录内容也属于用户的敏感信息,因此考虑到登录账户的安全问题,应当选择安全级别较高的网络环境作为登录环境,并且在用户输入相应账号和密码时,不以明文的形式显示、存储和传输。同时,为了进一步保证用户敏感信息的安全,本文引入证书认证的方式,对用户敏感信息进行二次保护。在平台部署阶段,通过输入密码的方式生成相应的加密证书。利用本文测试平台当中的Master 程序,根据证书和用户创建的内部证书对象,对后续测试过程中的相应指令进行验证,以此确保用户敏感信息的安全性。
表1:两种测试平台实验结果对比表
为进一步提高本文分布式协同软件测试平台的测试效率,在对平台协同测试环境进行部署时,通过引入Jenkins 技术,实现开源项目的应用平台设计,以及丰富本文测试平台的功能,并实现插件的可扩展性,方便后续测试平台的集成和交付。选择本文测试平台框架当中相对稳定的虚拟机,在其中引入带有Jenkins 技术的服务器,在利用Jenkins 技术对虚拟机上部署的客户端管理的过程中,可通过Jenkins 对服务器中创建的各类任务进行管理,以此完成对虚拟机的管理、软件安装以及相应脚本的运行。引入Jenkins 技术,实现自动化测试环境部署的主要流程为:
第一步,对测试部署环境当中的虚拟机执行关机动作;
第二步,对平台当中的虚拟机执行镜像恢复操作。在镜像设置当中主要包含:启用重启后自动登录模块、禁用重启后输入关机原因对话框、版本更新等;
第三步,对测试平台部署环境当中的虚拟机执行开机操作;
第四步,根据不同软件的测试需要,在相应的虚拟机当中安装软件,并设置相应的配置。安装的软件除了包括需要进行测试的软件以外,还应当包括支持自动化测试的软件平台;
第五步,对平台部署环境当中完成部署的虚拟机执行重启操作;
第六步,将测试平台当中相应的虚拟机进行协同控制;
第七步,启动平台当中的自动化测试脚本。
根据上述操作,完成对本文测试平台的自动化测试环境部署。
为验证本文设计的分布式协同软件测试平台在实际应用中的效果,选取常见的几种软件作为待测对象,分别为Redundancy Client12.0、View FV Client13.5、Talk Wisn Server 10.8 等。分别利用本文设计的测试平台和传统测试平台对上述多种类型软件进行测试,为了保证实验的客观性,将两种平台同时搭建在Windows 9 系统当中,并保证在搭建的过程中,除本文设计的各个条件存在差异外,其余可能影响实验结果的条件均保持一致。对比两种测试平台在进行不同测试用例时的耗时情况。考虑到在实验过程中可能会受到周围影响因素的干扰,因此为了进一步保证本文实验的公正性,每种测试用例均在两种平台上执行5 次,并取5 次的平均值作为结果。完成上述操作后,将实验结果进行记录,并绘制成如表1所示的实验结果对比表。
表1中的测试用例A~E 分别表示为:启动主服务器,保持备用服务器运行;同时启动主服务器和备用服务器;启动备用服务器,保持主服务器正常运行;断开主服务器;断开备用服务器。由表1中的数据可以看出,本文测试平台的耗时在各个测试用例当中均明显小于传统测试平台的耗时。在实验过程中发现,造成这一实验结果产生的主要原因是本文测试平台在测试过程中采用了判断目标出现或消失的方式替代传统测试平台的等时操作,因此时间成本得到明显的降低。因此,通过实验进一步证明,本文提出的分布式协同软件测试平台在实际应用中能够有效提高测试平台的响应速度。
针对复杂的分布式软件在进行测试过程中需要多台设备协同配合的问题,本文提出了一种全新的分布式协同软件测试平台,并通过实验证明了该平台的应用效果。将该测试平台应用于实际,能够有效提高对软件的测试效率,值得在软件企业中广泛应用。