云计算时代的测试挑战

对于云计算,可能不同的人有不同的看法,也有些人认为这只是一个厂商们弄出来的buzz word,是个噱头而已。但是不管怎样,如果你经常关注业界动态的话,你会发现除了那几个众所周知的服务外,还有很多的组织真刀真枪的行动起来了,有很多 发布了自己的战略、计划、平台和产品。仅仅是在国内,最近就有很多这样那样的云计算平台,想必大家也听说了一些。最近正好有机会了解了其中的一个,借着一 起review test design的机会,了解了一下架构和他们现有的测试方法,同时大家也一起感受到了这种新的类型的产品给测试所带来的挑战。

在这里我就来谈谈我看到的一些方面。严格来讲,这个不能笼统的称为云计算时代的测试挑战,因为即使在这个时代,也还是有很多传统的产品,也有很多现在就遇到的common的问题,我这里说的可能更多的是针对PaaS, IaaS之类的产品。

云计算的技术这两年在经历飞速的发展,比如以下几个方面:
-虚拟化平台,这个是很多基础架构的基石。除了两大商业巨头之外,Xen的发展和应用也很迅速。
-分布式存储,包括分布式文件系统。现在open source的项目也有很多,大的概念还是很相近的,比如Hadoop中的HDFS和Ceph, 理解了一个再看另一个要容易很多。
-任务的分发和控制系统,比如map reduce之类的系统,提供了应用级别的任务分发和控制。
-虚拟机的部署和控制。对于任何基于虚拟化来提供云计算资源的系统而言,这一块是少不了的。
- 监控和分析。云计算的一个特点就是机器(物理的和虚拟的)和服务很多,而且可能出错的点也很多,同时性能也常常是一个问题,所以如果监控资源的使用状况和 健康状况,及时的发现问题也是十分的重要。现在业界用得比较多的是Nagios和Ganglia等免费的工具,当然也有对应的商业版本。
-BOSS系统。如果你是一个云计算服务的提供商和运营商,那么这一块也必不可少,包括基本的业务申请、状态查询和缴费管理的营业支撑系统。

相对于上面提到的开发技术的快速发展而言,测试技术相对要滞后不少,目前的测试方法还无法满足上面的要求,主要的难点体现在以下几个方面。

关于功能测试方面
1. 对于功能测试而言,除了和传统测试一样的问题之外,这样的被测系统更加的复杂,很多测试必须要理解整个系统的运作才能开展,对QA的要求提高了。测试环境 的部署花的时间和代价更大,另一方面,很多的场景比较难以模拟,比如部分机器坏掉,存储上的不同步问题。因为这本身就是一个open question,什么叫部分坏掉,什么叫不同步,需要像做性能测试一样先去定义。

2. 对于自动化测试,传统的测试工具和框架也不能满足要求。细展开来有很多方面,这里列举两个。一是自动的部署的问题,因为虚拟机也是动态生成出来的,所以要有一个合适的机制把测试工具部署上去,并且有集中的控制。二是debug会变得比较的困难。

其实更大的挑战来源于系统级别的测试,比如性能测试和稳定性测试。
性 能是这样的系统的诉求之一,并且可能涉及到成本,所以是很核心的要求,但是有时候会发现大家对于稳定性的要求会更高,因为稳定性的问题会导致整个系统不可 用,是灾难性的,而性能这个时候变成了第二位的。当然,也很难说这样的思路和做法就是对的,但是很多时候不得不make it works, then make it better. 下面说说这方面的一些问题。

1. 测试环境
这 样的系统一套部署下来可能需要几十台机器,所以搭建和维护这样的一套环境也是一个很大的开销,也使得这种测试不像我们平时测试一个独立的软件产品那样,很 容易的获取资源,搭建一个系统,然后可以很快的不断调整。我们可以重新搭一套模拟的系统用于测试吗,还是必须直接在生产系统上测试?这也是一个要结合实际 情况来考虑的问题。

2. 测试的部署
这个其实本质上也是测试工具的问题,传统用到的产生流量和压力的工具很多都是单机的,或者controller + agents的架构,但是放到这样的平台下不一定适用。因为:
a. 能否产生足够的流量?
b. 能否比较容易的部署,包括动态生成的虚拟机?

3. 数据和sample的产生
这个和工具有一定的关系,但是我还是想把它单独列出来,因为这是一个不一样的挑战,这个和系统的需求和应用有关。关于这一部分,做过性能测试的应该都比较清楚,问题和方法也比较类似,只是这里有个规模的问题。

4. 监控
前 面也提到这个问题,或者换个角度就是如何知道有没有出问题,哪里出了问题。前面提到的一个业界广为使用的监控平台也可以使用,但是可能还不够,因为那些默 认的都是从系统的层面来看有没有问题。而最后跑的都是应用,有意义的也是应用,所以也需要从应用的角度来看问题。比如系统的资源应用到一定的程度后,应用 (比如web service)看到的响应时间很长,或者有很多的time out error,甚至去不到正确的数据,这些如果只是监控机器有没有挂掉,资源使用率是不是正常是很难看出来的。
引申来看,这个和前面两点也有关系,如果我们从应用层面,而不是纯粹的跑CPU和IO stress tool,就能发现这方面的问题。


从上面个人的体会你会发现,其实这些也不是全新的东西,只是老问题在新的环境下的展现,因为某些方面被放大而使得问题凸显。

下面我想从另外两个角度来说说自己的一些看法,个人观点。

对测试工具厂商而言,也是一种挑战。
从 上面的分析和我的体会,我觉得对于这样的系统,哪怕只是稳定性测试,需要的不只是一套工具,而是一种咨询+实施的整套服务,而传统意义上,测试工具厂商们 提供的都是一个工具和简单的培训。比如提供Loadrunner,SilkPerformer等传统的应用层测试工具的厂商,还有 Spirent,IXIA,BreakingPoint等以硬件设备为主的厂商。他们的工具可以提供很多协议流量的模拟,但这只是一部分,如何部署,如何 扩展,如何监控,都不是单纯靠这些工具能完成的。

另 一方面,他们也会面临开源测试工具的挑战。在云计算系统快速发展的过程中,相应的测试工具也在跟着发展,就像JMeter和apache一起成长的故事一 样。这样的测试工具如果伴随着云计算的平台一起成长,那么在很多方面就会更加适合云计算的特性,不如分布式和可扩展,以及多个工具的松耦合。希望会有越来 越多的这样的工具出现。

对测试人员的挑战和机会
挑战是需要更深入的了解系统的运作,否则根本无法进行测试。而且要测得比较深入的话,需要对相关的技术有一定深度的了解。以前也需要了解,但是在了解不多的情况下也可以进行测试,拿出看起来还可以的测试结果,但是对于云计算的系统,如果不深入的了解根本没法进行测试。
因为很多时候需要的是一整套方案,一个project,包含资源的组织,测试项目的协调,而不是一个工具和一个设计文档。

如果说到机会的话简单来说那就是测试会变成一个更需要专业技能和更有value的工作。

最后我在想一个问题,在这样的需要一整套方案的情况下,会不会有专业的测试服务作为独立的business model产生?国外其实不少,很多测试大牛们同时也在开公司,提供咨询和测试服务。国内似乎目前还很少。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章