利用网格和 P2P 在云上实现自动化测试

云上的测试自动化从网格和对等概念获得了巨大发展动力

随着云计算发展为最新的趋势,即移动设备访问实例的大量激增,测试庞大的新应用程序可能成为迅速部署的一大阻碍。云上的自动化测试是这一路障的解决办法。在本文中,作者将探讨如何添加网格计算和 P2P 功能使云上的自动化测试更加高效,并且还提供了一个真实系统和场景作为示例。

Randy Hayes, 创始人兼 CTO, Grid Robotics

Randy 1979 年开始参与 Altair 8080 的诊断测试编写。它于 1983 年为 PC 创建了第一个自动化测试工具,名为 AutoTester for DOS,是 Worksoft 的一位共同创始人,Worksoft 是一家面向企业应用程序的应用程序生命周期管理解决方案供应商。Grid Robotics(以前称为 Capacity Calibration)创立于 2008 年 11 月,是一家面向公共和私有云的 PaaS(平台即服务)解决方案的著名提供商。



2011 年 11 月 17 日

测试基于云的应用程序是在部署之前保证应用程序的功能、安全、可伸缩性和可靠性的一项重要功能,这是一个众所周知的事实。随着需要部署的应用程序的数量的迅速增加,尤其是满足移动设备的所有类型的应用的趋势的出现,有效测试成为了一个瓶颈。这正是自动化云应用程序测试的用武之地。

本文将介绍向云中的自动化测试添加网格计算和 P2P 的意义,探讨与云计算相关的每种功能的一些重要概念,了解将每种功能集成到云中的自动化测试中的一些考虑因素,并提供一个真实场景和软件作为示例。

但是首先,需要介绍一些网格计算和对等功能的基本背景知识:

定义网格计算

每个人都还记得 “网格计算” 概念首次流行起来时的情景。在二十一世纪初,SETI@home 和 Human Genome Project 等项目利用了数千台计算机的计算能力来解决复杂的问题。网格计算指的是结合多个管理域提供的资源来实现一个共同目标,从而可以将网格视为一个具有涉及大量文件的非交互式工作负载的分布式系统。

网格可能比集群更加松散耦合、异构和在物理上分散。网格也可以在 LAN 上进行搭建,事实上,私有云其实就是一种虚拟私有网格。


定义协作式对等节点(P2P)

在网格计算诞生的同一时期,出现了另一个称为对等 (P2P) 的概念,它由存在时间不长的 Napster 项目创立,后来 Skype 凭借其协作式对等模型取得了轰动一时的成功。P2P 是一种分布式应用程序机构,它将任务或工作负载拆分到对等节点(拥有参与应用程序操作的相同特权的节点)上。

对等节点形成了一个对等节点网络。对等节点使其部分资源(比如处理能力、磁盘存储或网络带宽)可供其他网络参与者直接使用,无需服务器或稳定的主机进行中央协调。对等节点可以是资源的提供者和使用者(在客户端-服务器模型中,仅由服务器提供,由客户端使用)。

对等系统常常实现为一个抽象的覆盖网络,构建于原生或物理网络之上的应用程序层上。这些覆盖网络用于对等节点发现和索引,是使 P2P 系统独立于网络拓扑结构的重要特征。P2P 覆盖网络包含所有参与的节点(称为网络节点)。

因为节点与 P2P 网络中的整体系统共享它们的资源和需求,所以参与的节点越多,系统满足需求的总体能力就越大。另外,P2P 网络的分散特性使其变得更加强健,因为它不存在单个故障点。


将概念融入到云测试环境中

那么,如果将云计算和协作对等概念都融入到云测试环境中,会出现什么样的情况呢?

  • 添加网格功能使您能够在云上启动自动化测试执行网格,可在一小段时间内运行一个测试,或者在相同时间段内运行相同测试的许多实例。任何数据驱动的测试,无论使用何种功能测试,都可采用将 Human Genome Project 等大型问题拆分到许多计算机上的方式并行执行。
  • 添加 P2P 功能允许测试执行网格通过浏览器会话与想要的许多协作者共享,只需通过链接传递数据即可。它允许内置的聊天窗口详细列出所有在线参与者,具有适当访问权限的参与者可以运行它们自己的测试。(而且因为我们描述的是自动化测试执行系统,而不是手动系统,所以参与者仅需建立与正运行的实例的直接远程桌面协议 (RDP) 会话。)

让我们看看如何将这些功能添加到云环境中,并了解从这项集成工作中得出的真实软件之前您需要考虑的每项功能的一些细节。

集成网格功能

使网格计算如此独特的是将大型任务拆分为许多可并行执行的较小任务的能力。在经典的 SETI@home 项目中,要完成的任务是分析来自外太空的无线电信号,以识别可能表明存在外星人的模式。其他著名的网格计算示例包括对人类基因排序和计算 pi 的 100 万位。

除了网格本身,用于分配任务和收集结果的一个中央服务器或服务器集群也是网格计算架构的一个不可或缺的组件。从在节点计算机之间发送和接收数据,到执行复杂控制和/或同步活动,服务器组件的设计和架构可能不尽相同,主要取决于执行的任务。所以网格本身的大小和任务的复杂度在很大程度上取决于指挥和控制服务器。

在本世纪初,我开发了一个名为 Capacity Calibration 的网格计算项目。在该项目中,全球的人们都可以下载一个代理程序,该程序允许他们的计算机用于测试网站的容量和性能。这项任务的一个著名示例是测试 NASA 用于传输航天飞机发射视频的网站。全球超过 1,500 个代理模拟了每秒数千次点击,以便在 NASA 将网站上线之前验证服务水平。

Capacity Calibration(或简称为 CapCal)已迁移到云中,可在这里根据需要启动和关闭网格。因为需要大量的控制和同步操作,当然还要传输大量的数据,所以指挥和控制服务器具有非常重要的作用。具体来讲,不稳定的网络连接和网络上随机代理的可用性使得协调和控制大量负载测试极具挑战。使用 IBM® Smart Cloud Enterprise,可以利用精度指标、准确度指标以及 99.99% 的可用性,通过不同的数据中心完成相同的任务。

在我当前的项目 Cloud Lab Grid Automation(本文稍后将会探讨)中,挑战和方法是类似的,即都是关于如何驾驭大量虚拟机的能力并将它们应用于某个共同的任务(在本例中为功能测试自动化)。我希望 Cloud Lab 服务器能够迅速启动新实例,将它们添加到虚拟实验室中,并在不再需要时拆卸它们。

由于每个实例都是成熟的桌面 Windows® 环境,所以肯定会出现许多非常有趣的可能。我们以使用 Java™ Swing 或 .NET 编写的瘦客户端测试旧有客户端-服务器应用程序的性能的问题为例,这些性能很难进行测试,因为无法在单台机器上模拟多个客户端。使用 IBM SmartCloud Enterprise,答案非常简单,只需启动多台机器即可!

集成 P2P 功能

在本世纪初,网格计算和对等计算这两个词常常在相同的领域提及,导致人们产生了某些混淆。我们将 Napster 作为对等计算的第一个流行的示例,它们之间的关键区别在于:网格中的节点(用户)可以直接彼此交换数据(比如音乐)。由于所涉及盗版问题,这种模式没有持续太久,即使它曾经取得了巨大的成功。现在,Skype 是一个既合法又得到广泛应用的 P2P 应用程序的一个示例。

我需要 Cloud Lab Grid Automation 系统允许将网格中的每个虚拟机分配给具体的用户,或由一组用户共享。管理员需要能够以多种方式控制此功能,包括发送浏览器控制台本身的链接,或者通过 RDP 向各个机器发送链接。当今的测试和开发团队在地理位置上通常很分散,让无人值守的自动化测试和手动测试共享这样的计算资源具有无可估量的价值。

例如,管理员可以为一两个人分配测试销售线索的任务,因此向他们传递网格的浏览器控制台的链接。具有此访问水平的任何人都可看到所有这些机器,可在机器之间复制文件,或者启动和停止测试。就像物理测试实验室内普通的计算机,虚拟机可以供个人在工作时使用,并在下班时分配用于夜间的回归测试。

我的团队认为浏览器控制台应该包含一个内置的聊天窗口,该窗口支持在管理员和团队成员之间进行协作,每个人都可以控制各个机器或可以使用一组机器来完成下面这样的任务。然后用户可以添加语音会议或 Skype 聊天,将其拥有的所有内容放在测试实验室中,除了物理实验室本身!


一个典型的场景

测试自动化工具的特别有用的一个功能是填充数据库,无论是用于测试,还是用它将数据从一个系统转换到另一个系统。以这种方式代替编写查询并处理它的优势在于:业务规则通过 UI 得以应用,所以保证了数据完整性。在任何情况下,输入数百或数千条记录都需要一定的时间,而网格计算可在这方面显著提高处理速度。

在本文和后面用作示例的真实系统中,我使用了 .NET Pet Shop 应用程序(请参阅 参考资料)。我希望从一个 ASCII 逗号分隔的文本文件填充 10,000 个新用户。每行包含一个用户 ID、一个电子邮件地址、姓名、电话号码和邮寄地址。一个工作站填充整个列表需要花大约 3 小时 20 分钟。使用仅有 12 个云实例的网格,您可以将时间缩短到 15 分钟。


Cloud Lab Grid Automation 简介

Grid Robotics Cloud Lab Grid Automation

云计算创建了一个可根据需要汇集几乎无限的资源的环境,这对于测试自动化是一个关键概念。Cloud Lab Grid Automation 运用了云的所有功能来处理自动化测试。Cloud Lab Grid Automation 服务器可在任何地方运行,无论是在公共云还是私有云中,也可以只在实验室或数据中心内的服务器中运行。在这里,它可以管理任意数量的客户端或代理计算机,这些计算机可在 AWS、IBM 或 Rackspace 等公共云或者 VMware 和 Citrix 等私有云上自动启动。无论如何配置它,它充其量只是一种分布式计算。物理机器、虚拟机和云机器对于 Cloud Lab 服务器来说没什么区别。

本文中提供的真实的软件示例是 Grid Robotics 的 Cloud Lab Grid Automation 解决方案,在这个系统中,网格计算和协作式对等概念都应用到了云中。

关于 Cloud Lab

Cloud Lab 服务器在云上运行,可支持任意数量的 Cloud Lab 设备。Cloud Lab 设备是一种在公共云、私有云、虚拟机或物理机器上运行的 Windows 或 Linux® 虚拟机实例。Cloud Lab 设备可通过两种方式创建:在现有机器上安装 Cloud Lab 代理,或者在公共云上启动标准的 Cloud Lab 代理机器实例并配置它。

公共和私有云的出现创造了这样一种环境,可在其中根据需要汇集几乎无限的资源,与其他地方相比,这种环境在测试自动化中最能发挥其作用。具体来讲,回归测试起源于一系列支持的环境和配置,其中最常见的可能是浏览器及其不同版本。

标准 Cloud Lab 代理附带了一个 Selenium(请参阅 参考资料),即著名的开源 Web 测试解决方案,它已安装在 5 款著名浏览器上(Internet Explorer、Firefox、Chrome、Safari 和 Opera)。所以它是 “开箱即用的”,您可以在所有著名的浏览器上并行运行您的 Selenium 测试,为您平常的回归测试周期节省数小时(也许是数天)。但是如果您拥有另一个功能测试工具的许可证,您可以将该工具安装在 Cloud Lab 代理上(或者将 Cloud Lab 代理软件安装在您自己的机器上),并执行相同的任务。

无论您是在许多环境中运行相同的回归测试,还是在相同环境中使用不同的数据,Cloud Lab Grid Automation 都是 “掌控” 您的测试和结合使用网格计算和云计算来实现最高生产力的不二选择。Cloud Lab Grid Automation 可用于 IBM 和 Amazon 云上。

Cloud Lab Grid Automation 的基本详细介绍

Cloud Lab Grid Automation 使访问网格和协作式对等功能和特性变得非常轻松,促进了自动化测试在云中的运用。(有一个 此流程的视频演示。)

第一步:在云上启动网格

  1. 访问 Cloud Lab Setup 页面 www.cloudlabsetup.com。如果您是第一次访问此页面,则需要通过注册获得 14 天的试用期。
    图 1. 注册试用 Cloud Lab
    注册试用 Cloud Lab

    您将使用开源的 Selenium Web 测试解决方案来完成本演示,该解决方案已提前安装在默认的 Cloud Lab 代理上。(您也可以将所选的功能工具安装在默认代理上,为此用途生成一个自定义版本。)

  2. 让我们指定 12 个默认代理,等待一封电子邮件告诉我们网格何时开始正常运行。
    图 2. 等待网格启动
    等待 Grid Robotics 启动

    这可能需要几分钟,所以可以趁此机会喝杯咖啡。

  3. 收到电子邮件后,单击其中的链接,您将看到您的 Cloud Lab 测试执行网格已准备好接收您的命令:
    图 3. 测试执行网格已准备就绪
    测试执行网格已准备就绪
    图 4. 测试执行网格特写
    测试执行网格特写

因为需要协作,所以您可能希望提前计划并让一些同事参与进来。要共享环境,可以邀请其他人加入,然后实现 “协作式对等”。使用内置的聊天窗口或任何语音视频桥来允许团队中的每个人参与项目。

第二步:上传并运行测试

只需执行 3 步就可以启动测试。

  1. 使用 Upload Local File 命令将测试本身上传到所有实例。要上传多个文件和/或文件夹,则需要首先压缩它们。Cloud Lab 将自动完成剩余的工作。
  2. 使用 Dispense File 命令在实例之间均匀地分配测试数据文件。
  3. 使用 Execute OS 命令启动测试。

这就是所有 3 个步骤!

第三步:下载结果

大约 15 分钟后,所有 10,000 个新纪录都已添加到数据库中,现在是时候关闭网格了。但是如果任何实例记录了错误,在关闭网格之前下载它们非常重要,否则测试结果将丢失。

图 5. 下载结果
下载结果

使用 Download Agent Files 命令完成此用途。输入测试结果存储到的文件夹的名称,Cloud Lab 服务器将把它们合并到一个 ZIP 文件中,并在一封电子邮件中向您发送下载它的链接。


结束语

云计算通过多种方式为软件测试自动化带来了创新。启动任意数量激增的预配置测试计算机,并独立或并行地使用它们,这种能力会利用网格计算的所有功能来处理所有测试挑战。与团队任何成员(一些成员可能位于全球其他提防)协作的能力提供了传统测试实验室的优势,但没有了测试实验室环境中的物理机器的限制。

本文演示了如何集成网格计算和协作式对等功能,使基于云的自动化测试变得轻松简单。希望您会进一步研究自动化云测试。

参考资料

学习

获得产品和技术

  • 参阅可用于 IBM SmartCloud Enterprise 的 产品映像
  • PetShop .NET 示例应用程序 演示了一个构建 .NET Web 应用程序的企业架构,通过分析企业应用程序的架构、编程模型、生产力、性能、可伸缩性和可靠性,着重介绍了该应用程序的结构。
  • 参阅可用于 Amazon EC2 云的 IBM 产品映像

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing
ArticleID=775457
ArticleTitle=利用网格和 P2P 在云上实现自动化测试
publish-date=11172011