主要研究基于云计算技术的软件测试平台构建的相关问题,说明云计算软件测试平台的层次模型和系统结构,讨论采用开源软件构建云测试平台IaaS和PaaS的方法。IaaS构建包括软硬件环境说明、OpenStack安装与配置、虚拟测试服务器配置;PaaS构建包括云计算软件测试项目管理工具设计和实现、对IaaS资源的调用方法说明。最后给出系统运行实例。
This paper makes research on a solution to the construction of cloud computing platform for software testing. It first proposes the hierarchical model and the system architecture, and then discusses the approaches to building a cloud computing platform for software testing by using the open source software techniques, including IaaS and PaaS. In implementing these approaches, the authors first list out the software and hardware specifications of the IaaS platform, then describe the installation and configuration of the OpenStack, and illustrate the configuration of virtual testing servers. The authors also present the deployment of the PaaS, which includes the design and implementation of software testing project management tool on cloud computing, the calling method of IaaS resources. At last,the running example of system is given.
云计算软件测试能够有效地利用云平台动态可扩展的海量资源,节省测试时间和降低测试成本,是一种较好的测试解决方案。在现有的云计算软件测试平台中,已经有IBM[ 1]、Wipro[ 2]、UTest[ 3]、SOASTA[ 4]等多个公司提供的商业解决方案,这些平台和服务在使用时需要收取费用,部分整体化解决方案价格昂贵。而且,这些云测试平台和解决方案是商业公司或测试即服务(Testing as a Service, TaaS)提供商专有的,它们的底层设计对外是不开放的,外部研究人员很难进行相关问题的深入研究。开源软件则避免了这些缺点,在使用时无需商业授权,能够以较低的成本进行云计算软件测试的研究和应用实践。同时,这些项目提供了源代码的下载,使研究人员能够更深入地进行底层设计。因此,笔者参与的云测试研究项目没有采用商业方案,而是利用OpenStack、Ubuntu、KVM等开源项目构造了云计算软件测试平台。本文在提出云计算软件测试平台层次模型和系统结构的基础上,讨论了采用开源软件进行云测试平台IaaS(Infrastructure as a Service)和PaaS(Platform as a Service)构建的方法,设计和实现了云计算软件测试项目管理工具,对云计算测试平台的建设进行了有益的探索。
云计算软件测试平台是一个复杂的软件、硬件和服务的综合体,不同的云测试平台设计和实现的重点也不相同。例如,日本筑波大学D-Cloud平台主要研究虚拟故障插入和分布式系统测试[ 5, 6], 瑞士洛桑理工大学的Cloud9平台主要研究集成开发环境和云测试服务[ 7],英国约克大学YETI平台主要研究云计算平台的自动化测试工具[ 8]。笔者参与的研究项目主要研究云测试项目管理和TaaS,在参考上述平台的基础上,本文提出了一种新的测试平台层次模型,包括IaaS和PaaS两个主要组成部分。IaaS提供计算和存储资源,管理虚拟云测试服务器;PaaS面向云测试用户,构建于IaaS上,使用IaaS提供的基础资源。测试平台层次模型共分为5个层次,如图1所示:
(1)最底层为物理设备层,通过服务器、网络设备、存储设备、安全设备提供实际的物理计算、存储和安全管理等功能;
(2)虚拟化层,通过VMWare、KVM等虚拟化软件构造虚拟测试服务器;
(3)云资源管理层,通过Amazon EC2、Eucalyptus、OpenStack等系统动态分配和管理公共云或私有云的各种虚拟资源;
(4)云测试项目管理层,通过云计算软件测试项目管理工具规划和管理云测试项目、定义测试需求和控制测试流程,同时管理测试源代码、测试用例、测试文档等测试数据;
(5)最高层为用户操作层,能够完成测试云环境配置、任务分配、测试执行、结果分析、任务记录等测试用户的基础测试操作。
云测试平台IaaS构建主要包括配置软硬件设备和网络设备、安装云平台管理工具、配置虚拟测试服务器等。首先对软硬件环境进行总体说明,然后讨论利用OpenStack和KVM进行云测试平台IaaS构建的过程。
(1)硬件环境
本文讨论的云测试平台实例主要应用在科研实验环境中,需要充分考虑用户的使用成本,保证平台的经济性。在选择服务器时,初始配置采用两台x86架构的PC Server,这样起步阶段硬件设备的投入成本较低。在计算资源或者存储资源不能满足需要的情况下,可以动态扩展各种资源,这样也能够满足未来业务发展的需要。云测试平台初始硬件环境如表1所示:
云测试平台初始配置时使用两台服务器,本文将其称为服务器I和服务器II。服务器I作为云平台的控制节点和存储节点;服务器II作为云平台的计算节点。每台服务器均配置两块千兆以太网卡,第一块网卡eth0设置为外部可访问的IP地址,第二块网卡eth1设置为云平台各节点内部通信的IP地址。服务器I和服务器II的设置说明如表2所示:
(2)软件环境
云测试平台IaaS的软件环境主要采用开源系统,配置时首先需要对云计算管理平台、虚拟机和基础操作系统进行技术选型[ 9]。目前主流的开源云计算管理平台是Eucalyptus和OpenStack,本项目选择OpenStack平台,主要原因是OpenStack已经获得多个商业公司和开源组织的支持,正在成为开源云计算平台最核心的技术。在虚拟化技术方面,Linux平台中主流的虚拟化软件是XEN和KVM,本项目选择KVM,主要原因是KVM采用基于硬件的完全虚拟化技术,核心代码简洁,管理较为方便。因为Ubuntu是对OpenStack平台支持最好的一个Linux发行版,所以选择Ubuntu作为基础操作系统。关系数据库采用MySQL。构造云测试平台IaaS使用的主要软件如表3所示:
测试平台构建采用OpenStack管理云测试资源。OpenStack项目中,“计算”(Compute)、“对象存储”(Object Storage)、“镜像服务”(Image Service)是核心的三个子项目,还有一些辅助性质的子项目如提供身份认证的Identity、基于Web的管理控制台Dashboard等。目前有Nova、Swift、Glance、Keystone、Horizon 五个具体实现,Nova是云平台控制器,是Compute的具体实现,用来部署云服务,包括运行、管理虚拟服务器实例等;Swift提供了分布式云存储模块,是一个可扩展的对象存储系统,是Object Storage的具体实现;Glance提供了虚拟机镜像的发现、注册、获取服务,是Image Service的具体实现;Keystone提供了统一的身份认证服务,是Identity的具体实现;Horizon提供了通过Web用户界面管理云服务的方式,是Dashboard的具体实现。Nova、Glance、Keystone 的安装和使用都需要用到MySQL数据库。OpenStack安装配置过程如图3所示:
在OpenStack安装配置完成后,可以通过云控制器管理工具(包括Web界面和命令行方式等)使用云计算平台测试资源。OpenStack服务状态的Web监控如图4所示:
云测试平台PaaS构建主要包括设计和实现云测试项目管理工具,实现用户操作界面等。
云测试项目管理是传统软件工程管理技术和云计算技术的结合,介于测试用户和云计算平台之间,对用户能够提供云测试服务,对云计算平台能够动态调用其计算资源和存储资源,监控运行状态。本平台自行设计和实现了云测试项目管理工具,主要部分采用Java语言开发。由于OpenStack的各个组件开发时使用Python语言,考虑到性能需求和兼容性,系统对OpenStack二次开发的部分也使用Python语言。系统的开发语言与工具如表5所示:
云测试项目管理工具提供了管理云测试项目和云平台资源等功能,其主要模块设计如图5所示:
项目基础配置模块主要是创建测试项目、分配测试人员角色和权限、管理基础数据等;测试需求管理模块主要是定义和管理用户的云计算测试需求,跟踪用户的需求变更;测试用例管理模块主要管理被测试软件的测试用例;测试计划管理主要是对测试人员分配测试任务和制定测试时间;测试矩阵管理模块用来配置虚拟测试环境的测试矩阵,不同用户对虚拟测试服务器的配置要求各不相同,测试矩阵用来描述用户要求的配置参数,定义为一组配置变量,这些变量指定测试应用程序所需的正确设置,包括运行测试时使用的硬件、操作系统、软件和所有其他重要特征[ 12];测试过程管理模块主要是对测试人员的测试项目执行过程进行管理和跟踪;测试缺陷管理模块用于管理测试操作执行后得到的系统缺陷;项目文档管理主要管理该测试项目的相关文档;云平台资源管理模块能够根据用户需要动态分配云平台的计算和存储等测试资源,包括虚拟资源申请、OS镜像调度、日志和快照管理等。
云测试项目管理工具需要访问和使用OpenStack的IaaS平台资源,获得IaaS平台的消息和运行状态。在实现时主要是通过对OpenStack的API调用来完成相关操作,调用的API包括“身份识别”、“计算管理”、“扩展计算管理”、“镜像管理”、“卷管理”5大类型,其说明如表6所示:
通过对OpenStack的API调用,云测试项目管理工具能够和Nova等组件传递消息,根据测试用户需要分配云计算平台的测试资源,监控云测试平台的状态。云测试项目管理工具调用OpenStack的API既可以使用XML格式,也可以使用JSON格式。测试用户在选择不同的测试平台镜像,进行开启、关闭虚拟测试服务器等操作时均需要通过云测试项目管理工具调用OpenStack的API。用户能够根据需要选择不同的测试环境,并通过调用Nova等组件的功能实现测试环境的快速部署。
用户通过浏览器登录和使用云测试项目管理工具,完成申请与执行测试项目、配置测试矩阵、分配和使用虚拟测试服务器等操作。系统的业务流程如图6所示:
系统提供了基于角色的认证和权限分配功能,将系统用户分为“系统管理员”、“项目经理”、“测试员”等角色。不同的角色拥有不同的权限,能够运行不同的系统功能和使用不同的云测试资源。用户对云测试平台计算、存储和镜像等资源的调用使用Keystone组件的认证服务,需要长期保存和使用的测试数据使用Swift组件的云存储服务。
在本系统的测试矩阵管理中,测试矩阵被分为硬件资源矩阵和软件资源矩阵两部分,如表7所示:
如果测试矩阵变量的默认取值可以满足用户需要,用户配置完参数后就能够直接开启虚拟测试服务器。如果默认取值不符合用户要求,用户可以填写新建矩阵需求表,项目经理审批后,由系统管理员根据实际情况进行添加。
本文讨论了云计算软件测试平台的层次模型和系统结构,构建了基于开源系统的云计算测试平台实例,包括IaaS和PaaS两大部分。该系统的不足之处是缺乏TaaS中的用户服务中心、计费管理等功能,对OpenStack中Swift组件提供的云存储服务尚未进行深入应用。在今后的研究中,笔者将进一步完善该系统的功能。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|