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

  在這里我來談?wù)勎铱吹降囊恍┓矫。?yán)格來講,這個(gè)不能籠統(tǒng)的稱為云計(jì)算時(shí)代的測試挑戰(zhàn),因?yàn)榧词乖谶@個(gè)時(shí)代,也還是有很多傳統(tǒng)的產(chǎn)品,也有很多現(xiàn)在遇到的common的問題,我這里說的可能更多的是針對PaaS, IaaS之類的產(chǎn)品。

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

 。摂M化平臺,這個(gè)是很多基礎(chǔ)架構(gòu)的基石。除了兩大商業(yè)巨頭之外,Xen的發(fā)展和應(yīng)用也很迅速。

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

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

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

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

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

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

  關(guān)于功能測試方面

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

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

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

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

  1. 測試環(huán)境

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

  2. 測試的部署

  這個(gè)其實(shí)本質(zhì)上也是測試工具的問題,傳統(tǒng)用到的產(chǎn)生流量和壓力的工具很多都是單機(jī)的,或者controller + agents的架構(gòu),但是放到這樣的平臺下不一定適用。因?yàn)椋?/FONT>

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

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