對于云計算,可能不同的人有不同的看法,也有些人認為這只是一個廠商們弄出來的buzz word,是個噱頭而已。但是不管怎樣,如果你經(jīng)常關注業(yè)界動態(tài)的話,你會發(fā)現(xiàn)除了那幾個眾所周知的服務外,還有很多的組織真刀真槍的行動起來了,有很多發(fā)布了自己的戰(zhàn)略、計劃、平臺和產(chǎn)品。僅僅是在國內,近有很多這樣那樣的云計算平臺,想必大家也聽說了一些。近正好有機會了解了其中的一個,借著一起review test design的機會,了解了一下架構和他們現(xiàn)有的測試方法,同時大家也一起感受到了這種新的類型的產(chǎn)品給測試所帶來的挑戰(zhàn)。

  在這里我來談談我看到的一些方面。嚴格來講,這個不能籠統(tǒng)的稱為云計算時代的測試挑戰(zhàn),因為即使在這個時代,也還是有很多傳統(tǒng)的產(chǎn)品,也有很多現(xiàn)在遇到的common的問題,我這里說的可能更多的是針對PaaS, IaaS之類的產(chǎn)品。

  云計算的技術這兩年在經(jīng)歷飛速的發(fā)展,比如以下幾個方面:

  -虛擬化平臺,這個是很多基礎架構的基石。除了兩大商業(yè)巨頭之外,Xen的發(fā)展和應用也很迅速。

 。植际酱鎯,包括分布式文件系統(tǒng),F(xiàn)在open source的項目也有很多,大的概念還是很相近的,比如Hadoop中的HDFS和Ceph, 理解了一個再看另一個要容易很多。

  -任務的分發(fā)和控制系統(tǒng),比如map reduce之類的系統(tǒng),提供了應用級別的任務分發(fā)和控制。

  -虛擬機的部署和控制。對于任何基于虛擬化來提供云計算資源的系統(tǒng)而言,這一塊是少不了的。

 。O(jiān)控和分析。云計算的一個特點是機器(物理的和虛擬的)和服務很多,而且可能出錯的點也很多,同時性能也常常是一個問題,所以如果監(jiān)控資源的使用狀況和健康狀況,及時的發(fā)現(xiàn)問題也是十分的重要,F(xiàn)在業(yè)界用得比較多的是Nagios和Ganglia等免費的工具,當然也有對應的商業(yè)版本。

 。瑽OSS系統(tǒng)。如果你是一個云計算服務的提供商和運營商,那么這一塊也必不可少,包括基本的業(yè)務申請、狀態(tài)查詢和繳費管理的營業(yè)支撐系統(tǒng)。

  相對于上面提到的開發(fā)技術的快速發(fā)展而言,測試技術相對要滯后不少,目前的測試方法還無法滿足上面的要求,主要的難點體現(xiàn)在以下幾個方面。

  關于功能測試方面

  1. 對于功能測試而言,除了和傳統(tǒng)測試一樣的問題之外,這樣的被測系統(tǒng)更加的復雜,很多測試必須要理解整個系統(tǒng)的運作才能開展,對QA的要求提高了。測試環(huán)境的部署花的時間和代價更大,另一方面,很多的場景比較難以模擬,比如部分機器壞掉,存儲上的不同步問題。因為這本身是一個open question,什么叫部分壞掉,什么叫不同步,需要像做性能測試一樣先去定義。

  2. 對于自動化測試,傳統(tǒng)的測試工具和框架也不能滿足要求。細展開來有很多方面,這里列舉兩個。一是自動的部署的問題,因為虛擬機也是動態(tài)生成出來的,所以要有一個合適的機制把測試工具部署上去,并且有集中的控制。二是debug會變得比較的困難。

  其實更大的挑戰(zhàn)來源于系統(tǒng)級別的測試,比如性能測試和穩(wěn)定性測試。

  性能是這樣的系統(tǒng)的訴求之一,并且可能涉及到成本,所以是很核心的要求,但是有時候會發(fā)現(xiàn)大家對于穩(wěn)定性的要求會更高,因為穩(wěn)定性的問題會導致整個系統(tǒng)不可用,是災難性的,而性能這個時候變成了第二位的。當然,也很難說這樣的思路和做法是對的,但是很多時候不得不make it works, then make it better. 下面說說這方面的一些問題。

  1. 測試環(huán)境

  這樣的系統(tǒng)一套部署下來可能需要幾十臺機器,所以搭建和維護這樣的一套環(huán)境也是一個很大的開銷,也使得這種測試不像我們平時測試一個獨立的軟件產(chǎn)品那樣,很容易的獲取資源,搭建一個系統(tǒng),然后可以很快的不斷調整。我們可以重新搭一套模擬的系統(tǒng)用于測試嗎,還是必須直接在生產(chǎn)系統(tǒng)上測試?這也是一個要結合實際情況來考慮的問題。

  2. 測試的部署

  這個其實本質上也是測試工具的問題,傳統(tǒng)用到的產(chǎn)生流量和壓力的工具很多都是單機的,或者controller + agents的架構,但是放到這樣的平臺下不一定適用。因為:

  a. 能否產(chǎn)生足夠的流量?

  b. 能否比較容易的部署,包括動態(tài)生成的虛擬機?