基于VMware vSphere的分布式协同软件测试平台构建*

赵 爽1,董宗然2

(1.沈阳体育学院 管理与新闻传播学院,沈阳 110102;2.大连外国语大学 软件学院,辽宁 大连 116001)

摘 要:为了解决复杂分布式软件测试中经常需要多机器间协同配合以完成测试工作的问题,提出一种基于VMware vSphere的协同软件测试平台的设计方法.探讨了测试平台的技术选型及架构设计,并对平台设计中的关键技术进行了分析和说明.结果表明,该平台对测试中可预见的虚拟机操作提供了充分的自动化支持,使诸多需要多机器协同配合的复杂测试用例实现了自动化,对缩短软件开发周期,降低软件研发成本,提高软件质量具有一定借鉴价值.

关键词:vSphere虚拟机;虚拟化;自动化测试;分布式软件;软件部署;协同测试;脚本程序;测试平台

vSphere是VMware公司开发的新一代基于服务器模式的虚拟化解决方案,为实现和管理大规模的虚拟机架构提供了一个完美平台,利用云操作系统和虚拟数据中心,IT人员可以有效地根据负载需求分配计算资源[1].

在软件开发过程中,基于自动化测试平台可以极大地提高软件测试效率,因此构建自动化测试平台是软件企业基础设施建设的重要组成部分[2].蔡建平[3]、许文瑛[4]、申德玮[5]等着眼于开发具有协同软件测试功能的管理系统,用于解决多个不同软件技术模块协同测试的问题,实现了对软件测试的全程跟踪和实时管理.周梦瑶[6]、王丹[7]等则着眼于利用虚拟机技术构建自动化测试或监控环境,用于解决在软件系统进行网络测试时,搭建真实运行环境所遇到的造价高、耗时长、维护困难等问题.但在实施过程中发现,搭建单一机器或搭建多机器互连但机器间无协作关系的自动化测试环境较易实现,但对于构建多机器互连且需要多机之间具有协同配合能力的自动化测试环境具有一定难度[8].在工业自动化领域,大量用户应用场景基于分布式计算环境,而且用户量大,对软件功能使用全面且复杂,所以要求软件测试平台能够尽可能满足对用户真实使用情形的模拟[9],因此,本文提出一种基于VMware vSphere构建分布式协同软件测试平台的新方法.

1 测试平台技术选型及架构设计

1.1 关键技术选型

vSphere通过虚拟服务器(Server)对虚拟环境进行管理,在虚拟环境中,通过管理程序根据需要创建虚拟客户端(Client),并对每个Client虚拟机进行系统安装和分布式管理.本文分布式拓扑结构由多台网络互连的虚拟机构成,而对虚拟机间的协同监控能力则主要由部署在虚拟机上的软件设施实现.实现软件测试自动化的技术和工具有很多种[10],用户可以根据软件的运行平台、待测软件的属性和类型以及软件测试需求等进行选择.而对软件测试过程中,需要多机协同配合进行测试,现有自动化工具无法满足需求,协同软件测试平台的提出正是为了解决此类难题.

首先要将平台软件和待测软件部署到测试平台的虚拟机上,在测试执行过程中,通过调用测试平台中的方法对指定虚拟机进行控制和状态查询,控制操作包括:上电开机、断电关机、重启、系统关机、挂起、插入网线等;状态查询包括查询指定机器的开关机状态、网络连接状态、服务程序运行状态、脚本执行状态等.

为了实现对vSphere虚拟机环境的自动化监控,调研了4种实现协同测试平台的潜在技术方案:

1)基于Python定制程序实现.Python是当前流行的程序设计语言,具有丰富和强大的库[11],该方案需在各虚拟机上部署定制好的Python程序,通过Python程序完成对虚拟机的控制、查询和协同通信.

2)基于自动化工具操作vSphere UI实现.通过自动化工具抓取vSphere图形界面的UI元素,再基于抓取的控件对象,编写自动化脚本操作虚拟机.

3)基于Jenkins任务实现.Jenkins可用于监控外部调用执行的工作,将虚拟机操作设计成Jenkins任务,在测试中调用相应任务操作虚拟机或执行自动化脚本[12].

4)基于PowerShell定制程序实现.通过VMware官方提供的Windows PowerShell接口PowerCLI实现,用于对vSphere各方面进行自动化管理,相比采用GUI方式操作虚拟机更为稳定.

表1对上述方案的主要优缺点进行了对比.

表1 不同技术方案对比
Tab.1 Comparison of different technical solutions

技术方案优点缺点Python定制程序较强的管控能力,完美的多系统平台支持开发和维护成本较高,管控能力不够完整脚本控制vSphereUI开发和维护技术成本低基于UI操作,稳定性差,维护的人力成本高,明文认证,信息保密性差Jenkins任务易于与当前测试平台集成底层仍需借助其他技术,不便于普通用户使用PowerShell&PowerCLI完整的管控和查询能力,开发和维护成本低,灵活、稳定、易扩展,支持加密认证主要用于Windows系统平台,也支持macOS和Ubuntu等系统

本文测试平台的工况需求主要包括:能够基于vSphere虚拟机平台对目标虚拟机进行完整管控,要求能够覆盖测试虚拟机的各种操作,方案1)最满足该项需求;测试平台配置需要灵活、稳定、易扩展,测试人员能够通过修改平台配置适应新需求,方案1)和4)满足该项需求;平台搭建最好具有较低的前期开发和后期维护成本,方案3)和4)是较好方案;此外,测试平台还需要对内部认证信息进行保护,并且易于与当前已有工具进行集成.综合考虑目标平台的使用工况和各方案的适用场景,协同软件测试平台的关键技术选型确定为PowerShell &PowerCLI.

1.2 测试平台架构设计

测试平台基础架构设计如图1所示,其拓扑中包括网络互连的一个vSphere Server,若干个vSphere Client,一个Jenkins Server,一个或多个资源服务器(可选).其中,vSphere Server是基于vSphere构建测试平台的控制中心,对集群内各虚拟机的管理需要向它发送命令来完成;vSphere Client是部署测试环境和测试平台定制程序的虚拟机,测试用例要求安装的待测软件产品和脚本执行要求的自动化测试环境可根据需要部署到相同或不同的Client虚拟机上.负责协同控制的测试平台程序也要部署到Client虚拟机上,包含部署在一个Client上的Master程序和部署到若干个Client上的Slave程序.Jenkins Server负责测试用例所要求自动化测试环境的部署以及测试用例主流程的控制;资源服务器负责提供部署测试环境所需要的软件安装包、工具安装包和自动化脚本等代码.

图1 测试平台架构
Fig.1 Infrastructure of testing platform

2 测试平台关键技术分析

2.1 用户敏感信息保护

自动化测试平台的使用对象是公司内部测试团队,并非公司外部的产品用户,其安全性风险主要体现在高权限账户信息的泄露上,这些信息如果以明文方式被脚本使用,则会产生不必要的风险.

在基于vSphere操控虚拟机的过程中,需要验证身份的地方包括两处,一处是连接vSphere Server,无论通过图形界面登录还是命令行登录,都需要进行vSphere用户认证;另一处是Master程序执行PowerCLI命令远程访问Client虚拟机时,需要提供当前机器和目标机器的操作系统用户认证.登录信息属于用户敏感信息,在安全级别较高的环境中,不能以明文显示、存储和传输[13].PowerCLI命令支持通过证书方式连接vSphere Server和执行远程命令,证书认证可以更好地保护用户敏感信息,在部署阶段输入密码生成加密证书,程序中根据证书和用户名创建内部证书对象,在后续命令中使用证书对象验证,获取程序如下:

read-host-assecurestring |convertfrom-securestring| out-file “path_of_credential_file” (创建证书)

$password=get-content “path_of_credential_file”| convertto-securestring (读取证书、获取密文密码)

$credential=new-object-typename

System.Management.Automation.PSCredential-argumentlist $username,$password (创建证书内部对象)

$server=connect-viserver $ip-credential $credential-port $port (证书连接)

其中,path_of_credential_file为存储密码的证书文件,$username、$ip、$port分别为vSphere用户名、服务器ip地址和端口号.

2.2 Master程序设计

Master程序主要由PowerShell脚本、CMD/BAT脚本以及一个方便用户使用的图形化接口工具构成.PowerShell &PowerCLI脚本程序用于执行对部署Slave程序的Client虚拟机的控制和查询,实现主要功能包括:开机、断电关机、重启、物理连接/断开网络设备、拷贝文件到远程机器、执行远程机器脚本等.Windows系统出于安全考虑,限制PowerShell脚本直接运行,自动化测试为了避开这种限制而又不修改脚本执行权限,通常通过BAT/CMD脚本封装PowerShell脚本.

在BAT/CMD脚本被调用时,内部启动Power-Shell解释器,执行PowerShell脚本,并将传给BAT/CMD的命令参数转发给PowerShell脚本.PowerCLI脚本程序提供了操控vSphere虚拟机的能力,但测试用例中的协同控制逻辑需要借助自动化脚本实现,当自动化脚本需要操作或查询虚拟机时,则调用BAT/CMD封装的PowerCLI程序.自动化脚本调用命令在大多数情况下也很方便,但为了给自动化测试用户、手动测试用户以及虚拟机管理用户提供更好的体验和灵活性,本文开发了一个图形化接口工具,对命令参数及工具的配置可通过配置文件读入,虚拟机操作和结果查看通过图形界面直观完成.图2给出了Master程序的工作流.

图2 Master程序工作流
Fig.2 Workflow of Master program

2.3 Slave程序设计

Slave程序负责完成对部署它的Client机器的本地操作,主要由CMD/BAT脚本、PowerShell &PowerCLI脚本以及其它类型程序构成.Slave程序用来执行特定任务,可由Master程序使用Invoke-VMScript命令远程启动,方法如下:

Invoke-vmscript-scripttext “path_of_script_file”

-vm $client-hostcredential $host_cred

-guestcredential $guest_cred

-scripttype Bat-ErrorAction Stop

其中,path_of_script_file为Slave中的脚本程序,$client为部署Slave的虚拟机,$host_cred为当前机器系统用户证书对象,$guest_cred为远程机器系统用户证书对象.

在本文协同测试平台中,Slave程序可以执行的功能包括:使能或禁用NIC网卡,查询Client机器上的dump文件生成情况以及查询特定服务运行状态等.需要指出,在系统中使能或禁用网卡与物理上连接或断开网络设备虽然都能达到控制网络连接的效果,但在软件测试中并非等效的环境设置,因为软件程序对不同情况下断网的处理逻辑很可能不同,同样物理断电关机和系统关机在测试中也不是等效操作,所以本文测试平台要求全面覆盖不同用例情况.

2.4 自动化环境部署

为了提高测试效率,协同测试环境的部署需要自动完成.Jenkins是一个强大的基于开源项目的应用平台,具有功能丰富的插件可供扩展,支持项目的持续集成和交付,广泛应用于软件公司的CI(continuous integration)系统中[14].选择一台性能稳定的机器安装Jenkins服务器,在被Jenkins管理的虚拟机上部署Jenkins客户端,通过Jenkins的Web管理接口在服务器中创建各类任务(Job),用于完成对虚拟机的管理、软件安装以及脚本运行等.本文基于Jenkins部署协同测试环境的流程如图3所示,图3中流程对应完成相应功能的Jenkins任务.

图3 Jenkins任务工作流
Fig.3 Workflow of Jenkins task

3 实验及结果讨论

3.1 测试环境搭建

本文主要测试FactoryTalk® View Site Edition (SE)10.0软件的冗余功能.SE软件是分布式人机交互接口(HMI)平台,用于实现对工业生产过程的自动监控,对系统可靠性和鲁棒性要求很高.冗余功能支持对HMI服务器、数据服务器、报警服务器的冗余配置,在Primary Server出现故障的情况下,自动切换到Secondary Server,同时也支持Secondary到Primary的反向切换.本文构建了冗余功能的自动化测试平台,测试环境部署如表2所示.

表2 测试环境配置
Tab.2 Configuration of testing environment

虚拟机及安装的待测软件虚拟机环境监控程序Redundancy_Client(FactoryTalkViewSEClient10.0,FactoryTalkViewStudioEnterprise10.0)Windows10Pro64bit;PowerShell5.1;VMwarePowerCLI6.5;VMware-tools10.1.5;TestAutomationFramework(TAF)3.10;JenkinsClient程序;系统自动登录PowerShell脚本、CMD/BAT脚本、登录证书、图形化监控工具及配置文件、TAF自动化测试脚本等 Redundancy_PrimarySvr(FactoryTalkViewSEServer10.0)Redundancy_SecondarySvr(FactoryTalkViewSEServer10.0)Redundancy_FTDSvr(FactoryTalkServicesPlatform6.10)WindowsServer201664bit;PowerShell5.1;VMware-tools10.1.5;JenkinsClient程序;系统自动登录;禁用重启后原因输入框 PowerShell脚本、CMD/BAT脚本、服务监控程序等

3.2 测试效果

冗余功能是SE产品的重要功能之一,在测试中需要构建各种让在线Server失去通信而自动切换到备份Server的用例情形.测试用例除了要验证无故障情况下各种功能正常外,还要验证在物理开关机、系统开关机、系统重启、系统内使能/禁用网卡、物理连接/断开网络等情况下冗余功能是否可按预期工作.在以往没有协同测试环境支持的情况下,主要依靠测试人员直接操作和查看状态,代价大、效率低.本文提出的协同测试平台可以自动测试脚本,实现了冗余功能人工测试的等价模拟.自动测试脚本调用Master图形工具监控虚拟机的接口执行效果图如图4所示.

图4 接口程序执行效果
Fig.4 Execution results of interface program

表3给出了SE软件冗余功能手动测试和自动测试的耗时情况对比.考虑到测试过程会受偶然因素影响,为减小测试误差,每种测试情形各执行5次,表3中数据为5次执行时间的平均值.Primary表示主HMI服务器虚拟机,Secondary表示备用HMI服务器虚拟机,每种测试情形下需要执行的用户操作类似,需要检查的验证点基本相同(包括查看系统功能执行情况,以及各服务器的工作和在网状态).

表3 冗余功能手动测试与自动测试耗时对比
Tab.3 Comparison of time consumption between manual and automatic tests for redundancy function s

测试用例手动耗时自动耗时重启备用服务器,保持主服务器运行(通过操作系统方式开关机)1027902重启备用服务器和主服务器(通过操作系统方式开关机)11401021重启主服务器,保持备用服务器运行(通过通断电方式开关机)1085965重启主服务器和备用服务器(通过通断电方式开关机)12091080断开、连接主服务器网络(通过插拔网线方式控制网络通断)788661断开、连接备用服务器网络(通过使能禁用网卡方式控制网络通断)722606断开、连接主服务器和备用服务器网络(通过插拔网线方式控制网络通断)845724断开、连接主服务器和备用服务器网络(通过使能禁用网卡方式控制网络通断)787666

自动测试在界面操作速度和结果验证速度方面快于手动测试,但为了保证软件运行稳定,自动测试往往会在一些步骤之后加入较长的延时等待,以确保关键步骤执行完毕后可继续往下执行,所以在耗时方面自动化测试相比手动测试不一定占优.本文对实验平台自动化测试脚本进行了优化,尽可能采用判断目标出现或消失的方法取代等时操作,所以时间成本降低约13%,本文方案在测试耗时方面可被接受.自动测试的最大优势是可以选定在非工作时段执行,而不受人力分配影响,也解决了人工测试固有的体能问题.

4 结 论

针对复杂分布式软件系统在自动化测试中需要解决多机器协同配合的问题,提出了一种基于vSphere虚拟化平台的、多种技术方案融合的新型解决方法.分别从技术选型、平台体系结构设计、关键技术分析等方面进行了论述,并以FactoryTalk View SE的冗余功能作为测试实例验证了所提方法的可行性和有效性,使原本只能手工执行的测试用例实现了自动化,提升了软件生产效率.此外,所设计的图形化操作接口程序,不仅可被自动化脚本调用,也可为手动测试人员操控虚拟机带来方便,提升人工测试效率.未来研究可根据测试需求,开发出功能更丰富的Slave程序和Master程序组件,灵活实现对协同测试平台的功能扩展.

参考文献(References):

[1] 毛一丰.基于vSphere的自动化软件测试框架的设计与实现 [D].南京:南京大学,2012.

(MAO Yi-feng.The design and implementation of vSphere based software automation test framework [D].Nanjing:Nanjing University,2012.)

[2] 邓璐娟,李金萌,董东晓.自动化测试框架技术及应用 [J].计算机测量与控制,2016(9):86-88.

(DENG Lu-juan,LI Jin-meng,DONG Dong-xiao.Technology of automatic testing framework and application [J].Computer Measurement &Control,2016(9):86-88.)

[3] 蔡建平,许文瑛.协同软件测试管理平台的研究 [J].计算机工程与设计,2012(12):4566-4570.

(CAI Jian-ping,XU Wen-ying.Research on collaborative software test management platform [J].Computer Engineering and Desin,2012(12):4566-4570.)

[4] 许文瑛.协同软件测试管理模型及其平台架构的研究与应用 [D].北京:北京工业大学,2012.

(XU Wen-ying.Research and application of collaborative software test management model and its platform architecture [D].Beijing:Beijing University of Technology,2012.)

[5] 申德玮.协同软件测试管理系统的设计与实现 [D].长春:吉林大学,2016.

(SHEN De-wei.Design and implementation of collabo-rative software test management system [D].Changchun:Jilin University,2016.)

[6] 周梦瑶.用虚拟机搭建多程序软件的网络测试环境 [J].中国新技术新产品,2018(6):28-29.

(ZHOU Meng-yao.Using virtual machine to build network testing environment for multiprogram software [J].China New Technologies and Products,2018(6):28-29.)

[7] 王丹,陈嘉,赵文兵,等.基于虚拟机的程序运行时监控方法 [J].哈尔滨工程大学学报,2017,38(12):1969-1976.

(WANG Dan,CHEN Jia,ZHAO Wen-bing,et al.Virtual machine-based method for runtime monitoring of executing program [J].Journal of Harbin Engineering University,2017,38(12):1969-1976.)

[8] 杜家兵,陈衍鹏.面向服务器集群的自动化测试监控平台的研究和实现 [J].自动化与仪器仪表,2018(4):95-97.

(DU Jia-bing,CHEN Yan-peng.Research and implementation of automated test and monitoring platform for server clusters [J].Automation &Instrumentation,2018(4):95-97.)

[9] 杨本生,袁祥梦,黄晓光.基于动态优先权蚁群算法的分布式自动化测试调度 [J].智能系统学报,2014(6):729-733.

(YANG Ben-sheng,YUAN Xiang-meng,HUANG Xiao-guang.Distributed automation test scheduling by the ant colony algorithm based on dynamic priority [J].CAAI Transactions on Intelligent Systems,2014(6):729-733.)

[10] 吴涛,杨昌其.变更管制方式安全评估模型及软件设计 [J].重庆邮电大学学报(自然科学版),2016,28(6):870-875.

(WU Tao,YANG Chang-qi.Safety evaluation model about air traffic control meanschange and its software design [J].Journal of Chongqing University of Posts and Telecommunications(Natural Science Edition),2016,28(6):870-875.)

[11] 祁瑞华.Python程序设计 [M].北京:清华大学出版社,2018.

(QI Rui-hua.Python programming [M].Beijing:Tsinghua University Press,2018.)

[12] 张力文.基于Jenkins的项目持续集成方案研究与实现 [D].成都:西南交通大学,2017.

(ZHANG Li-wen.Research and implementation of project continuous integration [D].Chengdu:Southwest Jiaotong University,2017.)

[13] 曾忠平.信息安全人因风险研究进展综述 [J].情报杂志,2014(4):6-11.

(ZENG Zhong-ping.A comprehensive review of the theories and practices of human factor risk analysis in information security management [J].Journal of Intelligence,2014(4):6-11.)

[14] 孙士国.λ网络中一种分布式速率分配算法 [J].沈阳工业大学学报,2018,40(6):687-691.

(SUN Shi-guo.A distributed rate allocation algorithm in-λ networks [J].Journal of Shenyang University of Technology,2018,40(6):687-691.)

Construction of distributed collaborative software-testing platform based on VMware vSphere

ZHAO Shuang1,DONG Zong-ran2

(1.School of Management and Journalism Communication,Shenyang Sport University,Shenyang 110102,China;2.School of Software,Dalian University of Foreign Languages,Shenyang 116001,China)

AbstractIn order to solve the problem of multi-machine cooperation to complete testing work in the complex distributed testing software,a design method for collaborative software-testing platform based on VMware vSphere was proposed.The technical selection and architecture design of testing platform were investigated,and key technologies for the design of testing platform were discussed and explained.The results show that the as-proposed platform provides sufficient automation support for predictable virtual machine operations,facilitating the automation of many complex tests that require multi-machine cooperation.The testing platform also provides some references for shortening software development cycle,reducing software development cost and improving software quality.

Key wordsvSphere virtual machine;virtualization;automation testing;distributed software;software deployment;collaborative testing;scripting program;testing platform

中图分类号:TP 311.5

文献标志码:A

文章编号:1000-1646(2019)06-0648-06

收稿日期2018-10-28.

基金项目辽宁省教育厅科学研究一般项目(L2015512).

作者简介赵 爽(1970-),女,辽宁沈阳人,副教授,硕士,主要从事计算机无线网络技术等方面的研究.

** 本文已于2018-11-27 15∶33在中国知网优先数字出版.

网络出版地址:http:∥kns.cnki.net/kcms/detail/21.1189.T.20191028.1119.008.html

doi:10.7688/j.issn.1000-1646.2019.06.10

(责任编辑:景 勇 英文审校:尹淑英)