基于云计算的软件测试技术研究

时间:2022-07-16 04:22:23

基于云计算的软件测试技术研究

摘要:云计算技术的出现给软件测试技术的发展带来了深刻影响,催生了测试即服务(TaaS, Test as a Service)的理念,基于云计算的测试技术也是软件测试领域发展的趋势之一,该文对云计算技术的定义及提供的服务做了介绍,对云测试的概念及云测试提供的服务进行了分析,最后给出了一个搭建云测试平台的方案。

关键词:云计算;软件测试技术

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)28-0065-03

1.云计算

1.1 云计算定义

目前关于云计算还没有确切的定义,但是美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)的定义[1]是业内认可度较高的:即云计算是一个模型,通过这个模型用户可以方便地运用网络按需访问公共的可配置的计算资源池(网络、服务器、存储设备、应用程序及服务等),这些资源可以被快速地提供并,同时可以最小化管理成本、减少用户与服务提供商之间的交互过程。通过云计算,可将所有的软件和硬件化为公共资源池,存储在云服务器上,用户只需在本地客户端通过互联网发送请求信息,远程云服务器就会按需提供资源和服务,并将结果返回到本地。

1.2云计算提供的服务

云计算提供三种服务[2]:基础设施即服务(IaaS)、云平台即服务(PaaS)、软件即服务(SaaS),其服务模型如图1所示。

1) IaaS(Infrastructure as a Service,基础设施即服务),服务类型主要为大量服务器组成的云端基础设施资源形成的各类虚拟资源池,并提供标准统一的资源服务接口,通过调用这些接口为用户提供云计算特有的强大存储和计算能力等服务。

2)PaaS(Platform as a Service,平台即服务),将开发和运行环境作为一种服务来提供给用户,用户在云计算平台基础上,按照平台规定和要求开发自己的应用程序,也可以托管自己开发和运营的应用到云平台中,为用户提供研发平台。

3)SaaS(Software as a Service,软件即服务),将所有的应用软件都部署在云计算环境中,用户可以按需租用或者订购相应的软件资源,并按照计费标准通过使用数量、次数、时间等方式收取费用,客户只需按需使用。

2 云测试

2.1云测试概念

在本文中我们把在云计算环境上进行的测试称为“云测试”,顾名思义,云测试由测试和云计算两者组成,测试主要是指软件测试。通过将与测试相关的测试工具及测试环境部署在云端,用户在本地便可以进行测试工作。云测试按需服务,并针对使用收费,可以提供比如性能测试、负载测试和Web应用测试,以及在云中托管的测试环境[3]。

2.1测试即服务(TaaS)

由于云计算技术的推动,软件测试技术获得了巨大的发展,受到云测试提供的三种服务模式的影响,云计算在测试领域的应用催生了测试即服务的模式(Test as a Service, TaaS)[4]。测试服务提供商通过云测试平台向用户提供多种测试服务,用户通过制定测试方案,云测试平台按需分配测试资源,为用户返回测试结果。

3 云测试平台原型设计

云测试平台是云计算技术提供测试服务提供的载体,测试提供者将可调用的测试资源部署在服务器上,并向用户提供调用接口,用户通过云测试平台的前端创建测试项目,制订测试计划,上传测试脚本,执行测试过程,查看测试结果等[5]。为了更加深入地研究云测试的理论,我们进行了云测试平台的原型设计。

3.1云测试平台整体架构

在我们的方案中,云测试平台包含三层架构,最底层为IaaS层,该层中实现了物理资源的虚拟化、云平台的管理和测试框架的管理;中间为TaaS层,该层实现了测试项目管理及测试代码的分析与预处理,并与数据库进行交互,保存上传的测试脚本及测试项目;最上层为用户层,该层面向用户使用,用户通过网络调用云测试平台的服务。整体架构如图2所示。

3.2云测试平台的硬件环境

在搭建云测试平台时为了节省研究成本,保证平台的经济性,我们采用了三台x86 架构的单个服务器作为搭建云测试平台的硬件设备,它们可以满足当前的需要,有必要时可以对硬盘和内存等资源进行动态扩展。其具体配置如表1所示:

在云测试平台中,我们使用三台计算机作为服务器,其中一台作为云测试平台的控制和存储节点,另外两台作为计算节点,在两台计算节点中,一台作为测试过程的控制节点,另一台作为测试过程的执行节点。

3.2云测试平台的软件环境

搭建云测试平台时,首先应当是云环境的选择。由于本文中的云测试平台仅供研究使用,因此我们并没有采用商业云方案,其中一个原因是商业化的云平台和服务的使用需按需支付费用,增加了不必要的成本,另一个重要的原因是,这些云测试平台解决方案的底层设计牢牢把控在提供商手里,并不对外开放,因此对于研究人员来说开源软件显然是更好的选择。一方面,开源软件在使用时无需商业授权,因此可将云计算软件测试的研究和应用实践控制在较低的成本下;另一方面,开源的项目可提供源代码的下载,使研究人员能够深入地进行底层设计架构的研究。

目前使用最多的开源云有CloudStack和OpenStack。CloudStack 前身为商业化产品,并于2011年以超过两亿美金的价格被 Ctrix公司收购,随后被捐献给了Apache 基金会,变为了开源软件。OpenStack 是由 Rackspace 和 NASA 主导开发的一个基础云[6],拥有包括 HP,IBM,Dell 和 Redhat 等大公司在内的庞大用户群。两者各有优势,它们的比较如表2所示。

由于CloudStack曾经为商业软件,已经被证明为可以可靠的用于生产系统,因此我们最终选择了CloudStack作为云平台,并采用了KVM作为虚拟化软件。

CentOS操作系统是RedHat的非商业化版本,对CloudStack的支持度非常好,也是官方推荐的操作系统,因此我们选择CentOS作为服务器的操作系统,关系数据库我们选择了MySQL。构造云测试平台使用的软件配置如表3所示。

3.3测试工具的选择

首先,在云测试平台上实现的测试应是自动化测试,因此我们选择了自动化测试工具作为云测试平台的测试环境。在开源的测试工具中Junit和TestNG均可作为自动化测试框架[7],相对于Junit只适用于单元测试的劣势,TestNG则可做单元测试到集成测试的所有工作,因此我们选择TestNG作为单元测试到集成测试的自动化测试框架。

其次,测试的过程的并行执行由Selenium框架控制[8]。Selenium是一系列基于Web的自动化测试工具。Selenium体系主要由三个工具构成:Selenium IDE,Selenium RC和Selenium Grid,其中Selenium Grid允许Selenium RC针对大规模的测试用例集或者需要在不同环境中进行测试。通过Selenium Grid,多个Selenium RC实例可以在不同操作系统和浏览器环境中运行。启动时,每一个Selenium RC向Hub注册。当测试用例被分发到Hub时,测试用例将重新被指定到一个可用的Selenium RC上,由RC启动浏览器来执行测试用例。如此,测试用例就可以并行地运行。

3.4云测试平台的搭建

云测试平台整体上包括前台和后台两部分的搭建。前台的主要功能是与用户进行交互,包括用户的注册与登录、项目的增删改查、脚本的增删改查、测试结果的查询与下载,如图2所示。前台环境搭建包括网站设计、数据库设计、项目开发等过程。

后台的主要功能为测试脚本的下载、分发和执行以及测试结果的返回。后台环境搭建主要包括CloudStack环境的安装与配置、Selenium框架的集成和调用等过程,云平台搭建完成后可用CloudStack自带的管理界面进行虚拟机的添加和删除。前台和后台的交互如图3所示。

4 结束语

随着云计算技术的日益成熟,将会极大地改变人们应用信息的方式,使得软件服务企业的交付模式、研发模式和软件测试方式发生根本性的改变。在全球经济危机的影响下迫于成本压力,市场中有越来越多的企业开始考虑云模式所能带来的价值。目前市场上已经有部分云测试企业以及应用,但是云测试的标准和定义还没有一个统一的规定,云测试还处于稳步发展之中,伴随着云计算的快速发展,必将得到进一步的快速发展期[8]。

参考文献:

[1] Peter Mell, Timothy Grance. The NIST Definition of Cloud Computing[R]. USA:NIST Special Publication 800-145, 2011:1-3.

[2] 王佳隽, 吕智慧, 吴杰,等. 云计算技术发展分析及其应用探讨[J]. 计算机工程与设计, 2010(3).

[3] Yu L, Tsai W T, Chen X, et al. Testing as a service over cloud[C]//Service Oriented System Engineering (SOSE), 2010 Fifth IEEE International Symposium. Nanjing: IEEEPress, 2010: 181-188.

[4] 钟华. 基于云计算的软件测试服务研究[J]. 东华大学, 2011.

[5] 生桂勇. 基于云计算的软件测试系统设计[J]. 福建电脑,2012(9):95-97.

[6] 彭红. 基于CloudStack云管理平台的关键技术研究与应用[D]. 上海:华东理工大学, 2013.

[7] 费丹青, 李思易. 单元测试工具TestNG和JUnit参数化研究[J]. 福建电脑, 2012,27(11):44-45.

[8] 吴寒冰. Selenium自动化测试系统的设计与实现[D].北京:北京邮电大学,2012.

上一篇:计算思维下再谈原码设计思想 下一篇:《我叫郝聪明2》欢乐才是硬道理