云计算软件测试平台的构建*
曹丽1, 姜毅2,3, 甘春梅2, 张一弛2, 陈桂强2
1浙江理工大学信息学院 杭州 310018
2华中师范大学信息管理学院 武汉 430079
3浙江理工大学经济管理学院 杭州 310018
摘要

主要研究基于云计算技术的软件测试平台构建的相关问题,说明云计算软件测试平台的层次模型和系统结构,讨论采用开源软件构建云测试平台IaaS和PaaS的方法。IaaS构建包括软硬件环境说明、OpenStack安装与配置、虚拟测试服务器配置;PaaS构建包括云计算软件测试项目管理工具设计和实现、对IaaS资源的调用方法说明。最后给出系统运行实例。

关键词: 云测试; 测试平台; 虚拟化; 项目管理
中图分类号:TP393
Construction of Software Testing Platform on Cloud Computing
Cao Li1, Jiang Yi2,3, Gan Chunmei2, Zhang Yichi2, Chen Guiqiang2
1School of Information, Zhejiang Sci-Tech University, Hangzhou 310018, China
2School of Information Management, Central China Normal University, Wuhan 430079, China
3School of Economics & Management, Zhejiang Sci-Tech University, Hangzhou 310018, China
Abstract

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.

Keyword: Cloud testing; Testing platform; Virtualization; Project management
1 引言

云计算软件测试能够有效地利用云平台动态可扩展的海量资源,节省测试时间和降低测试成本,是一种较好的测试解决方案。在现有的云计算软件测试平台中,已经有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)构建的方法,设计和实现了云计算软件测试项目管理工具,对云计算测试平台的建设进行了有益的探索。

2 云测试平台基础架构
2.1 测试平台层次模型

云计算软件测试平台是一个复杂的软件、硬件和服务的综合体,不同的云测试平台设计和实现的重点也不相同。例如,日本筑波大学D-Cloud平台主要研究虚拟故障插入和分布式系统测试[ 5, 6], 瑞士洛桑理工大学的Cloud9平台主要研究集成开发环境和云测试服务[ 7],英国约克大学YETI平台主要研究云计算平台的自动化测试工具[ 8]。笔者参与的研究项目主要研究云测试项目管理和TaaS,在参考上述平台的基础上,本文提出了一种新的测试平台层次模型,包括IaaS和PaaS两个主要组成部分。IaaS提供计算和存储资源,管理虚拟云测试服务器;PaaS面向云测试用户,构建于IaaS上,使用IaaS提供的基础资源。测试平台层次模型共分为5个层次,如图1所示:

图1 云计算软件测试平台层次模型

(1)最底层为物理设备层,通过服务器、网络设备、存储设备、安全设备提供实际的物理计算、存储和安全管理等功能;

(2)虚拟化层,通过VMWare、KVM等虚拟化软件构造虚拟测试服务器;

(3)云资源管理层,通过Amazon EC2、Eucalyptus、OpenStack等系统动态分配和管理公共云或私有云的各种虚拟资源;

(4)云测试项目管理层,通过云计算软件测试项目管理工具规划和管理云测试项目、定义测试需求和控制测试流程,同时管理测试源代码、测试用例、测试文档等测试数据;

(5)最高层为用户操作层,能够完成测试云环境配置、任务分配、测试执行、结果分析、任务记录等测试用户的基础测试操作。

2.2 测试平台系统结构

在云计算软件测试平台层次模型的基础上,结合现有的一些云计算项目如D-Cloud等[ 5, 6],本文设计了测试平台的系统架构,如图2所示:

图2 测试平台系统结构

虚拟机节点控制器用来管理和提供虚拟测试服务器实例;集群控制器用来管理集群中的虚拟机节点控制器,每一个集群需要一个集群控制器;云控制器用来管理所有的集群,执行云测试项目管理工具对云资源的规划和云用户的管理;云存储服务器对外界提供云存储服务,支持分布式存储技术;云控制器和云存储服务器可以使用多个集群的资源;云测试项目管理工具用来配置和管理测试项目,分配和动态调整各种测试资源,测试用户通过客户端访问各种虚拟测试服务资源,完成基础测试工作。

3 云测试平台IaaS构建

云测试平台IaaS构建主要包括配置软硬件设备和网络设备、安装云平台管理工具、配置虚拟测试服务器等。首先对软硬件环境进行总体说明,然后讨论利用OpenStack和KVM进行云测试平台IaaS构建的过程。

3.1 总体说明

(1)硬件环境

本文讨论的云测试平台实例主要应用在科研实验环境中,需要充分考虑用户的使用成本,保证平台的经济性。在选择服务器时,初始配置采用两台x86架构的PC Server,这样起步阶段硬件设备的投入成本较低。在计算资源或者存储资源不能满足需要的情况下,可以动态扩展各种资源,这样也能够满足未来业务发展的需要。云测试平台初始硬件环境如表1所示:

表1 云测试平台初始硬件环境

云测试平台初始配置时使用两台服务器,本文将其称为服务器I和服务器II。服务器I作为云平台的控制节点和存储节点;服务器II作为云平台的计算节点。每台服务器均配置两块千兆以太网卡,第一块网卡eth0设置为外部可访问的IP地址,第二块网卡eth1设置为云平台各节点内部通信的IP地址。服务器I和服务器II的设置说明如表2所示:

表2 服务器I和服务器II的设置说明

(2)软件环境

云测试平台IaaS的软件环境主要采用开源系统,配置时首先需要对云计算管理平台、虚拟机和基础操作系统进行技术选型[ 9]。目前主流的开源云计算管理平台是Eucalyptus和OpenStack,本项目选择OpenStack平台,主要原因是OpenStack已经获得多个商业公司和开源组织的支持,正在成为开源云计算平台最核心的技术。在虚拟化技术方面,Linux平台中主流的虚拟化软件是XEN和KVM,本项目选择KVM,主要原因是KVM采用基于硬件的完全虚拟化技术,核心代码简洁,管理较为方便。因为Ubuntu是对OpenStack平台支持最好的一个Linux发行版,所以选择Ubuntu作为基础操作系统。关系数据库采用MySQL。构造云测试平台IaaS使用的主要软件如表3所示:

表3 构造云测试平台IaaS的主要软件列表
3.2 OpenStack安装与配置

测试平台构建采用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所示:

图3 OpenStack安装配置过程

在OpenStack安装配置完成后,可以通过云控制器管理工具(包括Web界面和命令行方式等)使用云计算平台测试资源。OpenStack服务状态的Web监控如图4所示:

图4 OpenStack服务状态的Web监控

3.3 虚拟测试服务器配置

测试平台构建采用KVM虚拟化技术。云测试平台通过整合物理资源形成虚拟资源池,实现对资源池中虚拟资源的动态调度[ 10]。OpenStack中的Nova组件本身不提供虚拟化的能力,而是通过Libvirt API与虚拟机进行交互。在配置虚拟测试服务器时,首先需要安装KVM[ 11],然后制作操作系统镜像文件。在镜像制作完成后,通过Glance命令上传到云平台中。在镜像上传成功后,就可以创建虚拟机实例,主要步骤包括创建授权、加载镜像、连接和使用镜像等。本平台提供了Java、.Net和PHP三种开发技术的虚拟云测试环境,其说明如表4所示:

表4 三种云测试环境
4 云测试平台PaaS构建

云测试平台PaaS构建主要包括设计和实现云测试项目管理工具,实现用户操作界面等。

4.1 云计算软件测试项目管理工具设计

云测试项目管理是传统软件工程管理技术和云计算技术的结合,介于测试用户和云计算平台之间,对用户能够提供云测试服务,对云计算平台能够动态调用其计算资源和存储资源,监控运行状态。本平台自行设计和实现了云测试项目管理工具,主要部分采用Java语言开发。由于OpenStack的各个组件开发时使用Python语言,考虑到性能需求和兼容性,系统对OpenStack二次开发的部分也使用Python语言。系统的开发语言与工具如表5所示:

表5 云测试项目管理系统开发语言与工具

云测试项目管理工具提供了管理云测试项目和云平台资源等功能,其主要模块设计如图5所示:

图5 云测试项目管理工具功能

项目基础配置模块主要是创建测试项目、分配测试人员角色和权限、管理基础数据等;测试需求管理模块主要是定义和管理用户的云计算测试需求,跟踪用户的需求变更;测试用例管理模块主要管理被测试软件的测试用例;测试计划管理主要是对测试人员分配测试任务和制定测试时间;测试矩阵管理模块用来配置虚拟测试环境的测试矩阵,不同用户对虚拟测试服务器的配置要求各不相同,测试矩阵用来描述用户要求的配置参数,定义为一组配置变量,这些变量指定测试应用程序所需的正确设置,包括运行测试时使用的硬件、操作系统、软件和所有其他重要特征[ 12];测试过程管理模块主要是对测试人员的测试项目执行过程进行管理和跟踪;测试缺陷管理模块用于管理测试操作执行后得到的系统缺陷;项目文档管理主要管理该测试项目的相关文档;云平台资源管理模块能够根据用户需要动态分配云平台的计算和存储等测试资源,包括虚拟资源申请、OS镜像调度、日志和快照管理等。

4.2 对IaaS资源的调用方法

云测试项目管理工具需要访问和使用OpenStack的IaaS平台资源,获得IaaS平台的消息和运行状态。在实现时主要是通过对OpenStack的API调用来完成相关操作,调用的API包括“身份识别”、“计算管理”、“扩展计算管理”、“镜像管理”、“卷管理”5大类型,其说明如表6所示:

表6 调用的OpenStack 5种API类型

通过对OpenStack的API调用,云测试项目管理工具能够和Nova等组件传递消息,根据测试用户需要分配云计算平台的测试资源,监控云测试平台的状态。云测试项目管理工具调用OpenStack的API既可以使用XML格式,也可以使用JSON格式。测试用户在选择不同的测试平台镜像,进行开启、关闭虚拟测试服务器等操作时均需要通过云测试项目管理工具调用OpenStack的API。用户能够根据需要选择不同的测试环境,并通过调用Nova等组件的功能实现测试环境的快速部署。

4.3 系统业务流程

用户通过浏览器登录和使用云测试项目管理工具,完成申请与执行测试项目、配置测试矩阵、分配和使用虚拟测试服务器等操作。系统的业务流程如图6所示:

图6 云测试项目管理系统业务流程

系统提供了基于角色的认证和权限分配功能,将系统用户分为“系统管理员”、“项目经理”、“测试员”等角色。不同的角色拥有不同的权限,能够运行不同的系统功能和使用不同的云测试资源。用户对云测试平台计算、存储和镜像等资源的调用使用Keystone组件的认证服务,需要长期保存和使用的测试数据使用Swift组件的云存储服务。

在本系统的测试矩阵管理中,测试矩阵被分为硬件资源矩阵和软件资源矩阵两部分,如表7所示:

表7 测试矩阵说明

如果测试矩阵变量的默认取值可以满足用户需要,用户配置完参数后就能够直接开启虚拟测试服务器。如果默认取值不符合用户要求,用户可以填写新建矩阵需求表,项目经理审批后,由系统管理员根据实际情况进行添加。

4.4 系统运行实例

笔者使用该系统进行了某信息采集软件客户端的功能测试,典型的运行界面包括添加测试项目、分配测试人员、管理测试计划、管理测试需求、管理测试用例、管理测试矩阵、管理虚拟机、管理测试缺陷、统计报表等。其中,添加测试项目、管理测试计划和管理硬件矩阵界面如图7-图9所示:

图7 添加测试项目界面

图8 管理测试计划界面

图9 管理硬件矩阵界面

笔者使用了硬件矩阵1(1CPU、512MB内存和2GB硬盘空间)和Java的Web软件测试矩阵。在获得虚拟测试服务器的授权后,就可以使用该服务器实施测试操作。信息采集软件的添加采集卡功能测试如图10所示:

图10 信息采集软件的添加采集卡功能测试

5 结语

本文讨论了云计算软件测试平台的层次模型和系统结构,构建了基于开源系统的云计算测试平台实例,包括IaaS和PaaS两大部分。该系统的不足之处是缺乏TaaS中的用户服务中心、计费管理等功能,对OpenStack中Swift组件提供的云存储服务尚未进行深入应用。在今后的研究中,笔者将进一步完善该系统的功能。

参考文献
[1] IBM. Private Cloud Infrastructure Implementation Services[EB/OL]. [2011-10-20]. http://public.dhe.ibm.com/common/ssi/ecm/en/msd03020usen/MSD03020USEN.PDF. [本文引用:1]
[2] Wipro. Testing as a Service[EB/OL]. [2012-01-05]. http://taas.wipro.com/. [本文引用:1]
[3] UTest. Testing Types[EB/OL]. [2011-10-20]. http://www.utest.com/testing-types. [本文引用:1]
[4] SOASTA. The Cloud Test Platform[EB/OL]. [2011-10-22]. http://www.soasta.com/cloudtest/. [本文引用:1]
[5] Banzai T, Koizumi H, Kanbayashi R, et al. D-Cloud: Design of a Software Testing Environment for Reliable Distributed Systems Using Cloud Computing Technology[C]. In: Proceedings of the 10th IEEE/ACM International Conference on Cluster, Cloud and Grid Computing(CCGRID). Washington, DC: IEEE Computer Society, 2010: 631-636. [本文引用:2]
[6] Hanawa T, Banzai T, Koizumi H, et al. Large-Scale Software Testing Environment Using Cloud Computing Technology for Dependable Parallel and Distributed Systems [C]. In: Proceedings of the 3rd International Conference on Software Testing, Verification and Validation (ICSTW). 2010: 428-433. [本文引用:2]
[7] Ciortea L, Zamfir C, Bucur S, et al. Cloud9: A Software Testing Service[J]. ACM SIGOPS Operating Systems Review, 2009, 43(4): 5-10. [本文引用:1]
[8] Oriol M, Ullah F. YETI on the Cloud[C]. In: Proceedings of the 3rd International Conference on Software Testing, Verification, and Validation Workshops (ICSTW’10). Washington, DC: IEEE Computer Society, 2010: 434-437. [本文引用:1]
[9] 陈康, 郑纬民. 云计算: 系统实例与研究现状[J]. 软件学报, 2009, 20(5): 1337-1348.
(Chen Kang, Zheng Weimin. Cloud Computing: System Instances and Current Research[J]. Journal of Software, 2009, 20(5): 1337-1348. ) [本文引用:1] [CJCR: 2.181]
[10] 宋小宝, 刘川意, 吴旭. 模块化构建基础设施云的设计与实现[J]. 现代图书情报技术, 2012(1): 73-79.
(Song Xiaobao, Liu Chuanyi, Wu Xu. Technology and Implementation of Building Infrastructure as a Service as Modular[J]. New Technology of Library and Information Service, 2012(1): 73-79. ) [本文引用:1] [CJCR: 1.073]
[11] 秦学东. 开源虚拟化-KVM的构建[J]. 现代图书情报技术, 2011(11): 89-92.
(Qin Xuedong. The Building of Open Source Virtualization - KVM[J]. New Technology of Library and Information Service, 2011(11): 89-92. ) [本文引用:1] [CJCR: 1.073]
[12] TechNet Magazine. 使用测试配置定义测试矩阵[EB/OL]. [2012-07-09]. http: //technet. microsoft. com/zh-cn/magazine/dd286643. aspx. (TechNetMagazine. DefiningYourTestMatrixUsingTestConfigurations[EB/OL]. [2012-07-09]. http: //technet. microsoft. com/zh-cn/magazine/dd286643. aspx
(作者E-mail: jiang_yi_hb@163. com) [本文引用:1]