云計算平臺是最近各大公司都在火熱研究的產(chǎn)品,各大公司在二次開(kāi)發(fā)國外開(kāi)源云計算平臺,如:OpenNebula、Openstack、CloudStack、Eucalyptus等。同時(shí)在測試方向中,自動(dòng)化測試也是悄然的改變這測試的方式,那么問(wèn)題來(lái)了,自動(dòng)化測試+云計算平臺=?是否可做?可做多少?云計算中的虛擬機操作是否可做?記得剛接觸云計算平臺的時(shí)候,一個(gè)云計算平臺領(lǐng)導說(shuō)過(guò)結論性的話(huà):云計算做不了自動(dòng)化,心里一陣想法油然而生。
那么在云計算平臺中自動(dòng)化測試給很多人帶來(lái)了困擾,很多略懂一二自動(dòng)化知識的人會(huì )果斷認為云計算平臺中不能執行自動(dòng)化測試,否定云計算中自動(dòng)化測試的重要性!其實(shí)不然。
下面我就要提出一套云計算中的解決方案:
首先要面臨的一件令人頭疼的事就是如果使用現在版本穩定開(kāi)源且功能強大的selenium WebDriver來(lái)進(jìn)行PC機中的web功能測試以及兼容性測試,那么根據selenium原理,它是只識別GUI中的Web頁(yè)面對象,如果要操作windows對象,可以使用javascript中的DOM來(lái)實(shí)現對windows桌面的操作,然而云計算平臺中往往出現在了兩種混合方式:即嵌套在web頁(yè)面端的虛擬機,并且測試中需要很多驗證是需要操作嵌套在web頁(yè)面中的虛擬機,操作的對象即位Web頁(yè)面中的windows對象或者linux等等不同操作系統的對象,拿鏡像為windows的虛擬機頁(yè)面來(lái)說(shuō),首先分析定位對象的時(shí)候,虛擬機嵌套在網(wǎng)頁(yè)中,屬于web頁(yè)面對象,但是虛擬機是作為整體web對象來(lái)出現的,(如:OpenNebula中的虛擬機點(diǎn)開(kāi)之后是div下面的canvas對象,在canvas對象中,所有任何對象都是不能單獨識別和操作)但是selenium中無(wú)法識別嵌套在web頁(yè)面中的虛擬機,以及操作頁(yè)面中的虛擬機中的各種命令行或者是windows對象,那么此時(shí),很多人會(huì )否定自動(dòng)化對這塊的業(yè)務(wù)能力的處理操作。
下面就是解決方案的重點(diǎn):
針對云計算平臺,各種各樣的對象出現在測試產(chǎn)品中:
針對純傳統web頁(yè)面對象,selenium實(shí)現GUI定位和操作;對于頁(yè)面中嵌套的windows對象,使用sikuli這種圖形定位識別完成自動(dòng)化測試;對于純正的windows對象,使用sikuli圖形識別或者使用selenium中提供的執行javascript方式,通過(guò)javascript來(lái)完成。
這樣幾種方式同時(shí)出現在一套自動(dòng)化測試工具或者平臺中,各種優(yōu)勢互補,就可以順利的完成云計算平臺帶來(lái)的各種各樣的虛擬機下的各種操作系統中各種輸入或者點(diǎn)擊以及驗證事件!
以上的文章獻給正在云計算平臺中做自動(dòng)化測試框架或者做自動(dòng)化測試方案的人,僅以解決云計算平臺中類(lèi)似網(wǎng)頁(yè)中嵌套的虛擬機中各種操作以及類(lèi)似介于web GUI和windows之外的測試產(chǎn)品的問(wèn)題。
PS:有人會(huì )提出使用坐標點(diǎn)識別的自動(dòng)化測試框架完成對測試產(chǎn)品的自動(dòng)化測試就可以完成上述產(chǎn)品中提出的云計算中網(wǎng)頁(yè)中嵌套的虛擬機中的各種操作,但是坐標點(diǎn)解決方案在云測試中,各種尺寸的分辨率以及各種型號的電腦顯示器以及各種操作系統平臺,這種坐標點(diǎn)方式,就不能很好的完成跨操作系統、跨瀏覽器等測試了!只適合單機版的測試,和現在云測發(fā)展背道而馳!除非你愿意在每套腳本執行環(huán)境中重新定位驗證一下坐標點(diǎn),那么你的自動(dòng)化測試腳本可不是一處編寫(xiě),處處運行,而是處處編寫(xiě),處處運行!工作量可想而知。