使用Jenkins构建自己的云测试平台

发表于:2012-5-07 11:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:邵育亮    来源:51Testing软件测试网原创

分享:

  2012年对于整个IT行业来说意味着变革,也意味着机遇。最大的变化在于越来越多的企业开始拥抱云计算。3月8号Apple发布了最新版的Ipad,新版的Ipad深度整合了苹果的icloud平台。Vmware也在2012年初发布了全球首个开源Paas产品Cloudfoundry轰动了整个业界。国内的IT的巨头也纷纷推出了自己的云,例如盛大云,阿里云,SAE等等。2012年的主题将会是Cloud。对于身为测试人员的我们,云计算对于我们意味着什么呢?

  我们先来看看云计算的定义,百度百科上是这样说的,云计算(Cloud Computing)是网格计算(Grid Computing )、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。总结来看云计算产品具备以下的属性:

  √ 分布式的架构体系

  √ 高可用性

  √ 可扩展性

  √ 可监控性

  因此要构建一个优秀的云测试平台,就必须要能够使其拥有这些云计算产品的属性。但是我们为什么需要一个云测试的平台呢?如果越来越多的软件公司开始使用敏捷开发的开发模式。区别于传统的软件开发模式,敏捷开发对于客户需求的响应速度会越来越快。每次版本的发布间隔也会越来越短,同时团队的规模也相对于传统的软件公司而言,变得越来越小巧。如何在每次发布产品的时候,能够保证这个产品的质量呢?我们需要从代码在提交到代码库开始就对质量进行监控,从而保证每次的release是有保证的。同时我们也发现了另外一个问题,软件产品支持的平台越来越多。最初的时候,我们的系统的发布只要支持windows的测试环境就好了,但是现在越来越多的软件开始更多的支持跨平台的,例如linux,mac等等。在进入到了移动时代的今天,平台兼容性的问题更是凸显,单是一个Android的平台,就有多个版本,而厂商的OEM也使得跨平台的问题变得越来越严重。因此我们需要一个测试平台,他可以很自由的根据需要支持的平台进行扩展,同时也很好的支持持续构建和自动化测试的功能。要支持这个云测试平台的很好应用,整个团队需要包括以下的几个要素:

  √ 自动构建

  √ 统一的代码库

  √ 自动测试

  √ 每次代码递交后都会在持续集成服务器上触发一次构建

  √ 快速构建

  √ 每个人都清楚正在发生的状况

  √ 自动化的部署

  目前我们所了解到的持续集成的工具非常多,商业工具有Teamcity,开源的持续集成工具有CruiseControl,Jenkins等等。Jenkins的前身Hudson很久之前就是国内软件公司作为CI工具的首选。Jenkins支持分布式构建,同时400多个优秀的插件也让我们可以很好的和现有的测试工具进行集成,因此我们选择使用jenkins作为云测试平台的首选。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/56/n-811856.html

  从上面的架构图中我们可以清楚的看到Jenkins是如何使用Slave和Master机制来实现多平台支持的。对于Windows的客户端来说,是通过WMI+DCOM来和Master进行通信的,而Linux的客户端是通过SSH来进行通信的。当然我们也可以实现自己的脚本来实现Slave和Master的通信。我们可以在系统管理的节点管理中,看到我们部署的所有的Slave的情况,如下图

  Response的时间是Slave时间和Master时间的延迟。我们需要注意这个Response时间,要保证Master和Slave时间的同步。如果Slave的时间早于Master的时间,会导致一些Job构建的失败。例如Testng的插件会自动忽略TestNg_result.xml的生成时间早于Master的机器时间的情况。 一个好的云平台需要能够有一套很优秀的监控机制,可以实时的监控线上的服务运行情况,包括网络,存储等等。Jenkins本身就提供了一套很好的监控Slave的机制,同时我们可以使用类似DiskUsage等插件,更好的来监控在Slave机器上的系统运行情况。一个好的云测试平台也需要能够保证7×24小时的服务状态。因为我们的回归测试会时时刻刻的进行。通过有效的系统监控,我们可以做到动态迁移我们的Job到可用的Slave上面,也可以更具Slave上的负载情况来决定是否需要对Slave机器进行升级。

  从上面我们就可以很清楚的看出remote-slave-6这台机器在运行Job时候的系统的负载情况。目前看来,这台机器的压力还不是很大。

  Jenkins允许我们可以把Job分散在不同的Slave上面,这样可以做到一定意义的负载均衡,也可以支持跨平台兼容性的测试。我们可以通过点击Slave的链接可以查看分配到这个Slave机器上的所有Job。例如我们可以看到这台Slave机器上分配的job情况

  目前为止,Jenkins所支持的特性已经可以很好的支持我们构建云测试平台所需要的属性。我们之前所说的Master和Slave体系针对的是实体的服务器。在如今越来越多的企业开始使用虚拟化技术,例如Vmware,Xen的产品。这类优秀的虚拟化产品可以帮我们构建一个更加干净的测试环境。相对于过去单个服务器的测试环境,我们在每次build和构建测试的时候,都无法保证完完全全的干净的环境。但是整合了Vmware的虚拟化技术以后,我们可以通过checkou方法,在每次build测试和构建之前,生成一个在操作系统层面干干净净的环境。Jenkins如何能和vmware的虚拟机进行整合?好在我们已经有了很多支持vmware产品的Jenkins插件。在安装完vmware的插件后,我们可以在系统管理的页面中看到如下的按钮

  ……

  查看全文请点击下载:http://www.51testing.com/html/56/n-811856.html

  版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号