测试即服务的云测试研究
2015-05-13
中国联通研究院 北京 100032
引言
云计算[1-2]是当前信息技术领域的热点之一,已在工业界和学术界内备受关注。它是一种全新的计算模式,通过互联网以服务的方式向用户提供动态可伸缩的虚拟化计算资源。用户在使用计算资源的过程中,仅需与服务供应商进行少量的交互,可以更好地专注于自身的上层业务逻辑,不必关心复杂的底层硬件逻辑、网络协议、软件架构等细节。云计算带来的以服务方式将虚拟化的计算资源供给用户使用的模式,给传统信息技术产业带来巨大影响,改变了传统软件生产组织和软件架构设计方式。这也对传统的软件测试方法与技术形成了新的挑战,如何开展云计算环境下的软件测试是国内外业界与学界面临的热点问题。
云测试是上述背景下出现的软件测试新模式。目前,该领域的研究主要集中在如何将测试迁移到云中,利用云计算技术整合和部署大量的计算资源,开展测试活动。研发基于云计算的软件测试平台,助力传统测试活动,以少量的资源,在紧张的开发与测试时间间隔内,高效地完成测试任务,对企业的信息化建设具有深远的战略意义。本文概述云计算在测试领域应用研究的进展,报告我们在此方面的尝试,以期推动云计算在软件测试方面的应用研究。
1 云计算时代的软件测试
随着软件设计技术的发展、软件规模的增加和软件开发周期的紧缩,软件测试在整个软件开发周期中所占比重日益增大。作为保障软件质量与可靠性的关键一环,软件测试的重要性日益增长。
云测试的研究在国内外仍处于初级阶段,比较有代表性的定义是Gao等在云测试综述[3]中提出的“云测试是在云环境和基础设施中利用云计算技术解决方案进行的测试活动”。根据该定义,云测试是具有以下特征的测试活动,即将软件测试活动迁移到了云端,利用云计算技术按需提供与测试相关的软硬件资源,以服务的方式向用户提供按使用付费的测试业务(Testing as a Service)。云测试的研究包括两个方面:1)如何有效利用云环境中的资源测试其他软件;2)如何测试部署在“云”中的软件。第一方面的研究主要涉及与云测试密切相关的资源调度、优化、建模等方面的问题,以便为其他软件搭建廉价、便捷、高效的测试环境,加快整个软件测试的进程。在这一类型的测试中,其他的软件可以是传统意义上的本地软件,也可以是“云”中的应用软件服务;第二方面的研究涉及到云平台内部结构、功能扩展和资源配置等多方面的测试问题,测试部署在云平台中的各种云软件[4]。
云测试在基础设施、测试环境部署、测试过程管理、付费方式等诸多方面颠覆了传统软件测试。具体体现在以下5个方面。
1) 基础设施。传统软件测试需要用户自行购买各种测试基础设施,包括服务器硬件、网络设备、系统软件与测试软件等;云测试则由云服务提供商通过云计算平台提供测试基础设施服务,用户无需自行购买。
2) 测试环境部署。传统软件测试需要手工配置和部署测试环境,人工分配测试资源等,既有硬件上架、调试等复杂过程,又涉及操作系统、软件的费时费力安装;云测试支持测试资源按需分配,测试环境按需搭建和一键式回收。
3) 测试过程管理。传统软件测试采用分散管理模式,项目管理、软件质量保证水平参差不齐,不方便集中管控;云测试便于集中管理,对测试资源进行统一整合,动态分配,减少重复性工作,提高测试效率。
4) 付费方式。传统软件测试需要一次性付费,软硬件投入巨大,对于中小型用户是个很高的门槛;云测试则仅按需购买,按照测试项目规模、测试目标、测试时间等租赁付费,降低了软件测试的入围门槛。
5) 商业扩展。传统软件测试资源利用率低,易产生资源闲置,可扩展性较差;云测试以服务的形式共享测试资源与测试工具,通过云端对外开放,可扩展性强。
2 迈向云测试
本文的云测试平台涵盖了测试活动的全生命周期,通过虚拟化技术,支持测试环境的按需搭建,同时将测试工具挂载到了云端,支持测试工具在组织机构内的共享,降低了软件的授权(license)投入,便于版本控制和统一管理。云测试的整体流程如图1所示。
2.1 使用虚拟化资源,按需分配,即时可得,提高资源利用率
我们使用OpenStack[5]和两台Dell R710服务器,组成虚拟资源池。这两台服务器CPU均为Intel Xeon E5506,分别为节点controller和节点computer,通过交换机连接,处于同一局域网内。选用Ubuntu 12.04 LTS Server 64bit作为平台的基础操作系统,使用devStack[6]的multi-node方式部署OpenStack的Grizzly版本。
图1 云测试的生命周期
此外,我们使用OpenStack中的KVM(Kernel based Virtual Machine)[7]技术制作了常见操作系统的云镜像,如Linux的各种发行版本、Windows系列等。用户通过OpenStack API指定虚拟机配置、操作系统等规格参数申请该虚拟资源,如图2所示。申请成功后,用户可以通过远程连接使用虚拟资源,如Linux系统支持的OpenSSH或者VNC,Windows平台支持的“远程桌面”。
图2 虚拟化资源使用管理框架
通过使用虚拟化资源,不仅可以省去硬件上架、调试、安装等复杂环节,更实现了物理资源的统一管理。虚拟资源管理模块,可根据项目的人数、实际需求、机器利用率等按需分配资源,支持大量并行测试项目按需申请、随需随用、随用随收等测试环境的动态管理,大幅提高硬件资源利用率。
2.2 自动化部署测试资源,节约运营和人力成本
我们调研了部门以往和现行的测试项目,归纳出常用的操作系统(如HP UX 11.31、AIX 6.1、RHEL 5.5、Win2008)、应用软件(如Oracle EE 10.2.0.5、Tuxedo 10.3.0.0、WebLogic 10.3.0.0、WebSphere ASND 7.0、Tomcat 6、JDK6)以及它们的高频组合,并把这些都固化到了相应的云镜像中。利用这些云镜像,通过资源申请阶段用户的参数设定,可以快速地自动搭建初始的测试环境。同时,允许用户上传安装包、安装脚本和配置文件等,以透明的方式自动安装未固化进云镜像的其它软件,如图3所示。此外,用户可以通过远程连接工具(譬如图3中针对Windows系统的远程桌面)登录到虚拟机手动配置。
图3 测试资源自动化部署
通过自动配置与安装操作系统和通用软件,避免手动安装费时费力易出错的情况,提高了测试环境部署安装效率。
2.3 按需快速搭建易于维护的测试环境,缩短开发与测试时间间隔
使用传统方式搭建测试环境是非常昂贵的,要完全模拟生产环境,诸多资源缺一不可。通过虚拟资源池和预制的云镜像,我们的云测试平台允许用户根据自己的不同需求自动搭建所需的测试环境,测试人员只需通过网络就可以登陆测试环境开始测试。测试环境的按需搭建,指数级地缩短了测试准备时间,极大地提高了测试效率。此外,不同测试阶段的环境都可以通过生成快照(snapshot)的方式,使得测试人员能够一键恢复不同测试阶段的测试环境,便于维护测试环境和执行回归测试。
2.4 以服务的方式封装测试资源与工具,实现测试即服务
利用云计算技术,我们实现资源的自动调度分配、测试环境按需自动化搭建等核心功能。进一步地,我们将测试资源与工具封装并以服务的方式开放出去,实现了测试即服务的模式。
合法用户在登录成功后根据业务需求填写处理器、内存、存储、软件、接入权限等资源申请,用户通过审核获取资源后,就可以在云上快速搭建测试环境,设计测试流程,利用远程登录等手段登录云端的测试环境,执行测试。我们实现了资源分配的自动化和并行化,按需搭建测试环境,同时,在业务测试过程中实时监控已分配资源的使用情况,向监控模块发送监控信息报告。监控模块实现了初步的虚拟机器健康管理和预诊断,适时发出资源追加申请,实现资源利用率的最大化。
为降低软件授权方面的成本,云端也挂载了各种测试工具,以最大并发数购买授权,测试人员共同使用有限的机器和授权。同时,这些工具也以服务的形式对外提供服务,以工具的使用时间和强度对租赁者收费。目前,平台提供的测试工具有LoadRunner、QTP、JMeter和Selenium,用户登录后选择所需测试工具付费后可登录已配置好测试工具的虚拟机使用工具执行测试,如图4所示。
图4 用户租赁QTP付费后使用
3 结语
本文利用云计算技术,将测试活动迁移入云端,包括虚拟资源按需分配统一调度、测试环境的按需搭建和集中管控、测试工具的共享和开放,涵盖资源分配、操作系统安装、通用软件安装、测试环境部署、后续配置等测试活动的全生命周期。但所述云测试平台在测试流程管理方面功能不够全面,颗粒度不够精细,后续可通过集成相关的测试流程管理工具(譬如TestLink)进一步完善这些方面。概括来说,这是一次有益的尝试,具体体现在:使用虚拟资源,可提高资源利用率,减少硬件投入;测试环境按需一键式部署和回收,缩短了开发与测试的间隔;测试环境易于维护和管控,方便版本管理和回归测试;以服务的形式共享测试工具,减少软件授权的投入;测试资源与测试工具通过云端对外开放,创造了新的运营模式。
参考文献
[1]Mell P,Grance T.The NIST Definition of Cloud Computing[R].National Institute of Standards and Technology Pubulication 800-145,2011
[2]Sriram I,Khajeh-Hosseini A.Research Agenda in Cloud Technologies[C]//the 1st ACM Symposium on Cloud Computing(SOCC),2010:1-11
[3]Gao J,Bai X,Tsai W T.Cloud Testing-Issues,Challenges,Needs and Practice[J].Software Engineering:An International Journal,2011(1):9-23
[4] 李乔,柯栋梁,王小林.云测试研究现状综述[J].计算机应用研究,2012(12):4401-4425
[5]OpenStack,Home[EB/OL].[2015-03-10].http://www.openstack.org/,2015
[6]Devstack,Home[EB/OL].[2015-03-10].http://devstack.org/,2015
[7]KVM,Home[EB/OL].[2015-03-10].http://www.linux-kvm.org/page/Main_Page,2015